Certified Complexity (CerCo)

We provide an overview of the FET-Open Project CerCo (‘Certified Complexity’). Our main achievement is the development of a technique for analysing non-functional properties of programs (time, space) at the source level with little or no loss of accuracy and a small trusted code base. The core component is a C compiler, verified in Matita, that produces an instrumented copy of the source code in addition to generating object code. This instrumentation exposes, and tracks precisely, the actual (non-asymptotic) computational cost of the input program at the source level. Untrusted invariant generators and trusted theorem provers may then be used to compute and certify the parametric execution time of the code.

[1]  Paolo Tranquilli Indexed Labels for Loop Iteration Dependent Costs , 2013, QAPL.

[2]  Liliana Cucu-Grosjean,et al.  PROARTIS: Probabilistically Analysable Real-Time Systems , 2012 .

[3]  Roberto M. Amadio,et al.  Certifying and Reasoning on Cost Annotations in C Programs , 2012, FMICS.

[4]  Andrea Asperti,et al.  The Matita Interactive Theorem Prover , 2011, CADE.

[5]  Alan D. George,et al.  RapidIO for radar processing in advanced space systems , 2007, TECS.

[6]  Pierre Jouvelot,et al.  The Type and Effect Discipline , 1994, Inf. Comput..

[7]  Liliana Cucu-Grosjean,et al.  PROARTIS: Probabilistically Analyzable Real-Time Systems , 2013, TECS.

[8]  Nikolaj Bjørner,et al.  Automated Deduction - CADE-23 - 23rd International Conference on Automated Deduction, Wroclaw, Poland, July 31 - August 5, 2011. Proceedings , 2011, CADE.

[9]  François Bobot,et al.  Separation Predicates: A Taste of Separation Logic in First-Order Logic , 2012, ICFEM.

[10]  Martin Hofmann,et al.  The Embounded project (project start paper) , 2005, Trends in Functional Programming.

[11]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[12]  Ajitha Rajan,et al.  Requirements Coverage as an Adequacy Measure for Conformance Testing , 2008, ICFEM.

[13]  Ian Stark,et al.  Randomised Testing of a Microprocessor Model Using SMT-Solver State Generation , 2014, FMICS.

[14]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[15]  Brian Campbell,et al.  An Executable Semantics for CompCert C , 2012, CPP.

[16]  Xavier Leroy,et al.  Formal verification of a realistic compiler , 2009, CACM.

[17]  Claudio Sacerdoti Coen,et al.  On the Correctness of an Optimising Assembler for the Intel MCS-51 Microprocessor , 2012, CPP.

[18]  Roberto M. Amadio,et al.  Certifying and Reasoning on Cost Annotations of Functional Programs , 2011, FOPARA.

[19]  Jakob Engblom,et al.  The worst-case execution-time problem—overview of methods and survey of tools , 2008, TECS.