The Why and How of Deductive Program Verification

Lecture at Marktoberdorf Summer School 2026 by Jean-Christophe Filliâtre.
This lecture introduces fundamental concepts and techniques related to deductive program verification, such as function contracts, loop invariants, termination proofs, ghost code, modeling of data structures, weakest preconditions, etc. A particular focus is made on the use of automated theorem provers in the verification process, and on the building of a standard library for verification. The lecture includes many examples using the Why3 tool and a lot of small exercises in program verification are provided.

Lecture Slides

Exercises

Installing/Using Why3

Two options:

Resources

Reading material: Books mentioned in the lectures:

Acknowledgments

I'm grateful to Andrei Pakevich, Paul Patault, Loïc Correnson, and François Bobot for their help in the preparation of this lecture.