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

Abstract

There are two main types of formal methods for program proof: general methods, which are aimed at all types of programs and will be presented in this lecture, andmodel-checking methods, which are mainly concerned with finite-state-space programs and electronic circuits and will be covered in lectureno. 5 on March 25, 2015.

The need to treat programs as mathematical objects in their own right was recognized by A. Turing as early as 1949. He introduced the notion of assertion, associating a logical predicate with a program control point, and the importance of the notion of well-founded order in showing program termination. His assertion-based approach is the first to be covered in this lecture. It has been extended and perfected by R. Floyd, C.A.R. Hoare, E.W. Dijkstra and many others, resulting in a comprehensive theory and practice of programming language logic definition and program verification, initially applicable to imperative sequential programs. The notion of assertion was then extended to that of contract(assume/guarantee) to be respected by the functions or modules of a program, applicable also to object and parallel languages.