Wave Equation Numerical Resolution: A Comprehensive Mechanized Proof of a C Program

  • Authors:
  • Sylvie Boldo;François Clément;Jean-Christophe Filliâtre;Micaela Mayero;Guillaume Melquiond;Pierre Weis

  • Affiliations:
  • ProVal, INRIA Saclay --- Île-de-France, Orsay cedex, France 91893 and LRI, UMR 8623, Université Paris-Sud, CNRS, Orsay cedex, France 91405;Pomdapi, INRIA Paris --- Rocquencourt, Le Chesnay cedex, France 78153;LRI, UMR 8623, Université Paris-Sud, CNRS, Orsay cedex, France 91405;LIPN, UMR 7030, Université de Paris-Nord, CNRS, Villetaneuse, France 93430 and LIP, Arénaire (INRIA Grenoble - Rhône-Alpes, CNRS UMR 5668, UCBL, ENS Lyon), Lyon, France 69364;ProVal, INRIA Saclay --- Île-de-France, Orsay cedex, France 91893 and LRI, UMR 8623, Université Paris-Sud, CNRS, Orsay cedex, France 91405;Pomdapi, INRIA Paris --- Rocquencourt, Le Chesnay cedex, France 78153

  • Venue:
  • Journal of Automated Reasoning
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

We formally prove correct a C program that implements a numerical scheme for the resolution of the one-dimensional acoustic wave equation. Such an implementation introduces errors at several levels: the numerical scheme introduces method errors, and floating-point computations lead to round-off errors. We annotate this C program to specify both method error and round-off error. We use Frama-C to generate theorems that guarantee the soundness of the code. We discharge these theorems using SMT solvers, Gappa, and Coq. This involves a large Coq development to prove the adequacy of the C program to the numerical scheme and to bound errors. To our knowledge, this is the first time such a numerical analysis program is fully machine-checked.