Program Verification
Lecture notes for the master’s PV course. The course teaches how to formally prove that programs do what their specifications say, using logic, SMT solvers, and Hoare-style reasoning.
Foundations
- (y-01) Introduction to Program Verification
- (y-02) Propositional Logic
- (y-03) First-Order Logic
- (y-04) First-Order Theories
Logic & Tools
- (y-05) SMT-LIB
- (y-06) Boogie and Boostan
- (y-07) Relational Semantics
- (y-08) Hoare Proof System
- (y-09) Ultimate Referee
Data & Nondeterminism
Automating Verification
- (y-12) Control-Flow Graphs
- (y-13) Predicate Transformers
- (y-14) Bounded Model Checking
- (y-15) Correctness via Assert Statements
Advanced Techniques
- (y-16) Abstractions and ARG
- (y-17) Infeasibility Proofs and CEGAR
- (y-18) Trace Abstraction and Automata
- (y-19) Constraint-Based Invariant Synthesis
Tools
- Z3: SMT solver from Microsoft Research.
- Ultimate Automizer: automated software verifier.
- Boogaloo: interpreter and symbolic execution tool for Boogie.
- Ultimate Referee: tool for checking loop invariants.