Verified proof checking for higher-order logic

Abstract: This thesis is about verified computer-aided checking of mathematical proofs. We build on tools for proof-producing program synthesis, and verified compilation, and a verified theorem proving kernel. Using these tools, we have produced a mechanized proof checker for higher-order logic that is verified to only accept valid proofs. To the best of our knowledge, this is the only proof checker for HOL that has been verified to this degree of rigor. Mathematical proofs exist to provide a high degree of confidence in the truth of statements. The level of confidence we place in a proof depends on its correctness. This correctness is usually established through proof checking, performed either by human or machine. One benefit of using a machine for this task is that the correctness of the machine itself can be proven. The main contribution of this work is a verified mechanized proof checker for theorems in higher-order logic (HOL). The checker is implemented as functions in the logic of the HOL4 theorem prover, and it comes with a soundness result, which states that it will only accept proofs of true theorems of HOL. Using a technique for proof-producing code generation (which is extended as part of this thesis), we synthesize a CakeML program that is compiled using the CakeML compiler. The CakeML compiler is verified to preserve program semantics. As a consequence, we are able to obtain a soundness result about the machine code which implements the proof checker.