Wave equation numerical resolution: a comprehensive mechanized proof of a C program (original) (raw)
Résumé
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.
Nous prouvons formellement la correction d'un programme C implémentant un schéma numérique pour la résolution de l'équation des ondes acoustiques en dimension 1. Une telle implémentation introduit différents types d'erreurs : l'erreur de méthode due au schéma numérique et l'erreur d'arrondi due aux calculs en virgule flottante. Nous annotons ce programme C pour spécifier ces deux types d'erreur. Nous utilisons Frama-C pour générer les théorèmes qui garantissent la correction du code. Nous prouvons ces théorèmes à l'aide de solveurs SMT, de Gappa et de Coq. Un développement Coq important est nécessaire pour prouver l'adéquation du programme C au schéma numérique et pour borner les erreurs. À notre connaissance, c'est la première fois qu'un tel programme d'analyse numérique est complètement vérifié mécaniquement.
Mots clés
- Rounding error analysis
- Partial differential equation
- Acoustic wave equation
- Coq formal proof
- Proof of C program
- Convergence of numerical scheme
- Formal proof of numerical program
Domaines
Connectez-vous pour contacter le contributeur
https://inria.hal.science/hal-00649240
Soumis le : jeudi 12 juillet 2012-10:41:13
Dernière modification le : lundi 13 octobre 2025-09:44:14
Archivage à long terme le : jeudi 15 décembre 2016-22:36:35
Dates et versions
hal-00649240 , version 1 (07-12-2011)
hal-00649240 , version 2 (15-05-2012)
hal-00649240 , version 3 (12-07-2012)
Licence
Identifiants
- HAL Id : hal-00649240 , version 3
- ARXIV : 1112.1795
- DOI : 10.1007/s10817-012-9255-4
Citer
Sylvie Boldo, François Clément, Jean-Christophe Filliâtre, Micaela Mayero, Guillaume Melquiond, et al.. Wave equation numerical resolution: a comprehensive mechanized proof of a C program. Journal of Automated Reasoning, 2013, 50 (4), pp.423-456. ⟨10.1007/s10817-012-9255-4⟩. ⟨hal-00649240v3⟩
2477 Consultations
1324 Téléchargements