The ACL2 Books Directory
The word ``book'' has two senses to the ACL2 user. One is the normal one: a
sequence of printed paper pages bound together between covers. There are
such books about ACL2. Click here
for more information.
The other sense is a technical one: an ACL2 ``book'' is a file of
definitions, theorems and other commands used to extend ACL2's reasoning
abilities. Commands add ``rules'' to ACL2's data base. When a book is
``certified,'' ACL2 checks that all the commands in it can be successfully
processed. A book can be ``included'' into an ACL2 session to extend the
data base. This is the standard way users exchange useful sets of theorems.
See the online documentation topic BOOKS for details.
The standard distribution of ACL2 comes with many books. They are stored on
this directory. This is a guide to the available books. We include
instructions on how to certify the books in this directory at the end of this note.
Some of the links below are to files. Others are to directories. When
you visit a directory, look at its README
file. Most of
these books were written by ACL2 users other than the authors of ACL2.
Authorship is acknowledged in the individual files.
- Makefile: a Unix file for recertifying all the
books in this directory.
- Makefile-generic: a Unix file exploited by
Makefile
.
- Makefile-subdirs: a Unix file exploited by
Makefile
.
- Makefile-psubdirs: a Unix file exploited by
Makefile
.
- README: a text file directing you to this file.
- Readme.html: this file.
- add-ons: books which add system-level
functionality to ACL2; these should be considered experimental and
potentially unsound.
- arithmetic: books about arithmetic. The book
books/arithmetic/top-with-meta.lisp
may be the most commonly used
ACL2 arithmetic book. See the top of the README file
in this directory for a discussion of arithmetic libraries you may
want to use, in particular this one or arithmetic-5.
Arithmetic is an extraordinarily rich
topic and none of our books fully do it justice. If you develop an improved
arithmetic book, let us know!
- arithmetic-5: books about arithmetic contributed by Robert Krug.
The following older libraries are basically superseded by arithmetic-5
(see README files in each directory):
arithmetic-2,
arithmetic-3, and
arithmetic-5.
- bdd: books that exercise ACL2's BDD mechanism.
- centaur: books contributed by Centaur formal
verification folks;
see
centaur/README
- certify-numbers.lisp: used to
certify the
cowles
and arithmetic
books when
not using make, e.g., for example, when using a Macintosh.
- clause-processors: examples of the use of
clause processors (e.g., external tools)
- coi: The coi books comprise a "shelf" of ACL2
books related to the modeling of "computational objects" such as
processors, memories, kernels, microcode, and so on.
- concurrent-programs: contributions by
Sandip Ray (see Readme.lsp files in subdirectories)
- countereg-gen: support for counterexample generation
- cowles: support for arithmetic books
- cutil: Centaur Basic Utilities
- data-structures: books for common data
structures, with utilities; see also subdirectory memories
- deduction: deduction engine(s)
- defexec: fast execution with mbe and defexec
- defsort:
defsort
defines a stable sort when given a comparison function
- finite-set-theory: finite sets in ACL2
- fix-cert: update relocated .cert files
- hacking: a library for those who wish to use
trust tags to modify or extend core ACL2 behavior
- hints: tests of hints, especially
:or
and
:custom
hints
- hons-archive: Implements Hons Archives
(HARs), which are a way to write ACL2 objects to disk so they can be
loaded in other ACL2 sessions.
- ihs: ``integer hardware specification'', integer
arithmetic appropriate for hardware modeling
- interface: utilities providing Emacs support for
proof-trees and acl2-mode, as well as (obsolete?) infix printing.
- io: ``input/output'', utilities and proof support for reasoning about input and output in ACL2.
- leftist-trees: a heap-like data structure that can be used as a priority queue
- make-event: illustrations of
make-event
, which implements the idea of macros that can take state
- meta: metafunctions for arithmetic
- misc: a grab-bag of useful books and
utilities
- models: models, especially of digital systems, with associated proofs
- nonstd: books in support of reasoning about the real
numbers in ACL2 using non-standard analysis. If you want this directory, you will need to
download
the gzipped tar file to your
acl2-sources/books/
directory,
and then gunzip and extract it there.
- ordinals: books about ordinals
- paco: Paco, a cut-down, simplified ACL2-like theorem prover for
pedagogical use.
- parallel: example use of primitives for
parallelism (with speed-up only in experimental extension that supports parallel evaluation)
- powerlists: a data-structure suited to the analysis of recursive,
data-parallel algorithms.
- proofstyles: Soundness and completeness of
different proof strategies used in sequential program verification, along
with (in subdirectory
invclock
logical equivalence of two proof styles for
verifying programs using operational semantics, namely inductive invariants and
clock functions.
- quadratic-reciprocity: Gauss's Law of Quadratic Reciprocity
- regex: a regular expression scanner implementation designed to
be similar to GNU Grep
- rtl: floating-point arithmetic support, used for example
in proofs about AMD rtl
- security: books supporting reasoning about
security protocols
- serialize: routines for serializing ACL2 objects to disk
- sorting: correctness and equivalence of several sort algorithms
- std: "standard" libraries being developed for ACL2
- str: a rudimentary string library for ACL2
- symbolic: generic proofs of partial and total
correctness of sequential programs based on assertional reasoning
- system: checks of invariants on the ACL2
logical world, and verification of termination and guards of some
system functions.
- taspi: code relating to TASPI (Tree Analysis System for
Phylogenetic Inference)
- tau: support for
the tau system
- textbook: solutions to the exercises
in Computer-Aided
Reasoning: An Approach
- tools: macros and tools designed to make common constructs easier and less verbose to write
- tutorial-problems: solutions to
exercises of a tutorial nature
- unicode: help for reading input from files
- wp-gen: Weakest precondition generation and examples
- xdoc and xdoc-impl: prototype XML documentation system
- workshops: Books in support of ACL2 workshops, as
listed just below. If you want this directory, you will need to
download
the gzipped tar file to your
acl2-sources/books/
directory,
and then gunzip and extract it there.
If you seek a book you suspect someone might have created but which is not
here, join the ACL2 mailing list and ask the community.
If you develop a book you think will be useful to the community, please submit
it following the instructions
for contributing books to ACL2.
Many of these books are easily imagined to be of general value to ACL2 users,
while others are more specialized. Although this subdivision is a bit
arbitrary, we refer to books in the former category as "basic" books. By
default, the make
process certifies only the basic books. It may
take several hours to certify all the books, but only a couple of hours to
certify only the "basic" books.
All of the instructions below assume that you are standing in subdirectory
books
of the ACL2 distribution.
EXAMPLES:
To certify the basic books, assuming that `acl2
' invokes
ACL2, execute:
make
To certify all books, assuming that `acl2
' invokes
ACL2, execute the following after
you download
workshops.tar.gz to your acl2-sources/books/ directory, and
then gunzip and extract it there.
make all-plus
To certify the basic books, assuming that `my_acl2
' invokes
ACL2, execute:
make ACL2=my_acl2
To certify all books using an image with absolute pathname
/u/bin/allegro_acl2
on a Sparc, execute the following. Note that
pathnames of images must be absolute pathnames (except that commands observable
via the Unix path are OK).
make all-plus ACL2=/u/bin/allegro_acl2