Thèse soutenue

Preuves automatiques par récurrence dans les théories conditionnelles

FR  |  
EN
Auteur / Autrice : Adel Bouhoula
Direction : Michaël Rusinowitch
Type : Thèse de doctorat
Discipline(s) : Sciences appliquées
Date : Soutenance en 1994
Etablissement(s) : Nancy 1
Partenaire(s) de recherche : autre partenaire : Université Henri Poincaré Nancy 1. Faculté des sciences et techniques

Résumé

FR

Aujourd'hui, l'informatique intervient dans des systèmes de plus en plus critiques pour la sécurité; citons, par exemple, l'aéronautique, les transports, la surveillance des centrales nucléaires ou les appareils de contrôle des anesthésistes. Pour plus de sureté dans le fonctionnement des systèmes informatiques, il devient nécessaire de prouver leur correction par raisonnements logiques automatisés. Dans ce cadre plusieurs démonstrateurs ont été conçus, parmi lesquels nous pouvons citer l'un des plus célèbres: celui de Boyer et Moore qui a permis d'effectuer des taches mathématiques de plus haut niveau et de valider plusieurs applications industrielles. A l'heure actuelle, l'une des plus grandes limitations dans les outils de vérification formelle de systèmes informatiques est leur cout. En effet, la plupart des démonstrateurs actuels construisent les démonstrations pas à pas et nécessitent de fréquentes interventions de l'utilisateur. C'est pourquoi, nous avons pris comme objectif d'élaborer un système de preuves automatiques nécessitant un minimum d'interaction avec l'utilisateur. Nous avons proposé une nouvelle méthode de récurrence implicite reposant sur la notion d'ensemble test qui peut être considéré comme une approximation finie du modèle initial associé à la spécification. Le principal avantage de cette méthode est qu'elle permet l'utilisation de nombreuses techniques de simplification telles que la réécriture contextuelle et l'analyse par cas. Elle permet aussi la manipulation des équations non orientables et la simplification des conjectures entre elles, cette dernière simule ainsi la récurrence simultanée dont la gestion est difficile, voire impossible dans les autres systèmes de preuve. Notre approche ne nécessite pas de hiérarchie entre les lemmes à prouver: chaque lemme intermédiaire engendré est ajouté à l'ensemble des conjectures initiales et aucune priorité ne lui est attachée. D'autre part, grâce aux ensembles test, nous pouvons réfuter des conjectures non valides dans le modèle initial. En particulier, si la théorie est présentée par un système de règles conditionnelles convergent sur les termes clos tel que les fonctions sont complètement définies à l'aide de constructeurs libres, la méthode détecte toute conjecture qui n'est pas valide dans le modèle initial. Nous avons également adapte la méthode aux spécifications paramétrées qui permettent une meilleure modularité, et de ce fait, décomposent les preuves mélangeant plusieurs théories en des preuves séparées plus simples. Enfin, la méthode s'applique également aux théories sans constructeurs. Les algorithmes issus de nos travaux sont implantes dans le système Spike a l'aide du langage caml light. Spike est le seul système qui permet de réfuter d'une manière totalement automatique (i. E. Sans interaction avec l'utilisateur et sans heuristique) des conjectures non valides et non triviales en construisant des contre-exemples. Un certain nombre de problèmes difficiles voire inaccessibles pour les autres systèmes tels que NQTHM, RRL et Clam ont pu être démontrés automatiquement (arithmétique élémentaire, circuits, correction de tris, invariants dans le calcul des situations,. . . ) ou avec une interaction minimale (théorème du binôme, tour de carte de Gilbreath avec 2 lemmes,. . . ). Spike a également été appliqué à la détection et a la correction des spécifications incomplètes