We shall look at the theory and practice of computer-aided verification, with an emphasis on software verification.
The course requires basic knowledge of algorithms, data structures, automata theory, computational complexity, and propositional
logic. For example, you should know what it means for a formula to be satisfiable, how to determinize a finite automaton, what is
depth first search, and what P and NP means. If you are not familiar with these concepts, or need more information to decide,
contact the instructor. I shall assume you have taken CS180 and CS181 or equivalents.
Potential project topics, both theoretical and experimental, will be announced during the first weeks of the course. Any suggestions for designing your own project according to your interests are very welcome. Every project will require a mentor. Projects will involve either surveying a field in depth, or using state of the art model checkers to verify large systems of interest, or to extend the capabilities of existing model checkers by implementing new algorithms or proving new theorems.
Students may collaborate on homeworks, but each student needs to individually write up a solution set and be
prepared to present it in class on the due date. Projects must be done individually, or as clearly identifiable parts of a larger effort.
Lecture 1 Monday September 29
Introduction to formal verification.
Labeled transition systems.
Lecture Slides
De Millo, Lipton, and Perlis. Social processes and proofs of programs.
The Reactive modules modeling language.
Lecture 2 Wednesday October 1
The invariant verification problem.
Enumerative invariant verification. Depth first search. Spin.
Notes on Invariant verification
from a text book by Rajeev Alur and Tom Henzinger.
The SPIN web page.
Lecture 3 Monday October 6
Concrete model checking. Partial order reduction.
Information on Bloom filters
and a link to the Stern and Dill paper.
Lecture 4 Wednesday October 8
Finish partial order reduction.
Introduction to symbolic methods. Symbolic transition relations.
Symbolic representations
Homework 1 is available.
Lecture 5 Monday October 13
Bounded model checking. k-induction.
Survey on Bounded model checking.
Do not worry if you don't follow all the details about temporal logics
and liveness properties. We will cover these later in the quarter.
Lecture 6 Wednesday October 15
SAT solving.
Lintao Zhang's notes on SAT.
A very nice description of modern SAT solvers can be found in this
paper.
Read the classic paper on BDDs.
Lecture 7 Monday October 20 Binary Decision Diagrams. BDD implementation.
Lecture 8 Wednesday October 22
End discussion on BDDs. Abstraction.
Counterexample guided abstraction refinement
Homework 2 is available.
Lecture 9 Monday October 27
Counterexample guided abstraction refinement.
Interpolation based model checking.
Ken McMillan. Interpolation and SAT-based Model Checking.
Initial project discussions.
Lecture 10 Wednesday October 29
Classical software verification with loop invariants.
Project discussions.
Homework 3 is available.
Lecture 11 Monday November 3
Decision procedures.
Nelson-Oppen combination.
Nelson's thesis is a very good
introduction to decision procedures and verification.
Lecture 12 Wednesday November 5
Predicate abstraction.
Susanne Graf and Hassen Saidi.
Construction of abstract state graphs using PVS
Vaughan Pratt. Two easy theories whose combination is hard
Lecture 13 Monday November 10
SLAM.
Lazy abstraction.
Students talk about their projects.
Lazy abstraction
Lecture 14 Wednesday November 12
Context free reachability.
Reps, Horwitz, and Sagiv.
Precise interprocedural
dataflow analysis via graph reachability
Announcement: No class on Nov 26.
Lecture 15 Monday November 17
Temporal logics: Safe temporal logic.
Model checking Safe Temporal logic. Towards fairness and CTL.
Students talk about their projects.
Temporal safety requirements