[Note from Matt Kaufmann, May 2012:

  When these books were first submitted, a "super-ihs" book was not
  available.  Now we have books/coi/super-ihs/super-ihs.lisp to
  include.  So, a t long last, we are making this work certifiable with
  ACL2.  I did a bit of editing in order to make this easy to
  accomplish, to avoid nonstandard makefiles and to avoid (perhaps
  just out of my laziness) dealing with add-include-book-dir and such.

  In particular, the following files may be ignored:

  cert.sh
  dir.mk
  */*.acl2

End of Note.]

Lee Pike <leepike@galois.com>
Galois Connections
Feb. 2006

*** README FILE for mCryptol Core Verifier ACL2 Books ***

The following books accompany the paper, "Building a Verifying Compiler with ACL2"
submitted to the 2006 ACL2 Workshop.  The paper reports on work in-progress to build
a verifying compiler for the domain-specif language, mCryptol, for specifying
symmetric-key encryption algorithms.

* TO BUILD

  * Change the directory paths in core_verifier/cert.sh to your directory paths.
  
  * Change the directory path in core_verifier/dir.mk to your corresponding path for
    acl2-2.9.X (this build is known to be 2.9.4 compatible).

  * from core_verifier/, run 
    > make depend
    > make


* DIRECTORY INFORMATION
  
  * AES/ RC6/ TEA/ Fibonacci/ factorial/
   
    Examples of the verifying compiler for a variety of mCryptol programs.  AES, TEA,
    and RC6 are encryption protocols.  Each directory contains four books:

    * XXX.mcr: the mCryptol source.

    * XXX-source-shallow-flatten.lisp: Lisp embedding of the flattened form of the program.
    
    * XXX-source-shallow-canon.lisp: Lisp embedding of the canonical form of the program.

    * proof-XXX.lisp: the correspondence proof between the indexed and canonical
      embeddings in ACL2.

  * books/ 

    Contains the necessary books to complete the proofs.

    * computed-hints.lisp: computed hints used the proofs.
  
    * make-theorems.lisp: main file that contains macros and definitions to build the
      theorems.
  
    * symbol-manip.lisp: symbol manipulation functions obtained from Dave Greeve.

    * ihs-defthms-help.lisp: some integer hardware specification lemmas.
 
    * source-shallow.lisp: a shallow embedding of the mCryptol primitives in Lisp.

    * vector-comp-canon.lisp: some additional lemmas for vector comprehension in
      canonical form.
