15-317 Constructive Logic
Lecture 18: Certifying Theorem Proving

The theorem prover for intuitionistic propositional logic we wrote earlier in Prolog always just returns a yes or no answer. This requires a lot of trust in our implementation. The situation could be improved if the theorem prover could return a proof term in case it succeeds in finding one. This can be done rather elegantly in the logical framework. We transliterate the earlier Prolog implementation into Twelf and then annotate it with proof terms. Mode checking guarantees that it will always produce a proof term if it succeeds. Such proof terms can then be verified independently using the kind of proof-term checker we presented in Lecture 16.

We can improve the situation further by using intrinsically typed proof terms. In that case, we cannot accidentally make a mistake in our program that would produce invalid terms. Of course, either way external checkability is still important for overall reliability in the design of a prover.

[ Home | Schedule | Assignments | Handouts | Software ]

Frank Pfenning