Extracting a data flow analyser in constructive logic

A constraint-based data flow analysis is formalised in the specification language of the Coq proof assistant. This involves defining a dependent type of lattices together with a library of lattice functors for modular construction of complex abstract domains. Constraints are represented in a way that allows for both efficient constraint resolution and correctness proof of the analysis with respect to an operational semantics. The proof of existence of a solution to the constraints is constructive which means that the extraction mechanism of Coq provides a provably correct data flow analyser in Ocaml from the proof. The library of lattices and the representation of constraints are defined in an analysis-independent fashion that provides a basis for a generic framework for proving and extracting static analysers in Coq.

[1]  Igor Siveroni Operational semantics of the Java Card Virtual Machine , 2004, J. Log. Algebraic Methods Program..

[2]  Ewen Denney The synthesis of a Java card tokenisation algorithm , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[3]  David Pichardie,et al.  A Java Card CAP converter in PVS , 2003, Electron. Notes Theor. Comput. Sci..

[4]  Gilles Barthe,et al.  A Formal Executable Semantics of the JavaCard Platform , 2001, ESOP.

[5]  Chris Okasaki,et al.  Fast Mergeable Integer Maps , 1998 .

[6]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[7]  Yves Bertot,et al.  Formalizing a JVML Verifier for Initialization in a Theorem Prover , 2001, CAV.

[8]  Tobias Nipkow,et al.  Verified Bytecode Verifiers , 2001, FoSSaCS.

[9]  Sorin Lerner,et al.  Automatically proving the correctness of compiler optimizations , 2003, PLDI '03.

[10]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[11]  Flemming Nielson,et al.  Flow Logics for Constraint Based Analysis , 1998, CC.

[12]  Daniel Le Métayer,et al.  Model Checking Security Properties of Control Flow Graphs , 2001, J. Comput. Secur..

[13]  Gilles Barthe,et al.  Jakarta: A Toolset for Reasoning about JavaCard , 2001, E-smart.

[14]  Tobias Nipkow,et al.  Veried Bytecode Veriers , 2002 .

[15]  Lilian Burdy,et al.  Formal development of an embedded verifier for Java Card byte code , 2002, Proceedings International Conference on Dependable Systems and Networks.

[16]  F. Prost Interpretation de l'analyse statique en theorie des types , 1999 .