Amphithéâtre Maurice Halbwachs, Site Marcelin Berthelot
Open to all
-

Abstract

This lecture concludes the general presentation of formal verification methods with model-checking. This method is quite different from the previous ones, in that it is primarily concerned with finite-state programs, those for which it is at least conceptually possible to completely unroll all possible executions in finite time and space. What's more, unlike the methods described above, model-checking is primarily concerned with parallel programs. Parallelism can be synchronous, as in the synchronous circuits and languages presented in previous years, or asynchronous, as in communication protocols, networks and distributed algorithms. Model-checking was born in the early 1980s, almost simultaneously in two places: Grenoble with J-P. Queille and J. Sifakis, who developed the CESAR system and its temporal logic, and the USA with E. Clarke and E. Emerson, who developed the CTL temporal logic and the EMV system. This work earned Clarke, Emerson and Sifakis the 2007 Turing Award. They themselves built on the work of Amir Pnueli (Turing Award 1996) on temporal logic. Model-checking has developed considerably since then, and is certainly the most widely used formal method in industry, particularly in circuit CAD.

The basic idea is to construct a graph of all possible executions of a program, called its model. This model can take the form of a Kripke structure (logician and philosopher of modal logic), i.e. a graph where states are labeled by elementary predicates, or a transition structure, where labels are carried by transitions between states. Once constructed, the model becomes independent of the language that generated it. A popular way of reasoning about a model is to use temporal logics, which define temporal properties using elementary properties of states or transitions and quantifiers on the states or paths of its graph. In this way, we can express and verify properties of safety (absence of bugs), such as "at no time can the elevator travel with the door open", absence of execution deadlocks, or liveliness, such as "the elevator will eventually respond to all passenger requests" or "each process will infinitely often obtain the shared resource if it requests it infinitely often".