Projet Protheo

previous up next contents
Précédent : Présentation générale et objectifs Remonter : Projet PROTHEO, Contraintes, Déduction Automatique Suivant : Grands domaines d'application



Fondements scientifiques

 

Contraintes

Mots-clés : contraintes, résolution d'équations, satisfaisabilité


Résumé : Nous étudions la satisfaisabilité et la résolution de systèmes de contraintes, aussi bien sur des domaines symboliques comme les termes que sur des domaines numériques tels que les entiers naturels, ainsi que la combinaison de telles contraintes. Les procédures que nous obtenons sont fondamentales pour les processus de déduction avec contraintes développés dans le projet.


La notion de contraintes a montré son intérêt dans la modélisation de problèmes allant de la mécanique à la logique, en passant par la gestion des activités humaines. Les propriétés à satisfaire sont alors décrites par un ensemble de contraintes dont il importe de déterminer la satisfaisabilité (i.e. l'existence de solutions) ou l'ensemble des solutions. Si l'on considère par exemple la gestion des emplois du temps d'un groupe de personnes, on souhaite savoir dans un premier temps s'il est possible d'ajouter une réunion (problème de la satisfaisabilité) et dans une seconde étape obtenir soit une, soit toutes les possibilités d'horaire (c'est-à-dire une solution versus toutes les solutions).

Nous nous intéressons tout particulièrement aux systèmes de contraintes qui interviennent dans les processus de déduction. L'unification, c'est-à-dire la résolution d'équations sur les termes, est à la base de langages de programmation comme Prolog. C'est aussi l'un des mécanismes fondamentaux des démonstrateurs de théorèmes. Nous étudions le problème plus général de la résolution d'équation dans des théories équationnelles, par exemple l'unification et le filtrage modulo des symboles ayant des propriétés d'associativité et de commutativité [JK91]. Plus globalement, nous travaillons à la résolution de systèmes de contraintes symboliques faisant intervenir des prédicats d'ordre, d'appartenance et d'égalité, pour ne citer que les plus communs. Nous nous intéressons également à la combinaison de contraintes, c'est-à-dire à la résolution de problèmes faisant intervenir des types de contraintes différents.

Toujours dans cette optique, nous considérons également des contraintes numériques. Par exemple, l'unification associative-commutative nécessite de résoudre des équations Diophantiennes linéaires. Nous travaillons donc à la résolution de contraintes sur des domaines numériques comme les entiers (bornés ou non), en utilisant également des méthodes d'analyse réelle pour comprendre la structure de l'ensemble des solutions. Cela nous amène à considérer les méthodes de consistance locale et de propagation de contraintes utilisées également en intelligence artificielle.

Enfin, les outils de réécriture et de preuve développés dans le projet sont mis à profit pour spécifier et prouver les procédures de résolution et de satisfaisabilité sur les domaines symboliques et numériques.

Réécriture et stratégies

Mots-clés : réécriture, programmation fonctionnelle, démonstration automatique, stratégie


Résumé : La réécriture est largement utilisée au sein du projet, d'une part comme technique essentielle dans les démonstrateurs et les résolveurs de contraintes que nous développons, d'autre part comme cadre logique pour spécifier et prototyper les outils que nous proposons. Dans ce type d'applications, la formalisation et l'étude des stratégies jouent un rôle important.


Les techniques de réécriture ont été développées depuis les années 70 et appliquées en particulier au prototypage des spécifications formelles algébriques et à la démonstration de propriétés liées à la vérification de programme.

A l'origine, le but était de trouver un système de réécriture canonique qui permette de prouver la validité d'un théorème équationnel, en réécrivant chaque membre de l'égalité en un même terme. La procédure de complétion de Knuth et Bendix [KB70] a été conçue pour engendrer, quand cela est possible, à partir d'une théorie équationnelle, un système de réécriture confluent et terminant, deux propriétés qui assurent la complétude de cette méthode pour décider la validité d'un théorème équationnel. Les techniques de réécriture ont ensuite été appliquées à la preuve par récurrence, à la preuve de cohérence et complétude des spécifications équationnelles ou conditionnelles, à la preuve en logique du premier ordre, à la résolution d'équations dans les théories équationnelles ou conditionnelles, et à des domaines plus spécifiques comme les preuves en géométrie ou les preuves de circuits. Les techniques de réécriture se sont avérées être extrêmement utiles en démonstration automatique pour simplifier les espaces de recherche, ou pour inclure des procédures de décision de l'égalité dans des démonstrateurs plus généraux. Les démonstrateurs que nous développons tels SPIKE et daTac utilisent largement ces techniques.

