Pc-Nqthm, An interactive ``Proof-checker'' enhancement
of the Boyer-Moore Theorem Prover

The Logic

See Nqthm

The Proof Checker

This proof-checker is loaded on top of the Boyer-Moore Theorem Prover; see the Theorem Prover section in the Nqthm description.

The user can give commands at a low level (such as deleting a hypothesis, diving to a subterm of the current term, expanding a function call, or applying a rewrite rule) or at a high level (such as invoking the Boyer-Moore Theorem Prover). Commands also exist for displaying useful information (such as printing the current hypotheses and conclusion, displaying the currently applicable rewrite rules, or showing the current abbreviations) and for controlling the progress of the proof (such as undoing a specified number of commands, changing goals, or disabling certain rewrite rules). A notion of ``macro commands'' lets the user create compound commands, roughly in the spirit of the tactics and tacticals of LCF and its descendents. An on-line help facility is provided, and a user's manual exists.

As with a variety of proof-checking systems, this system is goal-directed: a proof is completed when the main goal and all subgoals have been proved. Upon completion of an interactive proof, the lemma with its proof may be stored as a Boyer-Moore `event' that can be added to the user's current library of definitions and lemmas. This event can later be replayed in `batch mode'. Partial proofs can also be stored.


This system has been used to check theorems stating the correctness of a transitive closure program, a Towers of Hanoi program, a ground resolution prover, a compiler, irrationality of the square root of 2, an algorithm of Gries for finding the largest "true square" submatrix of a boolean matrix, the exponent two version of Ramsey's Theorem, the Shroeder-Bernstein theorem, Koenig's tree lemma, and others. It has also been used to check the correctness of several Unity programs and has been used for hardware verification.

Published articles and reports

The first one below is a detailed user's manual, including soundness arguments. The second extends this by describing an extension of the system which admits free variables, an important addition for doing full first-order reasoning. The third is a reference for that full first-order reasoning capability.

Matt Kaufmann, A User's Manual for an Interactive Enhancement to the Boyer-Moore Theorem Prover. Technical Report 19, Computational Logic, Inc., May, 1988.

Matt Kaufmann, Addition of Free Variables to an Interactive Enhancement of the Boyer-Moore Theorem Prover. Technical Report 42, Computational Logic, Inc., May, 1989.

Matt Kaufmann, An Extension of the Boyer-Moore Theorem Prover to Support First-Order Quantification. To appear in J. of Automated Reasoning. A preliminary (and expanded) version appears as Technical Report 43, Computational Logic, Inc., May, 1989.


Strengths include:
  1. Combination of capability for high degree of user control with the power of the Boyer-Moore prover
  2. On-line help facility and users manuals
  3. Extensibility by way of ``macro commands'' (patterned after the tactics and tacticals of LCF, HOL, Nuprl etc.)
  4. Full integration into Boyer-Moore system
  5. Careful attention to soundness issues
Weaknesses include:
  1. Ease of low-level interaction often tempts users to construct ugly proofs without many reusable lemmas that are hard to modify.
  2. First-order quantification is handled via Skolemization, rather than directly (as in the Never prover).

To obtain PC-Nqthm.

This page is URL http://www.computationallogic.com/software/pc-nqthm/index.html