ACL2 works on the Unix (and some variants, including Linux), Macintosh, and some Windows operating systems (at the least, Windows 98 and Windows 2000). It is built on top of any of the following Common Lisps: Allegro, GCL (Gnu Common Lisp) [or, AKCL], CLISP, CMU Lisp, and MCL (Macintosh Common Lisp), and has also been built in the past on Lispworks and Lucid.
(Old remark, potentially obsolete for most users:) We have successfully run a
small but nontrivial test suite on a Sparc 2 with 16 megabytes of main memory,
but performance appears better with more memory. For more on this, see Problems.
/home/jones/acl2/v2-6
.
Begin by clicking on one of the following links.
The sources come with books that you may find helpful in your proof development and programming with ACL2. Two collections of books are not included with the sources:
cd dir
gunzip acl2.tar.gz
tar xpvf acl2.tar
rm acl2.tar
acl2.tar.gz
contains files in Unix format, hence if you encounter problems, fetch the files
individually.
Create a subdirectory of dir named acl2-sources
.
Open an ftp connection to ftp.cs.utexas.edu
by anonymous login and ftp
to the local acl2-sources
subdirectory all of the files
and directories in and below the ftp directory
pub/moore/acl2/v2-6/acl2-sources
. You may link to our
ftp sources directory by clicking
here.
You will find that pub/moore/acl2/v2-6/acl2-sources
contains many files, subdirectories, sub-subdirectories, etc. We mean
for you to copy over to your local connected directory the entire
structure of files and subdirectories. Thus, when this ftp operation
is done, your local connected directory should have a subdirectory
named acl2-sources
and it should contain (at some level)
everything obtained by the ftp. Your local acl2-sources
subdirectory will now look exactly as though you had obtained our
acl2.tar.gz
and done the gunzip
,
tar
and rm
steps of the Unix instructions.
Now proceed to Creating An Executable Image.
mcl-acl2-startup.lisp
to complete the
installation, and then proceed to Using ACL2.
gunzip solaris-7-sparc-gcl-saved_acl2.tar.gz tar xpvf solaris-7-sparc-gcl-saved_acl2.tar rm solaris-7-sparc-gcl-saved_acl2.tar mv solaris-7-sparc-gcl-saved_acl2 acl2-sources/saved_acl2 chmod a+x acl2-sources/saved_acl2
We assume you have obtained ACL2 and placed it in directory dir, as described above.
gunzip debian-gnu-linux-gcl-saved_acl2.tar.gz tar xpvf debian-gnu-linux-gcl-saved_acl2.tar rm debian-gnu-linux-gcl-saved_acl2.tar mv debian-gnu-linux-gcl-saved_acl2 acl2-sources/saved_acl2 chmod a+x acl2-sources/saved_acl2
We assume you have obtained ACL2 and placed it in directory dir, as described above.
gunzip solaris-7-sparc-clisp-saved_acl2.tar.gz tar xpvf solaris-7-sparc-clisp-saved_acl2.tar rm solaris-7-sparc-clisp-saved_acl2.tar mv solaris-7-sparc-clisp-saved_acl2 acl2-sources/saved_acl2 mv solaris-7-sparc-clisp-saved_acl2.mem acl2-sources/saved_acl2.mem chmod a+x acl2-sources/saved_acl2Finally, edit saved_acl2 (which is a small text file) according to the instructions in that file.
We assume you have obtained ACL2 and placed it in directory dir, as described above.
gunzip debian-gnu-linux-clisp-saved_acl2.tar.gz tar xpvf debian-gnu-linux-clisp-saved_acl2.tar rm debian-gnu-linux-clisp-saved_acl2.tar mv debian-gnu-linux-clisp-saved_acl2 acl2-sources/saved_acl2 mv debian-gnu-linux-clisp-saved_acl2.mem acl2-sources/saved_acl2.mem chmod a+x acl2-sources/saved_acl2Finally, edit saved_acl2 (which is a small text file) according to the instructions in that file.
We assume you have obtained ACL2 and placed it in directory dir, as described above.
gunzip solaris-7-sparc-cmucl-saved_acl2.tar.gz tar xpvf solaris-7-sparc-cmucl-saved_acl2.tar rm solaris-7-sparc-cmucl-saved_acl2.tar mv solaris-7-sparc-cmucl-saved_acl2 acl2-sources/saved_acl2 mv solaris-7-sparc-cmucl-saved_acl2.core acl2-sources/saved_acl2.core chmod a+x acl2-sources/saved_acl2Finally, edit saved_acl2 (which is a small text file) according to the instructions in that file.
We assume you have obtained ACL2 and placed it in directory dir, as described above.
gunzip redhat-linux-cmucl-saved_acl2.tar.gz tar xpvf redhat-linux-cmucl-saved_acl2.tar rm redhat-linux-cmucl-saved_acl2.tar mv redhat-linux-cmucl-saved_acl2 acl2-sources/saved_acl2 mv redhat-linux-cmucl-saved_acl2.core acl2-sources/saved_acl2.core chmod a+x acl2-sources/saved_acl2Finally, edit saved_acl2 (which is a small text file) according to the instructions in that file.
cd acl2-sources
make LISP=
xxx
By default, if no LISP=
xxx is specified,
LISP=gcl
is used. On our hosts, gcl
is the name of
GNU Common Lisp. You can fetch GCL without fee from
ftp://ftp.ma.utexas.edu/pub/gcl/
(which has the latest
GCL version as of 12/01 that we know of, GCL 2.4.0, which we have built on
Debian Gnu Linux),
ftp://prep.ai.mit.edu/pub/gnu/gcl/
,
or from mirror sites listed at http://www.gnu.org/order/ftp.html
.
Linux notes. We have successfully built ACL2 under Debian Gnu
Linux with GCL 2.3 and 2.4.0, and have been told by GCL author Bill Schelter that GCL
2.3.6 works with Redhat 6.1 and 6.2. One user has found GCL 2.3 (as opposed to
2.3.6) satisfactory with Redhat 6.1, while another experienced rare problems
with Redhat 6.2 using GCL 2.3 that went away with GCL 2.3.6.
The time taken to carry out this process depends on the host processor but may be only several minutes for a fast processor (by June 2000 standards). The size of the resulting binary image is dependent on which Lisp was used, but it may be in the vicinity of 17 megabytes.
This make
works for the Common Lisps listed in Requirements above. It may only work on Sun
Sparcs and 486/66 PCs, for all we know about the portability of Unix
Makefile
code. See the file
acl2-sources/Makefile
for further details. If this
make
command does not work for you, please see the
instructions for non-Unix systems below.
You can now skip to Using ACL2.
mcl-acl2-startup.lisp
and then skip to Using
ACL2. If you are using a trial version of Allegro Common Lisp, then
you may not be able to save an image. In that case, skip to Running Without Building an Executable Image.
If you are building under Windows using GCL, you may want to proceed directly to instructions for building on Windows using GCL.
Otherwise, proceed as follows.
Your Common Lisp should be one of those listed in
Requirements above. Filenames
below should default to the dir/acl2-sources
directory, e.g., for GCL, connect to
dir/acl2-sources
before invoking GCL or, after
entering GCL, do (si::chdir
"
dir/acl2-sources/")
.
nsaved_acl2
if it exists.
acl2-sources
directory
and submit the following sequence of commands.
(load "init.lsp") (in-package "ACL2") (compile-acl2)The commands above will compile the ACL2 sources and create compiled object files on your
acl2-sources
subdirectory.
acl2-sources
subdirectory. In the
fresh Lisp type:
(load "init.lsp") (in-package "ACL2") (load-acl2) (initialize-acl2 (quote include-book) *acl2-pass-2-files* t t)This will load the new object files in the Lisp image and bootstrap ACL2 by reading and processing the source files. But the attempt at initialization will end in an error! The message will say that it is impossible to finish because a certain file was compiled during the processing, thus dirtying the image yet again.
acl2-sources
subdirectory). Then, in the
fresh Lisp type:
(load "init.lsp") (in-package "ACL2") (save-acl2 (quote (initialize-acl2 (quote include-book) *acl2-pass-2-files* t)) "saved_acl2")You have now saved an image. Exit Lisp now. Subsequent steps will put the image in the right place.
osaved_acl2
if it exists.
saved_acl2
and saved_acl2.dxl
both exist THEN:
saved_acl2.dxl
to osaved_acl2.dxl
saved_acl2
to osaved_acl2
and edit osaved_acl2
, changing saved_acl2.dxl
(at end of line) to osaved_acl2.dxl
saved_acl2
exists THEN:
saved_acl2
to osaved_acl2
nsaved_acl2
to saved_acl2
.
nsaved_acl2.dxl
should exist;
move it to saved_acl2.dxl
saved_acl2
is executable.
1. Download maxima from http://www.ma.utexas.edu/users/wfs/maxima-download/maxima55l-setup.exe. This is an executable file that installs maxima. Run the executable which will result in maxima being installed in the directory of your choosing, say maxima-dir.
2. In the control panel, under system, under advanced, under environment variables:
3. Now follow the ACL2 instructions for building an executable image on a non-unix system until you get to step 2. Copy maxima-dir\src\saved_maxima to the acl2-sources directory and move "init.lsp" to "initialize.lisp". Start maxima-dir\src\saved_maxima. The prompt should be "MAXIMA>>". Do the following:
:q ; To get the prompt "MAXIMA>" (in-package "lisp") (load "acl2.lisp") (in-package "ACL2") (compile-acl2)The commands above will compile the ACL2 sources and create compiled object files on your acl2-sources subdirectory.
4. Now exit gcl (i.e., saved_maxima) and invoke a fresh copy of it (mainly to avoid saving an image with the garbage created by the compilation process). In the fresh Lisp type:
:q (in-package "lisp") (load "initialize.lisp") (in-package "ACL2") (load-acl2) (initialize-acl2 (quote include-book) *acl2-pass-2-files* t t)This will load the new object files in the Lisp image and bootstrap ACL2 by reading and processing the source files. But the attempt at initialization will end in an error! The message will say that it is impossible to finish because a certain file was compiled during the processing, thus dirtying the image yet again.
5. So now exit gcl, invoke a fresh copy, and type:
:q (in-package "lisp") (load "initialize.lisp") (in-package "ACL2") (save-acl2 (quote (initialize-acl2 (quote include-book) *acl2-pass-2-files* t)) "saved_acl2")You have now saved an image. Exit Lisp now. Subsequent steps will put the image in the right place.
6. Move nsaved_acl2 to saved_acl2, move initialize.lsp to init.lsp. Remove saved_maxima from the acl2-sources directory and add ";acl2-sources" to the PATH variable.
[End of Pete's instructions.]
Bill Schelter has added the following information.
The maxima which one can download actually contains src/saved_maxima.exe which is a maxima executable but that contains GCL.
One way of getting it to start as plain GCL is to add to a file init.lsp in the directory where you start maxima
(setq SYSTEM::*TOP-LEVEL-HOOK* nil)then it will start with the usual lisp prompt. The init.lsp delivered with maxima also has the path set to add the path for "gcc" so that the compiler works.
You can build gcl from scratch using the mingw tools, and the cygnus
bash shell. That is how that one was built.
We assume you have obtained ACL2 and placed it in directory dir, as
described above for Unix/Linux or other platforms. If you downloaded an image (see
instructions above), then you have an image
and hence you may skip this section. Otherwise, connect to subdirectory
acl2-sources
of dir, start up your Common Lisp, and
compile by executing the following forms. This sequence of steps need only
be performed once.
(load "init.lsp") (in-package "ACL2") (compile-acl2 nil)Now each time you want to use ACL2, you need only execute the following forms after starting up Common Lisp in subdirectory
acl2-sources
of
dir.
(load "init.lsp") (in-package "ACL2") (load-acl2 nil) (initialize-acl2 (quote include-book) *acl2-pass-2-files* nil)Note. The resulting process includes the ACL2 documentation, and hence will probably be considerably larger (perhaps twice the size) than the result of running an executable image created as described above.
Now proceed to read more about Using ACL2.
acl2-sources
may be found in the file all-files.txt
in that directory.
README.html; This file acl2-sources/ LICENSE ; GNU General Public License Makefile ; For Unix make. See README. TAGS ; Handy for looking at source files with emacs *.lisp ; ACL2 source files all-files.txt ; List of all files in this directory and subdirectories books/ ; Examples, potentially useful in others' proofs. See books/README.html. doc/ ; ACL2 documentation in various formats emacs/ ; Miscellaneous emacs and file utilities, especially emacs-acl2.el init.lsp ; Useful for building the system interface/ emacs/ ; Support for ACL2 "proof trees". See interface/emacs/README.doc. infix/ ; ACL2 infix printer by Mike Smith. See interface/infix/README. saved/ ; Empty directory for backing up copies during make; not important acl2.tar.gz; gzip'd tar file containing all of acl2-sources/ (see below) acl2.tar.gz.SUM ; result of our running sum acl2.tar.gz images/ ; Some gzip'd tar'd executables split/ ; The result of splitting up acl2.tar.gz
The entire acl2.tar.gz is roughly 4.6 megabytes, which expands out to roughly
19 megabytes. Additional space is required to build an image, perhaps 17
megabytes (though this depends on the Lisp), and to certify books.
acl2.tar.gz
file in order to build
acl2. That file includes more than just the ACL2 sources proper. It
suffices, for building ACL2, via the instructions above, to fetch only
the acl2-sources/*.lisp
files, which take up `only' about
5 megabytes, together with the files
acl2-sources/Makefile
and
acl2-sources/init.lsp
.
acl2-sources
.
The sources and perhaps an executable image are located on that subdirectory.
However, if you have not saved an image but instead use the directions above
for Running Without Building an Executable Image, skip
to When ACL2 Starts Up below.
The executable image is called acl2-sources/saved_acl2
. You can
invoke ACL2 by running that image, e.g.,
mycomputer%
dir/acl2-sources/saved_acl2
If on a Unix/Linux system, then to make it easy to invoke ACL2 by typing a
short command, e.g.,
mycomputer% acl2
you may want to install an executable file on your path, e.g.,
/usr/local/bin/acl2
, containing the following two lines:
#!/bin/csh -f
dir/acl2-sources/saved_acl2
Note: A carriage return in the file after the last line above is important!
Some hosts then automatically enter the ACL2 ``command loop,'' an ACL2 read-eval-print loop with the prompt:
ACL2 !>Other hosts will leave you in Common Lisp's read-eval-print loop. If yours is one of the latter, evaluate the Common Lisp expression
(ACL2::LP)
or simply (LP)
if the current
package is "ACL2"
.
Once in the ACL2 command loop, you can type an ACL2 term, typically followed by ``return'' or ``enter,'' and ACL2 will evaluate the term, print its value, and prompt you for another one. Below are three simple interactions:
ACL2 !>t T ACL2 !>'abc ABC ACL2 !>(+ 2 2) 4
To get out of the ACL2 command loop, type the :q
command.
This returns you to the host Common Lisp. We sometimes call this
``raw Lisp.'' You may re-enter the command loop with
(LP)
as above.
Note that when you are in raw Lisp you can overwrite or destroy ACL2 by executing inappropriate Common Lisp expressions. All bets are off once you've exited our loop. That said, many users do it. For example, you might exit our loop, activate some debugging or trace features in raw Lisp, and then reenter our loop. While developing proofs or tracking down problems, this is reasonable behavior.
Now you are ready to test your image.
An easy way to test the theorem prover is to type the following term to the ACL2 command loop:
:mini-proveallThis will cause a moderately long sequence of commands to be processed, each of which is first printed out as though you had typed it. Each will print some text, generally a proof of some conjecture. None should fail.
A more elaborate test is to certify the ``books'' that
come with the distribution.
acl2-sources/books
. See acl2-sources/books/README.html
for information. The general topic of books is discussed thoroughly in the
ACL2 documentation; see the BOOKS
node in the documentation tree.
Books should be ``certified'' before they are used. We do not distribute certificates with our books, mainly because certification produces compiled code specific to the host. You should certify the books locally as a test of your ACL2 image.
It is easy to re-certify all the distributed books in Unix. We recommend you do this. If you have entered ACL2, exit to the operating system, e.g., by control-d in many systems.
While connected to dir/acl2-sources
, execute
make certify-booksThis will generate minimal output to the screen and will probably take an hour or two. To remove the files thus created, invoke:
make clean-books
The certify-books
target does not cause workshop books to be
certified. If you want to certify those books as well, you will first need to
download
the gzipped tar file to the books/
directory, and then gunzip
and extract it. You can certify all the books, including books for the
workshops (including those from the 1999 workshop as described in the
(hardbound) book Computer-Aided
Reasoning: ACL2 Case Studies), using the command:
make regression
By default, certification uses the image
dir/acl2-sources/saved_acl2
. You may specify any ACL2
image, as long as it is either a command on your Unix path or an absolute file
name, for example as follows.
make certify-books ACL2=my-acl2 make regression ACL2=/u/smith/projects/acl2/saved_acl2
We apologize to non-Unix users: we do not provide non-Unix
instructions for recertifying the distributed books. The
certification methods provided by the authors of the books vary
greatly and we codified them in the Unix Makefile used above. Most
subdirectories of acl2-sources/books
contain either a
README
file or a certify.lsp
file. Users
who wish to certify one of these books and who cannot figure out (from
these scant clues) what to type to ACL2 should not hesitate to contact
the authors.
Next proceed to the section on Documentation.
ACL2's documentation is a hypertext document that, if printed in book form, is about 800 pages or about 1.5 megabytes of text. Its hypertext character makes it far more pleasing to read with an interactive browser. The documentation is available in four formats: HTML, Texinfo, Postscript and ACL2 documentation strings. All of this material is copyrighted by the University of Texas at Austin and is derived under the GNU General Public License from material copyrighted by Computational Logic, Inc.
Two Web-based guided tours of ACL2 are available from the home page
noted below. If you are already familiar with Nqthm, you might find
it useful to look at the documentation node
NQTHM-TO-ACL2
. Another useful documentation topic for
beginning ACL2 users is the node TUTORIAL
.
HTML
The ACL2 Home Page is
http://www.cs.utexas.edu/users/moore/acl2/index.html
The home page provides a selected bibliography, guided tours of the system, and the complete hypertext documentation tree.
Once you have installed ACL2, the HTML form of the documentation is
available locally as
dir/acl2-sources/doc/HTML/acl2-doc.html
.
We urge you to browse your local copy of the documentation rather than
our Web copy, simply to reduce Web traffic and the demand on our
server.
Emacs Info
This is a very convenient format for accessing the ACL2 documentation from within Emacs. In Emacs, invoke
meta-x infoand then, if you are unfamiliar with Info, type
control-h mto see a list of commands available. In particular, type
g (
dir/acl2-sources/doc/EMACS/acl2-doc-emacs.info)TOP
* ACL2 i.j: (
dir/acl2-sources/doc/EMACS/acl2-doc-emacs).
Documentation for ACL2 version i.j.
/acl2-sources/doc/LEMACS/acl2-doc-lemacs.info
/acl2-sources/doc/EMACS/acl2-doc-emacs.info
.
acl2-sources/doc/texinfo.tex
which
is copyrighted by the Free Software Foundation, Inc. (See that file
for copyright and license information.)
Users new to emacs may find it helpful to load into emacs the file
dir/acl2-sources/emacs/emacs-acl2.el
. Utilities
offered by this file are documented near the top of the file.
Postscript
The Postscript version of the documentation is not included in our normal distribution because it is so much less useful than the hyper-text versions. But a gzipped Postscript (1MB) version is available. It prints as a book of almost 900 pages and contains a Table of Contents and an index to all documented topics.
ACL2 Documentation Strings
The ACL2 system has facilities for browsing the documentation. However this
requires that the documentation be stored as strings in the Lisp image. To
save space, the images mentioned so far in this document do not contain
resident documentation strings. To build such an image on a Unix system,
invoke
make large LISP=
xxx
while connected to the acl2-sources
directory. The
xxx above should be replaced by the name of your local Common
Lisp. (By default, if no LISP=
xxx is specified,
LISP=gcl
is used. On our hosts, gcl
is the
name of GNU Common Lisp.) This will create dir/acl2-sources/saved_acl2
(note that this is the same name previously used for the image without
documentation strings). The new image may be 30 megabytes in size and
take several minutes to build on a fast (in June 2000) machine.
For non-Unix systems, the ``large'' image can be built in your local Common
Lisp by following instructions given above and then
saving the image created by the final initialize-acl2
form to an
executable binary file.
Once you have an image of ACL2 containing documentation strings, and you are in
the ACL2 command loop, you may query the documentation on a given topic
by typing the command
:doc
topic
where topic is the Lisp symbol naming the topic you want to
learn about. To learn more about the on-line documentation, type
:help
and then return.
This completes the installation of ACL2 Version 2.6. You may wish to
return to the Table of Contents.
acl2.tar.gz
because your get
times out, an
alternative is to get all of the many files in the directory
split/
, each of which matches the pattern
split-acl2.tar.gz*
(e.g., using an `mget' command). Once
you have got all these files, concatenate them together in alphabetic
order, e.g., with the command
cat split-acl2.tar.gz* > acl2.tar.gz
If you are using Version 3.2.0 of Lispworks, there is probably a bug
in the definition of logeqv
. Harlequin has sent us a
patch; if anyone asks us for it, we will ask Harlequin if we may
forward their patch.
If you are running on GCL or AKCL on a machine with only 16 megabytes
of RAM, it may be a good idea to have a file
~/acl2-init.lsp
containing the following form, which will
help to keep the ACL2 process small as you are running it:
(setq acl2::*acl2-allocation-alist* nil).In one test several years ago, we found the following times (minutes:seconds) using a Sparc 2.
31:42 64 megabytes main memory 33:37 64 megabytes main memory, using the SETQ form above 63:52 16 megabytes main memory 43:09 16 megabytes main memory, using the SETQ form above
If you are running Linux Slackware v3.0:
acl2_sources/init.lsp
#+gcl (setq COMPILER::*SPLIT-FILES* 100000)This way the lisp compiler splits large C source files in files of about 100K. Without this line, some systems do not have enough memory to compile the C files. (We saw this problem arise on a machine with 16Mb of actual memory plus 16Mb of virtual memory.)
Thanks to Vanderlei Moraes Rodrigues for the Slackware notes.
REAL
for information about this
extension and how to build it, and a warning about its experimental nature.
http://www.cs.utexas.edu/users/moore/acl2/admin/forms/email.html
.
You should receive a confirmation of the request a short time later,
along with instructions (e.g., how to retrieve
archive messages). If you need further assistance, please
send a message to
acl2-request@lists.cc.utexas.edu
.
acl2@lists.cc.utexas.edu
.
You can post messages to that list only if you are a member of the list.
acl2-help@lists.cc.utexas.edu
.
You can retrieve archive files or search the archives using a web interface
from
http://www.cs.utexas.edu/users/moore/acl2/admin/forms/archive.html
.
You can search the ACL2 documentation, workshops, and publications online from
http://www.cs.utexas.edu/users/moore/acl2/admin/forms/search.html
.
Finally, please report bugs in ACL2 to
acl2-bugs@lists.cc.utexas.edu
.
This version of ACL2 is a descendent of ACL2 Version 1.9, Copyright (C) 1997 Computational Logic, Inc.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Matt Kaufmann (Kaufmann@cs.utexas.edu)
J Strother Moore (Moore@cs.utexas.edu)
Department of Computer Sciences
University of Texas at Austin
Austin, TX 78712-1188 U.S.A.