Wave equation numerical resolution: A comprehensive mechanized proof of a C program

Research output: Contribution to journalArticlepeer-review

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.

Original languageEnglish
Pages (from-to)423-456
Number of pages34
JournalJournal of Automated Reasoning
Volume50
Issue number4
DOIs
Publication statusPublished - 1 Jan 2013
Externally publishedYes

Keywords

  • Acoustic wave equation
  • Convergence of numerical scheme
  • Coq formal proof
  • Formal proof of numerical program
  • Partial differential equation
  • Proof of C program
  • Rounding error analysis

Fingerprint

Dive into the research topics of 'Wave equation numerical resolution: A comprehensive mechanized proof of a C program'. Together they form a unique fingerprint.

Cite this