15-819 - Specification, Verification, and Model Checking ("Spec and Check!")
Instructors: Ed Clarke, John Reynolds, and Jeannette Wing
Units: 12
Spring 2005

Meeting Time:  Mondays and Wednesdays, 1:30 - 2:50 PM, WeH 4615A.

Description: This course will focus on the foundations and applications of formal specification and verification.  We will present different specification notations for describing desired system properties and different verification techniques for proving that systems satisfy their specifications.  We will cover in detail two of the most successful approaches to verification: Hoare Logic and Temporal Logic Model Checking.  We will cover in less detail specification notations and tools for describing and checking constraints on software designs.  We will show the benefits of writing formal specifications for large system design and for debugging software.  Examples will come mainly from software systems and protocol verification.

Prerequisites: The course is designed to be mostly self-contained. In particular, a prior logic course is not assumed.  Knowledge of programming languages and concurrency (at the undergraduate level) will be helpful. Although Model Checking is useful for hardware verification, no knowledge of computer hardware will be required for this course.

Texts:

1) Logic in Computer Science: Modeling and Reasoning about Systems by
M.  Huth and M. Ryan

2)  Model Checking by E. M. Clarke, Orna Grumberg, and Doron Peled

Method of Evaluation
Grading will be based on a set of assignments and a take-home final exam.

Topics to be covered:
  • Prepositional logic, Predicate calculus, Natural deduction proofs
  • Simple Hoare logic, Weakest preconditions
  • Hoare logic for arrays and for recursive procedures
  • Shared mutable data structures - separation logic
  • Reasoning about behavioral subtyping - abstraction functions
  • The Davis-Putnam procedure and modern SAT procedures (Grasp, Chaff, etc.)
  • Property specification using Computation Tree Logic (CTL)
  • Concurrency (synchronous and asynchronous models), Fairness
  • Explicit state model checking
  • Binary decision diagrams (BDDs)
  • Symbolic model checking
  • Specification notations for software design
  • Case studies of specifying large software systems
  • Tools for checking software design