Week 11 Lab: Verify a machine-found proof by hand
Take a short propositional proof found by exhaustive search, check every step on paper, then check it in mmj2 and with mmverify.py. The last lab that counts toward lab proofs.
19 May 2027
Before the lab#
Read the header of
pmproofs.txt. It holds
proofs of “all 193 theorems of propositional calculus in Whitehead and
Russell’s Principia Mathematica” from ax-1, ax-2, ax-3 and ax-mp; its
revision history names who found each shorter proof and with what program, and
says “Proofs of up to 39 steps have been searched exhaustively”. Learn its
notation: “1” is ax-1, “2” is ax-2, “3” is ax-3, “D” is ax-mp, and the header’s
own example is *1.6 with the proof DD2D121. Pick a theorem whose proof is at
most nine characters long and bring its line.
In the lab#
Forty-five minutes on paper. Read your proof string from the right: each digit puts an axiom on a stack, each D takes the top two off and applies modus ponens. Write the substitution and the resulting statement at every step. Your last line must match the “Result of proof” in the file.
Forty-five minutes in mmj2. Make a small
database with the four axioms, ax-1, ax-2, ax-3 and the rule ax-mp, as the
Proof Explorer home page states
them (slides 15 to 17 of the
IHP 2014 overview show
ax-1, ax-2 and ax-mp written out in Metamath syntax), state your theorem as a
$p, and enter the proof as you checked it.
Thirty minutes with a second verifier. Save the database and run
python3 mmverify.py < yourfile.mm 2> yourfile.log, the invocation
mmverify.py gives in its own
header, and read the log. If your verifier project already runs, run it too and
compare.
Afterwards#
Submit the hand check and the database by Friday. This is the last proof that counts toward the lab-proofs mark; marks and comments come back at the week 12 lab.
The spec
What you bring to the session. Written so a reader can tell whether it has been met without asking you.
- your hand check lists every step of the chosen proof with the axiom it applies and the statement it produces, ending in the file's "Result of proof"
- the same proof, entered in mmj2 in a database whose only axioms are ax-1, ax-2, ax-3 and ax-mp, verifies with no errors
- mmverify.py run on that database reports no errors
Teaching team
- Teodor Ashby — tutor