Proof assistants are computer programs that help users formally describe mathematical statements and proofs, making them amenable to mechanical checking. Today they are used to verify operating systems, compilers, and cryptographic protocols, as well as landmark results in mathematics such as the Feit-Thompson theorem or the Kepler conjecture. Contemporary proof assistants rely on a sophisticated interaction between theoretical investigations in metamathematics and the efficient implementation of a portfolio of algorithms, without which these systems would not usable on a large scale. During the last decade, the use of proof assistants has grown steadily, and they are now at the same time a research topic in its own right and a tool for researchers in other domains. Yet no reference book is available today that covers the entire domain. This book is an introduction and reference for the various topics related to the underlying logical formalisms, architectures, and applications.
The main audience is graduate students entering the field of interactive theorem proving, the secondary audience is more established researchers in computer science, mathematics, and philosophy, as well as practicing engineers, engaged with proof assistants.