Joint Colloquium Distinguished Lecture Series

Model Checking: My 27-year Quest to Overcome the State Explosion Problem

photo of Edmund Clarke Wednesday, October 8, 2008
306 Soda Hall (HP Auditorium)
4:00 - 5:00 pm

Edmund M. Clarke
Computer Science Department
Carnegie Mellon University

Downloadable PDF


Model Checking is an automatic verification technique for state-transition systems that are finite-state or that have finite-state abstractions. In the early 1980's in a series of joint papers with my graduate students E.A. Emerson and A.P. Sistla, we proposed that Model Checking could be used for verifying concurrent systems and gave algorithms for this purpose. At roughly the same time, Joseph Sifakis and his student J.P. Queille at the University of Grenoble independently developed a similar technique. Model Checking has been used successfully to reason about computer hardware and communication protocols and is beginning to be used for verifying computer software. By expressing a system's specifications in temporal logic, the Model Checker can perform an exhaustive search to determine if the specification is true. In those cases where the specification does not hold, the Model Checker produces a counterexample execution trace. We have found this feature to be extremely useful for finding obscure errors in complex systems. However, Model Checking is vulnerable to the state-explosion problem, which can occur if the system being verified has many processes that execute in parallel or complex data structures. In some cases, the state-explosion problem is inevitable, but over the past 27 years we have made considerable progress in overcoming this problem for certain classes of state-transition systems that occur often in practice. In this talk, I will describe what Model Checking is, how it works, and the main techniques that have been developed for combating the state-explosion problem.


Edmund M. Clarke received a B.A. degree in mathematics from the University of Virginia, Charlottesville, VA, in 1967, an M.A. degree in mathematics from Duke University, Durham NC, in 1968, and a Ph.D. degree in Computer Science from Cornell University, Ithaca NY, in 1976. After receiving his Ph.D., he taught in the Department of Computer Science, Duke University, for two years. In 1978 he moved to Harvard University, Cambridge, MA where he was an Assistant Professor of Computer Science in the Division of Applied Sciences. He left Harvard in 1982 to join the faculty in the Computer Science Department at Carnegie-Mellon University, Pittsburgh, PA. He was appointed Full Professor in 1989. In 1995 he became the first recipient of the FORE Systems Professorship, an endowed chair in the School of Computer Science. He was named a University Professor in 2008.

  Return to EECS Joint Colloquium