EN FR
EN FR


Section: New Results

Floating-Point and Numerical Programs

  • C. Marché published in the Science of Computer Programming journal [22] a detailed description of an industrial research initially conducted in the context of the U3CAT project (ended in 2012) on static analysis of critical C code. The code involves floating-point computations on quaternions that should be of norm 1. Because of the round-off errors, a drift of this norm is observed over time. In this work a bound on this drift is determined and formally proved correct, using Frama-C, Jessie and Why3. Proofs are done using automated provers and in a few complex cases the Coq proof assistant. The published version is up to date with the recent versions of those tools, and the development is available on our gallery at http://toccata.lri.fr/gallery/quat.en.html

  • S. Boldo, C. Lelay, and G. Melquiond worked on the Coquelicot library, designed to be a user-friendly Coq library about real analysis. An easier way of writing formulas and theorem statements is achieved by relying on total functions in place of dependent types for limits, derivatives, integrals, power series, and so on. To help with the proof process, the library comes with a comprehensive set of theorems and some automation. We have exercised the library on several use cases: in an exam at university entry level, for the definitions and properties of Bessel functions, and for the solution of the one-dimensional wave equation. These results are published in the journal Mathematics in Computer Science [19] .

  • S. Boldo and G. Melquiond, with J.-H. Jourdan and X. Leroy (Gallium team, Inria Paris - Rocquencourt) extended the CompCert compiler to get the first formally verified C compiler that provably preserves the semantics of floating-point programs This work, published in the Journal of Automated Reasoning [18] , also covers the formalization of numerous algorithms of conversion between integers and floating-point numbers.

  • S. Boldo, C. Lelay, and G. Melquiond, have conducted a survey on the formalization of real arithmetic and real analysis in various proof systems. This work, published in the journal Mathematical Structures in Computer Science [20] , details the axioms, definitions, theorems, and methods of automation, available in these systems.

  • É. Martin-Dorel and G. Melquiond worked on integrating the CoqInterval and CoqApprox libraries into a single package. The CoqApprox library is dedicated to computing verified Taylor models of univariate functions so as to compute approximation errors. The CoqInterval library reuses this work to automatically prove bounds on real-valued expressions. A large formalization effort took place during this work, so as to get rid of all the holes remaining in the formal proofs of CoqInterval. It was also the chance to perform a comparison between numerous decision procedures dedicated to proving nonlinear inequalities involving elementary functions. A report is available [43] .

  • S. Boldo, J.-C. Filliâtre, and G. Melquiond, with F. Clément and P. Weis (POMDAPI team, Inria Paris - Rocquencourt), and M. Mayero (LIPN), completed the formal proof of a numerical analysis program: the second-order centered finite-difference scheme for the one-dimensional acoustic wave. This proof was published with a focus towards numerical analysts, in the journal Computers and Mathematics with Applications [17] .

  • P. Roux formalized the influence of double rounding on the accuracy of floating-point arithmetic operators. In particular, this includes all the corner cases that were ignored from Figueroa's original pen-and-paper proof. Results appeared in the Journal of Formalized Reasoning [24] .

  • P. Roux formalized a theory of numerical analysis for bounding the round-off errors of a floating-point algorithm. This approach was applied to the formal verification of a program for checking that a matrix is semi-definite positive. The challenge here is that testing semi-definiteness involves algebraic number computations, yet it needs to be implemented using only approximate floating-point operations. A report is available [45] .