Verifying a Local Generic Solver in Coq

Fixpoint engines are the core components of program analysis tools and compilers. If these tools are to be trusted, special attention should be paid also to the correctness of such solvers. In this paper we consider the local generic fixpoint solver RLD which can be applied to constraint systems x ⊇ fx, x ∈ V, over some lattice D where the right-hand sides fx are given as arbitrary functions implemented in some specification language. The verification of this algorithm is challenging, because it uses higher-order functions and relies on side effects to track variable dependences as they are encountered dynamically during fixpoint iterations. Here, we present a correctness proof of this algorithm which has been formalized by means of the interactive proof assistant COQ.

[1]  Martin Hofmann,et al.  Elimination of Ghost Variables in Program Logics , 2007, TGC.

[2]  Niels Jørgensen Finding fixpoints in finite function spaces using neededness analysis and chaotic iteration , 1994 .

[3]  Helmut Seidl,et al.  A Faster Solver for General Systems of Equations , 1999, Sci. Comput. Program..

[4]  Robin Milner,et al.  Theories for the Global Ubiquitous Computer , 2004, FoSSaCS.

[5]  Helmut Seidl,et al.  Region Analysis for Race Detection , 2009, SAS.

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

[7]  Peeter Laud,et al.  Computationally sound secrecy proofs by mechanized flow analysis , 2006, CCS '06.

[8]  Helmut Seidl,et al.  Propagating Differences: An Efficient New Fixpoint Algorithm for Distributive Constraint Systems , 1998, Nord. J. Comput..

[9]  Solange Coupet-Grimal,et al.  A Uniform and Certified Approach for Two Static Analyses , 2004, TYPES.

[10]  Martin Hofmann,et al.  What Is a Pure Functional? , 2010, ICALP.

[11]  Christian Fecht GENA - A Tool for Generating Prolog Analyzers from Specifications , 1995, SAS.

[12]  David Cachera,et al.  Extracting a Data Flow Analyser in Constructive Logic , 2004, ESOP.

[13]  Hugo Herbelin,et al.  The Coq proof assistant : reference manual, version 6.1 , 1997 .

[14]  Pascal Van Hentenryck,et al.  A Universal Top-Down Fixpoint Algorithm , 1992 .

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

[16]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[17]  Maribel Fernández,et al.  Curry-Style Types for Nominal Terms , 2006, TYPES.