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.