Par ailleurs, la réécriture joue un rôle fondamental dans l'évaluation des langages de programmation fonctionnelle. Dans ce domaine, nos travaux ont porté sur le typage, l'introduction de fonctions partielles, la modularité et la paramétrisation des spécifications. La logique de réécriture a été introduite plus récemment [Mes92] comme une logique dans laquelle la déduction correspond à la réécriture concurrente, i.e., à l'application en une étape de règles de réécriture à différentes positions disjointes dans le terme. Cette logique fournit aussi un cadre permettant de coder d'autres logiques et a été le point de départ de nos travaux sur le système ELAN.

Un autre point commun à l'évaluation des langages fonctionnels et aux démonstrateurs de théorèmes (y compris les assistants de preuves) est l'étude des stratégies. Elles permettent de restreindre l'espace de recherche en sélectionnant certaines branches, de guider les calculs et les déductions en spécifiant quelle règle doit être appliquée à quelle position dans le terme. En programmation fonctionnelle, on peut citer comme exemple la stratégie d'appel par nécessité ou celle d'évaluation paresseuse. En démonstration automatique, il est intéressant de décomposer règles d'inférence et stratégies exprimant le contrôle, car les preuves de correction et complétude en sont facilitées. Par ailleurs, il est nécessaire d'avoir un langage de stratégies suffisamment puissant pour pouvoir exprimer en particulier l'itération, le raisonnement par cas, les choix déterministes et non-déterministes. Nous étudions les stratégies du point de vue de leur spécification et de leurs propriétés, et nous les utilisons pour formaliser les preuves dans les démonstrateurs que nous développons.

Démonstration automatique

Mots-clés : déduction, réécriture, récurrence, contraintes, paramodulation, résolution


Résumé : Nous développons des méthodes et des systèmes de déduction automatique fondés sur la réécriture et la résolution de contraintes. Ces méthodes sont appliquées aux preuves par induction et aux preuves équationnelles.


L'élaboration de méthodes et d'outils de vérification de logiciels est l'un de nos objectifs majeurs. Pour le réaliser, nous développons des techniques et des systèmes de déduction automatique fondés sur la réécriture et la résolution de contraintes. La vérification de spécifications sur des structures de données inductives fait fréquemment appel à des raisonnements par récurrence, ou à la manipulation d'équations, et exploite des propriétés d'opérateurs comme l'associativité ou la commutativité.

La réécriture qui permet de simplifier les expressions et les formules, est désormais un ingrédient essentiel pour l'efficacité des systèmes de preuve automatisés. D'autre part, une relation de réécriture bien-fondée peut s'utiliser naturellement pour implanter des raisonnements par récurrence. C'est la base de notre approche dans le système SPIKE qui permet en outre de combiner diverses techniques de simplification et de détecter les conjectures fausses. Dans le même cadre, nous pouvons coder des preuves de propriétés observables des programmes, motivées par les spécifications orientées-objets.

Les contraintes permettent de différer la résolution de problèmes symboliques complexes pour les résoudre de manière opportuniste. Elles permettent également d'augmenter l'expressivité du langage de spécification et d'affiner les stratégies de preuves. Le traitement des contraintes d'unification ou d'orientation en présence d'opérateurs interprétés (e.g. associatifs-commutatifs) laisse espérer des preuves automatisée radicalement plus courtes. Une implantation de ces idées a d'ailleurs permis à W. McCune [Col96] de résoudre un problème mathématique ouvert. La combinaison des contraintes avec les simplifications par réécriture pose des problèmes complexes à la fois théoriques sur la complétude des stratégies et pratiques pour une implantation performante. Nous explorons ces techniques d'un point de vue conceptuel mais aussi expérimental, par exemple dans le système daTac.



previous up next contents Précédent : Présentation générale et objectifs Remonter : Projet PROTHEO, Contraintes, Déduction Automatique Suivant : Grands domaines d'application