Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

A Hilbert calculus

Each chapter in this part develops a theory, alternating declarations and proofs with explanations. Cells with the same document name share one theory: theory cells add MM0 declarations, and proof cells add theorems and proofs. Editing a cell rechecks its document. Later cells can use earlier declarations in that document.

We start with a small classical system: a Hilbert calculus for propositional logic.

The signature

Two connectives suffice, implication and negation:

Each connective registers its notation twice, giving every Unicode token an ASCII alias that can be typed easily. Negation binds tighter than implication, and implication associates to the right.

The axioms

A Hilbert calculus uses axiom schemes with few inference rules. This theory has three schemes with no hypotheses and one inference rule:

h1 and h2 are the K and S schemes, and h3 is classical contraposition. Modus ponens is the only inference rule. MM0 represents it as an axiom with hypotheses.

Implication is reflexive

Here’s a classic proof of a simple tautology:

Hypothetical syllogism

A theorem’s hypotheses are cited as #1, #2, … like any other reference:

Negation

To shorten the double-negation proofs, we add one more axiom scheme:

con2 is derivable from the three schemes above, but this small development assumes it to keep the example short. Double-negation introduction then takes three lines:

The first line cites imp_refl from earlier on the page. Elimination uses the same pattern with h3:

The whole page

The index lists every statement the page has built, in order, with a marker for each proof obligation. The document behind it is an ordinary .mm0/.auf pair, and everything on the page is live, so you can edit any of the theorems, axioms, or proofs.