javac and then proving the corresponding theorem about the
JVM. Certain automatically applied strategies are implemented with rewrite
rules (and other proof-guiding pragmas) in ACL2 ``books'' to control the
theorem prover when operating on problems involving the JVM model.
apprentice-state.lisp -- the Apprentice initial state (4 KB)
apprentice.lisp -- the Apprentice proof script (97 KB)
certify.lisp -- a script to re-certify all these files (4 KB)
demo.lisp -- a proof script for the Java recursive factorial method (20 KB)
isort.lisp -- a proof script for the Java insertion sort method (38 KB)
iterativedemo.lisp -- a proof script for the Java iterative factorial method (9 KB)
m5.lisp -- the M5 JVM model (101 KB)
perm.lisp -- some lemmas about permutations (1 KB)
universal.lisp -- a proof script
for the ``universal program'' that can return any int (10 KB)
utilities.lisp -- basic M5 utility lemmas (5 KB)
apprentice.lisp and utilities.lisp. In them you
will find include-book commands that mention the standard books
books/arithmetic/top-with-meta and
books/ihs/quotient-remainder-lemmas. Change these pathnames to
those for your machine.
Then, while connected to the directory on which you downloaded the files,
fire up ACL2 and execute
(ld "certify.lisp" :ld-pre-eval-print t).
Recertification takes just a few minutes for all but the apprentice
example. That one takes about 2 hours.