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
]
fp@cs
Frank Pfenning
|