Spring 2005
15-817(A) Introduction to Model Checking
Instructor: Ed Clarke
Friday 1:30 - 3:00 (one meeting per week)
WeH 4615A
Units: 06

This course is a graduate level research seminar on Model Checking techniques for verifying concurrent, reactive, and real-time programs. Although Model Checking is useful for hardware verification, no knowledge of computer hardware is required for this course.

The course is intended to be an introduction to the subject, and the prerequisites are minimal--basic knowledge of elementary logic and automata theory. Students taking the class for graduate credit will be asked to prepare a short project and give one or two lectures. Auditors are also welcomed.

DETAILED COURSE DESCRIPTION: Logical errors in hardware controllers, communication protocols, and concurrent programs are becoming an increasingly important problem. They can delay getting a new product on the market or cause the failure of some critical device that is already in use. The most widely used method for verifying such systems is based on extensive simulation and can easily miss significant errors when the program is very complicated. Many of these programs can be viewed as having only a finite number of states. When this is the case, an alternative verification technique called "model checking" may be used. In this approach specifications are expressed by automata or temporal logic formulas, and programs are modeled as state transition systems. An efficient search procedure is used to determine automatically if the specifications are satisfied by the transition system. If the specification is not satisfied, a counterexample execution trace is given that shows why the specification is not satisfied..

POSSIBLE TOPICS TO BE COVERED:

  1. Modeling concurrent programs with state transition systems
  2. Temporal logics
  3. The mu-calculus and fixpoint theory
  4. The basic model checking algorithms
  5. Binary decision graphs and symbolic model checking
  6. Sat procedures and Bounded Model Checking
  7. Using Omega-automata to specify properties of concurrent systems
  8. Notions of equivalence for concurrent systems (observational equivalence, etc)
  9. Compositional reasoning techniques (e.g. the "assume--guarantee" paradigm)
  10. Exploiting abstraction and symmetry
  11. Using induction to reason about systems with many similar processes
  12. True concurrency and models based on partial orders
  13. Extending model checking techniques to handle real-time programs
  14. Model checking techniques for the mu-calculus
  15. Model Checking for Software and Static Analysis.