496 pp., 7 x 9 in, 18 line drawings, 4 figures
- Published: March 7, 2023
This comprehensive and highly readable textbook teaches students how to formally reason about computer programs using an incremental approach and the verification-aware programming language Dafny.
Program Proofs shows students what it means to write specifications for programs, what it means for programs to satisfy those specifications, and how to write proofs that connect specifications and programs. Writing with clarity and humor, K. Rustan M. Leino first provides an overview of the basic theory behind reasoning about programs. He then gradually builds up to complex concepts and applications, until students are facing real programs using objects, data structures, and non-trivial recursion. To emphasize the practical nature of program proofs, all material and examples use the verification-aware programming language Dafny, but no previous knowledge of Dafny is assumed.
• Written in a highly readable and student-friendly style
• Builds up to complex concepts incrementally
• Comprehensively covers how to write proofs and how to specify and verify both functional programs and imperative programs
• Uses real program text from a real programming language, not pseudo code
• Features engaging illustrations and hands-on learning exercises
Proving programs is no small feat, even for good programmers. This enlightening and witty book will fast forward your expertise like no other. Of course, I can't prove it.
Yannick Moy, Head of Static Analysis Unit, AdaCore
At last, a book on formal program verification written squarely for students: clear explanations, well-thought-out examples, and the use of an accessible, state-of-the-art tool to put it all into practice.
Graeme Smith, Associate Professor, The University of Queensland
This book offers a unique, modern perspective on program verification by teaching students and practitioners how to develop verified software using expressive languages and automated tools.
Peter Müller, Professor, ETH Zurich