Formal Verification for Numerical Computations, and the Other Way Around Guillaume Melquiond
Total Page:16
File Type:pdf, Size:1020Kb
Formal Verification for Numerical Computations, and the Other Way Around Guillaume Melquiond To cite this version: Guillaume Melquiond. Formal Verification for Numerical Computations, and the Other Way Around. Computer Arithmetic. Université Paris Sud, 2019. tel-02194683 HAL Id: tel-02194683 https://tel.archives-ouvertes.fr/tel-02194683 Submitted on 25 Jul 2019 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Habilitation a` Diriger des Recherches pr´esent´ee`al'Universit´eParis-Sud Sp´ecialit´e: Informatique Guillaume Melquiond Formal Verification for Numerical Computations, and the Other Way Around Soutenue le 1er avril 2019 devant la commission d'examen constitu´eede Luc Jaulin rapporteurs David Monniaux Warwick Tucker Yves Bertot examinateurs Florent Hivert Claude Marche´ Jean-Michel Muller Sylvie Putot Pr´eface J'ai soutenu ma th`ese le 21 novembre 2006, th`esequi s'intitulait De l'arithm´etiqued'in- tervalles `ala certification de programmes . Si je devais la r´e´ecrireaujourd'hui, j'emploierais plut^otle mot v´erificationque certification, mais cela ne changerait pas grand chose `ala per- tinence et `al'actualit´ede son sujet. N´eanmoins, douze ann´eesont pass´eet mes th´ematiques de recherche se sont diversifi´ees.Il est donc temps pour moi de m'attaquer `al'habilitation. Et comme la science n'avance pas seulement `acoup de publications r´evolutionnaires dans des congr`es,ce document d'habilitation est aussi l'occasion pour moi de mettre en perspective mes travaux de recherche et de revenir sur les bonnes id´ees qui ont su r´esisterau nombre des ann´eesmais aussi sur celles qui se sont plus tard av´er´ees^etredes impasses. Remerciements Avant d'entrer dans le vif du sujet, je tiens `aremercier Luc Jaulin, David Monniaux et Warwick Tucker pour avoir accept´ed'^etrerapporteurs de cette habilitation. J'aimerais remercier Sylvie Boldo, mon alter ego en mati`erede recherche en arithm´etique des ordinateurs et en preuves formelles. J'aimerais aussi remercier Christine Paulin and Claude March´ede m'avoir accueilli dans leur ´equipe de recherche et cela malgr´ele large foss´equi semblait exister entre nos th´ematiquesde recherche. Il y a aussi toutes les personnes avec qui j'ai eu de longues et fructueuses discussions et sans qui nombre des travaux pr´esent´esdans ce document n'existeraient pas. Je tiens donc `a remercier Andrei Paskevich, Arnaud Tisserand, Assia Mahboubi, Bruno Salvy, Catherine Le- lay, C´esarMu~noz,Christoph Lauter, Claude-Pierre Jeannerod, Cl´ement Fumex, Cody Roux, Daisuke Ishii, Enrico Tassi, Erik´ Martin-Dorel, Florent de Dinechin, Fran¸coisBobot, Fran¸cois Cl´ement, Herv´eBr¨onnimann,Jacques-Henri Jourdan, Jean-Christophe Filli^atre,Jean-Michel Muller, Laurence Rideau, Laurent Th´ery, Marc Daumas, Marc Mezzarobba, Maxime D´en`es, Micaela Mayero, Mohamed Iguernelala, Nathalie Revol, Nicolas Brisebarre, Nicolas Louvet, Pascal Cuoq, Paul Zimmermann, Pierre Roux, Rapha¨elRieu-Helft, Sylvain Conchon, Sylvain Pion, Thomas Sibut-Pinote, Xavier Leroy et Yves Bertot. Et si j'ai oubli´equelqu'un dans cette longue liste, ce qui est vraisemblablement le cas, j'en suis vraiment navr´e.J'aimerais aussi remercier celles qui m'ont apport´eleur soutien administratif au cours de cette p´eriode : Katia Evrat´ et R´egineBricquet. Comme ils n'ont pas encore eu l'occasion d'appara^ıtre, je tiens `aremercier Florent Hivert et Sylvie Putot pour avoir accept´ede participer `ala commission d'examen de cette habilitation. Et finalement, je tiens `aremercier les membres de mon ´equipe et mon entourage proche sans qui je n'aurais pas pu effectuer toutes ces ann´eesde recherche dans de bonnes conditions. i R´esum´e Mes travaux de recherche visent `afavoriser l'utilisation des outils de v´erificationformelle et en particulier les approches d´eductives dans le domaine du calcul num´erique.En effet, les programmes utilisent rarement l'arithm´etiquer´eellepour effectuer leurs calculs et ils se rabattent g´en´eralement sur des arithm´etiquesapproch´eestelles que l'arithm´etique`avirgule flottante, pour des raisons d’efficacit´e.L'emploi de ces arithm´etiquesentra^ınedes erreurs de calcul qui peuvent emp^echer un programme de s'ex´ecutercomme pr´evu.Il est donc important de les prendre en compte pour garantir la correction des programmes qui effectuent des calculs num´eriques.La subtilit´ede l'arithm´etique `avirgule flottante rend malheureusement l'exercice p´erilleux,d'o`ula n´ecessit´ede d´evelopper des m´ethodes qui permettent de rendre s^urce travail de v´erification. Arithm´etiqued'intervalles L'arithm´etiqued'intervalles consiste `arepr´esenter une valeur r´eelle id´ealeen l'encadrant par deux valeurs approch´ees.Il s'agit d'une fa¸consimple et plut^otefficace de garantir des pro- pri´et´essur des nombres r´eelssans pour autant s'appuyer sur une arithm´etiqueen pr´ecisionar- bitraire. Pour populariser l'arithm´etiqued'intervalles, j'ai ´ecrit la biblioth`equeC++ g´en´erique Boost.Interval [BMP06b] qui est `ala base de l'outil Gappa [DM10] mais qui a aussi servi `a invalider une conjecture math´ematiquepar le calcul [MNZ13]. J'ai aussi contribu´e`ala nor- malisation de l'arithm´etiqued'intervalles [EM09, IEE15] et `ades propositions en ce sens pour la norme C++ [BMP06c, MP09]. M^emesi, sur le principe, l'arithm´etiqued'intervalles garantit les propri´et´esdes valeurs qu'elle encadre, il subsiste le risque que son impl´ementation ou celle de l'arithm´etiquesous- jacente sur les bornes approch´eessouffrent de bogues. Pour augmenter la confiance dans les preuves obtenues par arithm´etiqued'intervalles, j'ai d´evelopp´edes biblioth`equesde calcul en virgule flottante et par intervalles qui s'ex´ecutent raisonnablement efficacement dans la logique du syst`emeformel Coq et j'ai formellement prouv´eleur correction [Mel08b, Mel12]. Cela a donn´ela biblioth`equeCoqInterval qui contient une tactique capable de prouver auto- matiquement et formellement des propri´et´essur des fonctions `avaleurs r´eelles,par exemple des bornes sur l'erreur commise quand un polyn^omed'approximation est utilis´ee`ala place d'une fonction trigonom´etrique. L'arithm´etiqued'intervalles pr´esente un inconv´enient majeur : les encadrements qu'elle calcule sont parfois si larges qu'ils n'apportent aucune information utile sur les valeurs en- cadr´ees.L'un des d´efisest donc d’affiner les encadrements sans pour autant faire exploser les temps de calcul. Cela a conduit `aenrichir CoqInterval d'une arithm´etique `abase de mod`eles de Taylor [MDM16]. Cette am´eliorationa permis de grandement automatiser la v´erification iii iv RESUM´ E´ formelle de l'impl´ementation en virgule flottante de fonctions ´el´ementaires [BM17]. Cette am´eliorationa aussi rendu possible le calcul efficace et v´erifi´ed'encadrements, non plus seule- ment de fonctions, mais aussi d'int´egralespropres [MMSP16]. L'´etape suivante consiste `as'attaquer `ades int´egralesimpropres. De nombreuses preuves math´ematiquesmodernes (en combinatoire ou en th´eoriedes nombres par exemple) s'appuient sur le calcul num´eriqueapproch´ed'int´egrales impropres (pour cause d'absence de formules closes) et souffrent donc du risque d'^etreinvalid´eessi les calculs s'av`erent incorrects. L'ob- jectif est donc d'´etendrele formalisme `abase d'arithm´etiqued'intervalles au calcul de telles int´egralesimpropres, la difficult´e´etant que les m´ethodes num´eriquesusuelles ne s'appliquent plus et qu'une dose de calcul symbolique est alors n´ecessaire[MMSP19]. Un autre axe de recherche concerne le calcul d'encadrements de fonctions qui ne sont plus d´efiniesexplicite- ment par une formule close mais implicitement par une ´equationdiff´erentielle. A` long terme, l'objectif est de convaincre les math´ematiciensqu'ils n'ont plus besoin de s'appuyer sur des outils non v´erifi´esparce que les m´ethodes v´erifi´eessont souvent aussi puissantes. Arithm´etique`avirgule flottante L'arithm´etiqued'intervalles garantit ses r´esultatsen calculant des valeurs approch´eesqui encadrent les valeurs exactes. L'usage veut malheureusement, pour des raisons d’efficacit´e, que l'on ne calcule qu'une seule valeur flottante en esp´erant que la valeur exacte n'en est pas trop ´eloign´ee.Une analyse de l'erreur commise permet n´eanmoinsde retrouver l'information n´ecessairepour garantir la correction du r´esultat.Les multiples sp´ecificit´esde l'arithm´etique `avirgule flottante peuvent rendre une telle analyse non seulement fastidieuse mais aussi incorrecte. Pour rendre les analyses de code flottant correctes, je m'int´eresse`ala formalisation de cette arithm´etique.En plus de la partie calculatoire pr´esente dans CoqInterval, j'ai d´evelopp´e une formalisation g´en´eriquede l'arithm´etique`avirgule flottante nomm´eeFlocq [BM11]. Arm´e de cette biblioth`eque, il devient alors possible de s'attaquer `ala v´erification for- melle en Coq de nombreux algorithmes subtils [BM17] : discriminant pr´ecis[BDKM06], pr´edicatsg´eom´etriquesrobustes [MP07], ´emulation du fused-multiply-add [BM08] et autres [RZBM09, MDMM13]. Ces travaux sur l'arithm´etique`avirgule flottante ont aussi ´et´el'occa- sion d'´ecrireplusieurs livres [MBdD+10, BM17, MBdD+18] et de participer `ala normalisation de cette arithm´etique[IEE08]. Cependant, il ne suffit pas de pouvoir v´erifierformellement les preuves d'algorithmes flottants, encore faut-il qu'elles soient humainement r´ealisables. Pour cela, je me consacre `a d´evelopper des m´ethodes pour en automatiser la majeure partie.