• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
        • Instructions
        • Proof-builder-commands
        • Proof-builder-commands-short-list
        • Dive-into-macros-table
        • Verify
        • Define-pc-macro
        • Macro-command
        • Define-pc-help
        • Toggle-pc-macro
        • Define-pc-meta
        • Retrieve
        • Unsave
        • Proof-checker
      • Recursion-and-induction
      • Hons-and-memoization
      • Events
      • Parallelism
      • History
      • Programming
      • Operational-semantics
      • Real
      • Start-here
      • Debugging
      • Miscellaneous
      • Output-controls
      • Macros
      • Interfacing-tools
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • ACL2
  • Debugging

Proof-builder

An interactive tool for controlling ACL2's proof processes.

Call this up with (verify ...).

The interactive proof-builder provides a way to explore the development of ACL2 proofs below the level of the ACL2 prover (as typically used by thm and events such as defthm). To use this tool, invoke the verify command, for example as follows.

ACL2 !>(verify (equal (append (append x y) z)
                      (append x (append y z))))
->:

Then at the "->:" prompt, one submits commands that operate on a stack of goals, starting with the single goal that was supplied to VERIFY as shown above. The final command (or ``instruction'') can be an exit command, which can print out a defthm event if the goal stack is empty; see proof-builder-commands, in particular the exit command. That resulting defthm event includes an :instructions parameter, which directs replay of the interactive proof-builder commands (for example during certification of a book containing that event; see books).

If you exit the interactive proof-builder's loop, you may re-enter that session at the same point using the command (verify), i.e., with no arguments. The commands save and retrieve may be invoked to manage more than one session.

The interactive proof-builder can be invoked on a specific subgoal, and the resulting :instructions can be given as a hint to the theorem prover for that subgoal. See instructions.

A tutorial is available here. That tutorial illustrates more than just the interactive proof-builder. The portion relevant to the proof-builder may be accessed directly here.

See set-evisc-tuple for how to arrange that output is printed in abbreviated form. In general, the interactive proof-builder uses the :TERM evisc-tuple described in that documentation.

Individual proof-builder commands are documented in subsection proof-builder-commands. Note that the package name (see symbol-package-name is irrelevant for these commands (though not their arguments); for example (dive 3), (acl2::dive 3), (acl2-pc::dive 3), and (:dive 3) are all equivalent. For a list of perhaps the most commonly used commands, see proof-builder-commands-short-list.

The proof-builder supports user-defined macros, which are tactics that generate proof-builder instructions. See define-pc-macro.

Remark. The ``pc-'' prefix, for example in ``define-pc-macro'' above, stems from an earlier name for the proof-builder, which was ``proof-checker''. That also accounts for the string "PC" in the package name, "ACL2-PC".

Subtopics

Instructions
Instructions to the interactive proof-builder
Proof-builder-commands
List of commands for the interactive proof-builder
Proof-builder-commands-short-list
Perhaps the most commonly used proof-builder commands
Dive-into-macros-table
Right-associated function information for the proof-builder
Verify
Enter the interactive proof-builder
Define-pc-macro
Define a proof-builder macro command
Macro-command
Compound command for the interactive proof-builder
Define-pc-help
Define a macro command whose purpose is to print something
Toggle-pc-macro
Change an ordinary macro command to an atomic macro, or vice-versa
Define-pc-meta
Define a proof-builder meta command
Retrieve
Re-enter a (specified) proof-builder state
Unsave
Remove a proof-builder state
Proof-checker
Old name for proof-builder