types of logic