Here is a summary of the contents of this directory, which contains books that exercise the BDD (ordered Binary Decision Diagram) capability of ACL2. Makefile Makefile for certifying books in this directory on systems (like Unix) supporting make. certify.lsp File for certifying books in this directory. See the comment on init.lsp at the end of this README file. bdd-primitives.lisp Definitions and simple theorems pertaining to some basic functions used for hardware specification. This file may well be useful for doing hardware verification in ACL2 using BDDs, and it also provides examples of the sorts of rules used in our approach. (See also the ACL2 documentation on "BDD".) alu.lisp Specifications of an ALU: a simple ripple-carry alu (v-alu) and a tree-structured propagate-generate alu (core-alu) alu-proofs.lisp Proofs of equivalence of ALUs defined in alu.lisp, employing BDDs bool-ops.lisp Definitions of Boolean AND, OR, and XOR functions, and theorems stating their commutativity cbf.lisp A file used to generate ACL2 theorems to prove from the IFIP benchmarks hamming.lisp A proof using BDDs of the equivalence of a Hamming circuit used in the CAP chip with its specification pg-theory.lisp Proofs using BDDs of equivalence of adder specifications; very similar in nature (but not actually connected with) alu.lisp and alu-proofs.lisp bit-vector-reader.lsp Raw Lisp file (NOT a book!) supporting #v syntax for bit vectors, as explained in a comment in that file. When you certify the books in this directory, the file cbf.lisp will automatically create the file benchmarks.lisp corresponding to the IFIP benchmarks in the subdirectories be/cath be/ex which will then be certified. ACL2 performs better on large BDD problems in GCL when large spaces are allocated for conses, fixnums and symbols. If you are running on a machine that has 128 MB of RAM then the following setting work well: #+gcl (si::allocate 'cons 20000 t) #+gcl (si::allocate 'fixnum 4000 t) #+gcl (si::allocate 'symbol 500 t) One convenient way to achieve these settings on such a machine is to write the six lines above into a file named init.lsp on this directory. That file is automatically loaded when GCL is fired up.