Instructions for certifying the ACL2 community-books.
The
Below are instructions for certifying various sets of books. They all have
the following form in common. Note: If there is a suitable
cd /path/to/acl2-sources/books make ACL2=/path/to/acl2-sources/saved_acl2 ...
For example, the section ``A Full Build'', below, says to do the following
if you would like to make a change to the community-books (where the
$ cd /path/to/acl2-sources/books $ make ACL2=/path/to/acl2-sources/saved_acl2 -j 2 all
Success is indicated by a Linux exit status of 0. Equivalently, there
should be no failures in the log. Failures may be found by searching for
fgrep -a '**' make-regression.log
Unusual books that create output in the log file should not produce the
string
By default,
We assume that you have already downloaded and installed ACL2 as per the ACL2 installation instructions on the ACL2 home page.
We assume you know the path to your ACL2 executable. Typically this is a
script named
We assume the ACL2 community-books are installed in the
The instructions below are suitable for ACL2 and all of its experimental extensions, e.g., ACL2(p) and ACL2(r).
It may be preferable to avoid being logged in as root, since developers do
not test as root and at least one community book
(
Before ACL2 Version 6.4, building the Community Books could take several
hours. Now, the default
To certify these books, you should be able to run
$ cd /path/to/acl2-sources/books $ make ACL2=/path/to/acl2-sources/saved_acl2 -j 2 basic
If you configure your
We expect that most ACL2 users will want to certify at least the
There are
$ cd /path/to/acl2-sources/books $ make ACL2=/path/to/acl2-sources/saved_acl2 coi rtl cgen -j 2
For finer grained control, you can name individual books. This works
particularly well for libraries that have
$ cd /path/to/acl2-sources/books $ make ACL2=/path/to/acl2-sources/saved_acl2 rtl/rel9/lib/top.cert -j 2
Some books require experimental extensions to ACL2, such as ACL2(p) (see parallelism) or ACL2(r) (see real). Other books require certain additional software.
The build system will automatically determine which kind of ACL2 you are
running (ACL2, ACL2(p), or ACL2(r)) and, based on this, may prevent
incompatible books from being certified. The output of
These kinds of book requirements are controlled by special build::cert_param comments.
Some books, especially interfacing-tools like oslib and the ACL2 bridge, require certain Common Lisp libraries.
These libraries are now bundled with ACL2 via quicklisp, so you
should not need to download anything extra to use them. They are enabled by
default for all host Lisps except GCL, but you can avoid books that depend on
Quicklisp libraries by setting
Using Quicklisp should definitely work if the host Lisp is CCL or SBCL.
(Note however that certification of books that use
Quicklisp may require
Some other books based on satlink and gl require a SAT solver, typically Glucose, to be installed; see satlink::sat-solver-options for installation options. The build system should automatically determine if Glucose is installed on your system, and will avoid trying to certify these books unless Glucose is present.
If you just want to get a copy of the ACL2+Books manual for local viewing, you probably don't need to build it yourself because you can just download a copy. If for some reason you do want to build the manual yourself, you should be able to do so as follows, provided you have installed glucose. (That requirement might be eliminated in the future.)
$ cd /path/to/acl2-sources/books $ make manual -j 4
Building the manual should work on at least CCL and SBCL on Linux and Mac OS X. It may not work for some other OS/Lisp combinations. In particular, building the manual requires some features from oslib and quicklisp that may not be available on some other Lisps.
The resulting web-based manual may be found in:
acl2-sources/books/doc/manual/index.html
See also ACL2-doc for details about how to build your own Emacs-based manual, and xdoc::save for general information about how to build and distribute custom XDOC manuals, e.g., manuals that additionally include your own unreleased books.
Building all of the books can take hours and is usually unnecessary.
That said, it is easy to do: just run
$ cd /path/to/acl2-sources/books $ make ACL2=/path/to/acl2-sources/saved_acl2 -j 2 all
This includes a few books that are quite slow to certify. You can
exclude those by replacing ``
If you want to delete generated files, you can run
If you just want to remove the files in a particular subdirectory (and its
subdirectories), you can go into that directory and then run the
Note that
If a book fails to certify, you may want to try certifying it in an
interactive session. The most reliable way to do this is to replicate the
environment and commands that the build system used. This information can be
found at the top of the
;; foo.cert.out -*- Mode: auto-revert -*- ... Environment variables: ACL2_CUSTOMIZATION=NONE ;; <-- first configure your ACL2_SYSTEM_BOOKS=/path/to/acl2/books ;; environment to match ACL2=/path/to/saved_acl2 ;; these settings ... Temp lisp file: (acl2::value :q) ;; <--- then submit these commands to (acl2::in-package "ACL2") ;; $ACL2 to debug the failure ... ;; interactively --- End temp lisp file ---
Some other notes/tips:
The build system is largely based on build::cert.pl. There is
considerable documentation about
The main build script is
Please feel absolutely free to contact the ACL2-help mailing list with any questions about building the community books.