Package mepk.kernel


package mepk.kernel
This package implements the trusted kernel of MEPK.

The basic building block is a Statement, representing statements like "for every natural number n, n >= 0". Any syntactically correct statement can be constructed, and statements represent both axioms and theorems. Then a ProofStep shows how to construct new statements from existing statements: there are only a few built-in proof steps (substitute, compose, weaken) and none can be added. Finally a Proof represents a recipe for constructing one set of statements from another using only ProofSteps.

The language of statements and their expressions is that of Ghilbert, but using Metamath's philosophy of types: expressions are trees of constants and variables; statements have hypotheses and a conclusion; and dummy variables are handled using 'distinct variable restrictions'.

Every Proof can be verified mechanically by asking it to justify each of its statements: this is implemented in Proof.verify(). It should then provide a ProofStep which constructs that statement, together with Proofs for the prerequisites of that ProofStep.