Team celtique

Overall Objectives
Scientific Foundations
New Results
Contracts and Grants with Industry
Other Grants and Activities

Section: New Results

Certified Static Analysis and Compilation

Participants : Frédéric Besson, Sandrine Blazy, David Cachera, Thomas Jensen, André Oliveira Maronèze, David Pichardie.

Certified Abstract Interpretation

Proving the correctness of an analyzer is based on semantic properties, and becomes difficult to ensure when complex analysis techniques are involved. In [20] we propose to adapt the general theory of static analysis by abstract interpretation to the framework of constructive logic. Implementing this formalism into the Coq proof assistant then allows for automatic extraction of certified analyzers. We focus in this work on a simple imperative language and present the computation of fixpoints by widening/narrowing and syntax-directed iteration techniques.

Certified Polyhedral Analysis

In [17] we develop a certified checker in Coq that is able to certify the results of a polyhedral array-bound analysis for an imperative, stack-oriented bytecode language with procedures, arrays and global variables. The checker uses, in addition to the analysis result, certificates which at the same time improve efficiency and make correctness proofs much easier. In particular, our result certifier avoids complex polyhedral computations such as convex hulls and is using easily checkable inclusion certificates based on Farkas lemma. Benchmarks demonstrate that our approach is effective and produces certificates that can be efficiently checked not only by an extracted Caml checker but also directly in Coq.

Certified Generation of Linear Arithmetic Proofs

In [32] , we show how to generate checkable certificate for linear arithmetic using an inexact inexact LP solver. Off-the-shelf linear programming (LP) solvers trade soundness for speed: for efficiency, the arithmetic is not exact rational arithmetic but floating-point arithmetic. As a side-effect the results come without any formal guarantee and cannot be directly used for deciding linear arithmetic. In this work we explain how to design a sound procedure for linear arithmetic built upon an inexact floating-point LP solver. Our approach relies on linear programming duality to instruct a black-box off-the-shelf LP solver to output, when the problem is not satisfiable, an untrusted proof certificate. We present a heuristic post- processing of the certificate which accommodates for certain numeric inaccuracies. Upon success it returns a provably correct proof witness that can be independently checked. Our preliminary results are promis- ing. For a benchmark suite extracted from SMT verification problems the floating-point LP solver returns a result for which proof witnesses are successfully and efficiently generated. The proof witnesses are used by our Certified Polyhedral Analysis.

Certified compilation

Iterated Register Coalescing (IRC) is a widely used heuristic for performing register allocation via graph coloring. In [18] , we present a formal verification of the whole IRC algorithm, that can be used as a reference for IRC. The automatic extraction of our IRC algorithm yields a program with competitive performance. This work has been integrated into the CompCert verified compiler.

In 2010, Airbus evaluated the CompCert compiler and tested it on critical flight control software. A WCET (Worst-Case Execution Time) analysis was performed by Airbus to estimate the performance of the generated code. The results were very encouraging. A promising way to improve these results is to give extra information to the WCET analysis.

Since the recent beginning of André Oliveira Maronèze Ph.D. thesis's, and in cooperation with Isabelle Puaut (ALF project team), we are designing an annotation language dedicated to WCET properties of C programs that will be integrated in the CompCert compiler. We are also studying how to generate some of these properties from the CompCert compiler and how to compile them.


Logo Inria