Equational reasoning and combination methods: from programs to proofs
Raisonnement équationnel et méthodes de combinaison: de la programmation à la preuve
Résumé
In this document, we present decision procedures and solvers which are useful in verification. We consider first order logic with equality. This logic is undecidable in general, but the study of interesting fragments leads to automatic (push-button) tools. The notion of equality is particularly interesting for programming via oriented equalities (rule-based programming) or for deriving proofs thanks to the principle of replacement of equal by equal. In a modelisation using first order logic with equality, we easily have to deal with a problem involving different theories. For instance, these theories may be used to modelise the functions, the arithmetic operations and the memory of a program. Hence, we have to face a problem expressed in a combination of theories, which is interesting to solve in a modular way by using the decision procedures known for individual theories. This problem is the bulk of my research interests. The originality of my approach consists in developing combination methods which are useful in the domain of verification. All the given decision procedures are designed by using a rule-based formalism to ease their proofs.
Les travaux décrits dans ce document ont pour objectif le développement de procédures de décision (et de résolution) pour la vérification. La logique considérée est la logique du premier ordre avec égalité. Cette logique est évidemment indécidable en général, mais l'étude de fragments intéressants pour la vérification peut conduire à des outils automatiques de type "presse-bouton". La notion d'égalité est particulièrement intéressante pour programmer, par orientation des égalités, c'est-à-dire par réécriture, ou pour prouver, grâce au principe de remplacement d'égal par égal. Dans une modélisation en logique du premier ordre avec égalité, on est très facilement amené à utiliser simultanément plusieurs théories différentes pour représenter par exemple les fonctions et la mémoire d'un programme ainsi que les opérations arithmétiques effectuées par le programme. On se retrouve ainsi naturellement face à un problème exprimé dans un mélange de théories, qu'il est souhaitable de résoudre de façon modulaire en réutilisant les procédures de décision connus pour les théories composant le mélange. Cette problématique est au coeur de mes travaux. L'originalité de mon approche consiste à développer des méthodes de combinaison pour les procédures de décision utilisées dans le domaine de la vérification. Toutes les procédures de décision obtenues ont été évidemment élaborées en suivant une démarche de conception sûre, qui s'appuie sur une description à base de systèmes d'inférence pour faciliter leurs preuves.
Loading...