;;===========================================================================
;; Copyright (C) 1999 Institut fuer Informatik, University of Kiel, Germany
;;===========================================================================
;; File:         README
;; Author:       Wolfgang Goerigk
;; Content:      README for ACL2 Book Contribution
;; as of:        12/04/00, University of Kiel, Germany
;;---------------------------------------------------------------------------
;; $Revision: 1.1 $
;; $Id: README,v 1.1 2000/04/16 12:09:36 wg Exp wg $
;;===========================================================================

 The  series of ACL2  books in  this directory  goes with  the article
 "Wolfgang Goerigk:  Compiler Verification  Revisited" as part  of the
 book  "Computer Aided Reasoning:  ACL2 Case  Studies" edited  by Matt
 Kaufmann, Pete Manolios and J Strother Moore.

======================================================================

This distribution contains the following files:

 - REAME            ; this file
 - machine.lisp     ; the TL machine formalization
 - compiler.lisp    ; the SL (miniComLisp) to TL compiler
 - exercises.lisp   ; solutions to the exercises from the paper
 - evaluator.lisp   ; the SL semantics
 - proof1.lisp      ; part 1 of the compiler correctness proof
 - proof.lisp       ; part 2 of the compiler correctness proof

On a  Unix system, you can certify  the books by typing  make, if this
directory  is  under  books/case-studies/  in  an  ACL2  distribution.
Otherwise, In  order to use the  ACL2 scripts, you  should certify the
book "machine". Start ACL2 in this directory and type

   (certify-book "machine" 0 t)  

You may  then step through the  other scripts or certify  them as well
(using a similar command, see below).

----------------------------------------------------------------------

TL Machine and SL to TL Compiler:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   o "machine"     
   o "compiler"    (includes the book "machine")

define the TL  Machine (see "machine.lisp") and the  SL to TL Compiler
(see  "compiler.lisp").  The  machine formalization  must  be compiled
using  (certify-book "machine"  0 t),  or  equivalently, (certify-book
"machine"), before  you process the events  in compiler or  any of the
other scripts below (since they include the machine book).

Solutions to the Exercises
~~~~~~~~~~~~~~~~~~~~~~~~~~

    o "exercises"   (includes the book "compiler")

 gives solutions to the exercises from the article and some additional
 stuff.
 
SL Semantics and Compiler Correctness Proof
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    o "evaluator"   (includes the book "compiler")
    o "proof1"      (includes the book "evaluator")
    o "proof.lisp"  (includes the book "proof1")

 The books  "proof1" and "proof"  (in that order)  prove the SL  to TL
 compiler  correct with  respect to  the SL  semantics (as  defined in
 "evaluator.lisp") and the machine semantics.

 If you  certify these books, you  will find ACL2  complain about some
 missing guard verification, but you  may just ignore the warnings. If
 you certify  the books,  you should (1)  certify "machine",  then (2)
 certify  "compiler", then  (3)  "evaluator", then  (4) "proof1",  and
 finally you may also certify "proof". You may step through the proofs
 as well, but "machine" must be compiled.


