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

                       Smtlink README

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

Smtlink is a trusted clause processor that provides an interface
for integrating an external SMT solver into ACL2.

The default SMT solver integrated is Z3.

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

                     REQUIREMENTS

1. Python 2 is properly installed.
2. Z3 is properly installed that it can be imported and used in
   Python.
3. ACL2 and its book directory is properly installed.
4. Smtlink uses Unix commands that requires Unix environment.

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

                  BUILD INSTRUCTIONS

1. Run script gen_ACL22SMT.py to generate the ACL2_to_Z3.lisp
   file using command:

     python gen_ACL22SMT.py z3_interface/ACL2_to_Z3.py ACL22SMT.lisp
     (Usage : python gen_ACL22SMT.py <input-file> <output-file>)

2. Run Script gen_config.py to generate the config.lisp file:

     python gen_config.py -i config-template.lisp
                          -o config.lisp
                          -p <dir-to-python-executable>
                          -z nil
                          -e nil
     (Usage :
      python gen_config.py -i config-template.lisp
                          -o config.lisp
                          -p <dir-to-python-executable>
                          -z <dir-to-python-files>
                          -e <dir-to-expand-files>)

     Check gen_config.py for defaults.

2. Follow :doc cert.pl to certify the books using command
   "cert.pl top.lisp".
   Or use:
     make ACL2=<dir-to-ACL2-executable/script> PYTHON=<dir-to-python>
          SAVE_PY_TO=<dir-to-save-python-scripts> or nil
----------------------------------------------------------------

                     USAGE

Refer to document "Extending ACL2 with SMT solvers"
for usage.
