@MISC{Wiedijk08formalproof, author = {Freek Wiedijk}, title = {Formal Proof -- Getting Started}, year = {2008} }

Bookmark

OpenURL

Abstract

Today highly nontrivial mathematics is routinely being encoded in the computer, ensuring a reliability that is orders of a magnitude larger than if one had just used human minds. Such an encoding is called a formalization, and a program that checks such a formalization for correctness is called a proof assistant. Suppose you have proved a theorem and you want to make certain that there are no mistakes in the proof. Maybe already a couple of times a mistake has been found and you want to make sure that that will not happen again. Maybe you fear that your intuition is misleading you and want to make sure that this is not the case. Or maybe you just want to bring your proof into the most pure and complete form possible. We will explain in this article how to go about this. Although formalization has become a routine activity, it still is labor intensive. Using current technology, a formalization will be roughly four times the size of a corresponding informal L AT E X proof (this ratio is called the de Bruijn factor), and it will take almost a full week to formalize a single page from an undergraduate mathematics textbook. The first step towards a formalization of a proof consists of deciding which proof assistant to use. For this it is useful to know which proof assistants have been shown to be practical for formalization. On the webpage [1] there is a list that keeps track of the formalization status of a hundred well-known theorems. The first few entries on that list appear