# 15-399 Constructive Logic Lecture 21: Binary Decision Diagrams

After the long discussion of various inductively defined types such as natural numbers and lists, we now discuss a simpler type: the Booleans. By a different form of isomorphism (which was in fact one of Boole's original motivations in 1854), Booleans correspond to propositional logic with the law of excluded middle, because under this interpretation every proposition is either true or false.

It is straightforward to give an implementation of Booleans, and Boolean operations such as and, or, exclusive or in constructive type theory. We can even introduce quantifiers exists and forall to obtain Quantified Boolean Formulas whose truth value can be computed directly in type theory.

The computation of truth values of quantified Boolean formulas, however, is very inefficient. It is exponential basically in every case, not only in the worst case. This can be significantly improved by developing methods to prove that a given Boolean formula is equal to true rather than computing its value. To this end we develop Binary Decision Diagrams (BDDs) to represent Boolean formulas with free variables. If we also order the variables, we obtain Ordered Binary Decision Diagrams (OBDDs), a compact representation of Boolean functions. For a given variable ordering, representations of Boolean functions are unique, which is important for such applications as checking satisfiability, validity, or equivalence between formulas.

The main reference for this section of the course is the textbook by Huth & Ryan. It is on reserve in the Engineering and Science Library.