This is a Lisp module for converting the Lisp-formatted proof object
outputted by the first-order-logic-based automatic theorem prover
Otter into
LaTeX files for producing human-readable proof documents. In Otter, output
of the proof object is enabled with the set(build_proof_object). option. This module's features include:
To use it, simply load it and invoke print-latex-proof
on the proof object outputted by Otter, as shown below. You may wish
to customize the operator tables or
*MIN-INLINE-OTTER-STATEMENT-SIZE*, both near the
beginning of the file, for your particular application.
(LOAD "po2hr.lisp")(print-latex-proof '( (1 (input) ((not (FUNCTION v0)) (not (FUNCTION (inverse v0))) (ONEONE v0)) (1)) (2 (input) ((not (ONEONE (0)))) (2)) (3 (input) ((FUNCTION (0))) (3)) (4 (input) ((equal (inverse (0)) (0))) (4)) (5 (instantiate 1 ((v0 . (0)))) ((not (FUNCTION (0))) (not (FUNCTION (inverse (0)))) (ONEONE (0))) NIL) (6 (paramod 4 (1 1) 5 (2 1 1)) ((not (FUNCTION (0))) (not (FUNCTION (0))) (ONEONE (0))) NIL) (7 (propositional 6) ((not (FUNCTION (0))) (ONEONE (0))) (7)) (8 (resolve 7 (1) 3 (1)) ((ONEONE (0))) (8)) (9 (resolve 2 (1) 8 (1)) () (9)) ) )
View output of this example: (tex) (ps) (pdf)
View output of a much larger example: (tex) (ps) (pdf)
READTABLE-CASE, which is needed in order to preserve case
in the Otter proof object. However, if you must use it in one of these
systems, just remove the line containing READTABLE-CASE,
and you will get some, albeit ugly, output.The implementation is contained entirely within the file po2hr.lisp, and has no external dependencies. Each function and global variables is documented within: