Certification des raisonnements formels portant sur des systèmes d'information critiques
Auteur / Autrice : | Amira Henaien |
Direction : | Maurice Margenstern, Sorin Stratulat |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 11/03/2015 |
Etablissement(s) : | Université de Lorraine |
Ecole(s) doctorale(s) : | École doctorale IAEM Lorraine - Informatique, Automatique, Électronique - Électrotechnique, Mathématiques de Lorraine (1992-....) |
Partenaire(s) de recherche : | Laboratoire : LITA - Laboratoire d'Informatique Théorique et Appliquée - EA 3097 |
Jury : | Président / Présidente : Stephan Merz |
Examinateurs / Examinatrices : Xavier Urbain | |
Rapporteurs / Rapporteuses : Evelyne Contejean, Olga Kouchnarenko |
Résumé
Les preuves par récurrence sont parfaitement adaptées au raisonnement sur des structures de données non-bornées, comme par exemple les entiers et les listes, ou, de manière plus générale, sur des ensembles d’éléments non vides munis d’ordres noethériens. Leur domaine d’application est très vaste, une utilité particulière portant sur la validation des propriétés d’applications industrielles dans des domaines critiques tels que les télécommunications et les cartes à puces. Le principe de récurrence noethérienne est à la base d’un ensemble de techniques de preuve par récurrence modernes, dont celles basées sur la récurrence implicite. Dans cette thèse, nous nous intéresserons à l’intégration du raisonnement par récurrence implicite tel qu’il est implémenté dans le démonstrateur Spike en utilisant l’environnement de preuve certifié Coq. Basé sur la récurrence implicite, Spike est capable de raisonner automatiquement sur des théories conditionnelles de premier ordre. L’implémentation de Spike n’est pas encore certifiée, même si les fondements théoriques sous-jacents ont été approuvés à plusieurs reprises par la communauté scientifique. Une alternative convenable serait de certifier seulement les preuves générées par Spike. Dans ce cas, le processus de certification doit être automatique car les scripts de preuves de Spike sont souvent longs. Des travaux précédents ont montré la possibilité de certifier automatiquement des preuves par récurrence implicite générées par Spike à l’aide de l’environnement certifié de l’assistant de preuve Coq. Nous proposerons des nouvelles tactiques Coq qui seront capables de prouver automatiquement des théorèmes par récurrence implicite. Deux approches seront étudiées. La première approche consiste à utiliser Spike comme un outil externe. Elle est limitée au traitement des spécifications Coq qui peuvent être traduites dans des spécifications conditionnelles, ainsi qu’à des théorèmes convertibles dans des équations conditionnelles. Les traces de preuves générées par Spike sont ensuite traduites dans des scripts Coq qui sont finalement validés par son noyau. Une autre limitation est due à la traduction des applications d’un sous-ensemble de règles d’inférence de Spike. La deuxième approche est l’utilisation des stratégies à la Spike pour construire automatiquement des preuves par récurrence implicite dans Coq. Cette approche se base sur des tactiques Coq qui simulent des règles d’inférence de Spike pour générer de nouveaux sous-buts. Par rapport à la première approche, ces tactiques peuvent utiliser des techniques de raisonnement de Coq qui ne sont pas présentes dans Spike et ouvre la possibilité de mélanger des étapes de preuves automatiques et manuelles. Ces deux approches ont été mises en œuvre et testées sur différents exemples dont des lemmes utilisés dans la preuve de validité de l’algorithme de conformité du protocole de télécommunication ABR