|
| Shelter Island, San Diego, California, USA Shelter Pointe Hotel and Marina November 6-10, 2000 Eighth International Symposium on the Foundations of Software Engineering |
|
"Model Checking Foundations",
: Alan Emerson (University of Texas at Austin) Model checking is an automatic method for verifying correctness of (finite state) reactive programs with respect to temporal logic specifications. The method is algorithmic, exploiting the fixpoint characterizations of the temporal operators to permit a systematic and efficient search of the system state graph. A resulting advantage is that not only does it cater for verification of correctness, but also debugging of incorrect programs through a counter-example facility that program developers find useful. The primary limitation to model checking is the state explosion problem; a related limitation is that the basic method is only applicable to finite state programs. In this tutorial, we will introduce the basics of temporal logic, its use in describing correctness properties, and the ideas underlying efficient model checking algorithms. We discuss the use of existing model checking technology in industry, describing the use of model checking tools for such applications as hardware verification and software protocol validation. We then overview the most promising methods for ameliorating state explosion, and techniques for handling classes of infinite state and parameterized asynchronous software systems. Model checking originated as part of Alan Emerson's dissertation work. His work also introduced the CTL branching time logic, which is widely used in industry with verification tools such as SMV, VIS, and IBM's RuleBase. The use of the Mu-calculus as a uniform formalism subsuming most commonly used temporal or modal logics of programs was proposed in 1986, along with polynomial time model checking algorithms for useful fragments of the Mu-calculus. Nowadays much of the instructor's time and energy is devoted to methods for overcoming state explosion, the chief obstacle to the more widespread application of model checking. Emerson serves on the editorial boards for ACM Transactions on Computational Logic , Formal Aspects of Computing, and Formal Methods in System Design, and is presently Bruton Centennial Professor of Computer Sciences at The University of Texas at Austin. Emerson is co-winner of the 1998 ACM Kanellakis Theory and Practice Award for his foundational role in the invention of symbolic model checking. "Software Model Checking with Spin", : Gerard J. Holzmann (Bell Labs) Spin is a logic model checking tool developed at Bell Labs Research. It is optimized specifically for the verification of distributed software (not hardware) systems. In the last few years this tool has been applied to increasingly complex software systems in routine production environments, with some notable results. In this tutorial I will review the automata theoretic foundation for Spin, and discuss some of the algorithmsthat make it efficient. We will also discuss how useful preprocessing tools to Spin can be built that can extract Spin models from implementation level program code, e.g. as written in unrestricted ANSI-C. Slicing and data abstraction techniques can be used to optimize the verification models based on user-specified requirements (which can be likened to 'test-objectives' from more traditional methods). Gerard J. Holzmann received his Ph.D. in 1979 in Technical Sciences from Delft University in The Netherlands. He joined the computing sciences research group at Bell Labs, Murray Hill in 1980. Upon joining Bell Labs Dr. Holzmann was asked to formally verify the correctness of a production telephone switch. In 1981 he wrote a first version of a verification system to solve this problem (Pan). Spin, a more recent attempt to solve the same problem, was written in 1989, and has been publicly distributed since 1991. It is rumored to be one of the most efficient and most widely used software model checking systems today. Top of Page |
| Eighth International Symposium on the Foundations of Software Engineering |
| Maintained by the Computer Science Web Team |