Characteristic formulae for the verification of imperative programs

Arthur Charguéraud
2011 Proceeding of the 16th ACM SIGPLAN international conference on Functional programming - ICFP '11  
In previous work, we introduced an approach to program verification based on characteristic formulae. The approach consists of generating a higher-order logic formula from the source code of a program. This characteristic formula is constructed in such a way that it gives a sound and complete description of the semantics of that program. The formula can thus be exploited in an interactive proof assistant to formally verify that the program satisfies a particular specification. This previous
more » ... was, however, only concerned with purelyfunctional programs. In the present paper, we describe the generalization of characteristic formulae to an imperative programming language. In this setting, characteristic formulae involve specifications expressed in the style of Separation Logic. They also integrate the frame rule, which enables local reasoning. We have implemented a tool based on characteristic formulae. This tool, called CFML, supports the verification of imperative Caml programs using the Coq proof assistant. Using CFML, we have formally verified nontrivial imperative algorithms, as well as CPS functions, higher-order iterators, and programs involving higher-order stores.
doi:10.1145/2034773.2034828 dblp:conf/icfp/Chargueraud11 fatcat:oufahh7crnccrhsmdfuexcmnwa