Sous-sections

Preuve de propriétés de programmes

Mots clés : preuve par récurrence, preuve équationnelle, procédure de complétion, terminaison, propriété observable .

Résumé :

Nous avons développé de nouvelles techniques de preuves de propriétés dans les théories équationnelles (terminaison, confluence, complétude), pour des propriétés observables et des systèmes réactifs.

Preuves de terminaison par induction



Participants : Olivier Fissore, Isabelle Gnaedig, Hélène Kirchner.

L'étude de la terminaison de la réécriture sur les termes clos a été poursuivie. La quasi-totalité des techniques de preuve de terminaison de la réécriture existantes sont des techniques globales, assurant la terminaison des chaînes de calcul partant de tous les termes d'une algèbre donnée. Qui plus est, les algèbres considérées sont des algèbres libres. Pour assurer la terminaison des programmes dans des langages à base de règles, les besoins sont autres : il est utile de travailler sur des algèbres de termes clos, et de pouvoir caractériser quels ensembles de termes aboutissent à des calculs finis, dans le cas où il n'y a pas terminaison globale. Il peut être aussi très utile de disposer de techniques de preuve pour des stratégies de réécriture particulières.

Dans ce contexte, nous avons proposé une méthode de preuve de terminaison de la réécriture innermost, par induction explicite sur la propriété à prouver : on établit qu'un terme termine en supposant que les termes plus petits que lui pour un ordre noethérien terminent. L'ordre n'est pas donné a priori mais contraint au fur et à mesure de la preuve. La méthode proposée repose sur un double mécanisme : une étape d'abstraction des sous-termes d'un terme donné par des variables représentant leurs formes normales, une étape de surréduction du terme obtenu, schématisant les étapes de réécriture innermost sur les termes clos. La procédure peut soit diverger, avec une succession infinie d'étapes d'abstraction et de narrowing, soit s'arrêter sur un échec si on ne peut comparer le terme de départ et les sous-termes à abstraire, soit s'arrêter uniquement sur des termes auxquels on peut appliquer directement l'hypothèse d'induction, ou sur des termes qu'on ne peut plus surréduire. Dans ce dernier cas, la terminaison du terme donné est établie.

Nous avons, cette année, proposé deux adaptations à notre méthode de preuve. La première consiste à remplacer l'induction noethérienne sur les termes par une induction sur les symboles d'opérateurs. La comparaison des sous-termes du terme courant avec le terme de départ est remplacée par une application récursive de la procédure sur les sous-termes considérés. Cet algorithme permet de conclure dans bon nombre de cas lorsque la méthode de base s'arrête en échec.

La seconde adaptation étend l'algorithme de base de sorte à pouvoir conclure lorsque, partant d'un terme donné, la procédure s'arrête avec succès pour certains des termes dérivés seulement. On caractérise ainsi, via des contraintes égalitaires sur les termes dont les solutions sont des instances closes des termes, un ensemble de termes qui terminent [62].

Une implantation de notre méthode a également été réalisée en ELAN, pour l'algorithme de base [61]. Contrairement aux autres méthodes de preuve de terminaison, cette approche est prometteuse pour d'autres stratégies, car la relation de réécriture est exprimée explicitement dans le mécanisme de preuve. Une extension est actuellement en cours pour la stratégie outermost et des stratégies locales exprimées sur les opérateurs.

Preuves de terminaison



Participants : Isabelle Gnaedig, Hélène Kirchner.

Un survol de plusieurs méthodes permettant de prouver la terminaison de programmes par réécriture ou de montrer des propriétés des ensembles de formes normales est présenté dans [43]. On s'y concentre sur les techniques qui ont été implantées en ELAN et qui sont utiles pour prouver la terminaison de programmes ELAN. Les problèmes abordés sont les suivants : la terminaison générale d'un programme par réécriture, la terminaison innermost d'un ensemble de termes clos, le calcul ou l'approximation des ensembles de formes normales, la terminaison d'un programme par réécriture construit de façon modulaire, l'estimation du nombre de formes normales pour un programme non-déterministe avec stratégies. Pour chaque problème, nous présentons brièvement une méthode et son domaine d'application, donnons des références à d'autres approches existantes, avant de décrire l'implantation qui en est faite en ELAN. L'article conclut sur quelques questions ouvertes. Il a donné lieu à un exposé invité au Workshop on Rewriting Logic and its Applications, qui s'est tenu à Kanazawa en septembre 2000.

Vérification simultanée de la complétude et de la confluence sur les termes clos



Participant : Adel Bouhoula.

Les méthodes existantes pour tester la confluence sur les termes clos utilisent des techniques de complétion ou bien vérifient que toutes les paires critiques entre les axiomes sont valides par rapport à un critère de confluence close. Ces techniques ne sont pas efficaces même si le nombre d'axiomes de la spécification est très réduit. En effet, les procédures de complétion divergent souvent et il existe en général un nombre très important de paires critiques entre les axiomes.

Nous avons développé une nouvelle procédure pour tester simultanément la complétude et la confluence sur les termes clos lorsque les fonctions sont définies à l'aide de constructeurs libres, lorsqu'il y a des relations entre les constructeurs et lorsque la spécification est paramétrée. Dans le cas où la spécification n'est pas complète ou bien n'est pas confluente sur les termes clos, notre procédure retourne l'ensemble des motifs pour lesquels les fonctions ne sont pas définies. Elle permet également d'identifier les règles qui empêchent la confluence.

Notre procédure est complète et termine toujours sous l'hypothèse qu'un oracle permet de décider des propriétés inductives. Par opposition aux techniques précédentes, on n'utilise pas de procédures de complétion et on n'a pas besoin de calculer l'ensemble des paires critiques des axiomes.

La méthode a été implantée dans le système SPIKE. Elle a permis de tester la complétude et la confluence sur les termes clos de plusieurs spécifications d'une manière totalement automatique alors que les autres techniques divergent ou engendrent des preuves très complexes.

Preuves de propriétés observables



Participants : Adel Bouhoula, Michaël Rusinowitch.

Les preuves de propriétés observables sont bien adaptées aux raisonnements sur les systèmes orientés objets où les états d'un objet sont observés en appliquant certaines méthodes à des attributs. Nous avons simplifié notre technique de preuve observationnelle par contextes critiques [BBR98] dans un article soumis. Les possibilités d'augmenter l'automatisation de ce type de preuves sont importantes et l'approche semble offrir une alternative prometteuse à la coinduction.