Participants : Claude Kirchner, Denis Lugiez
L'unification d'ordre supérieur consiste à unifier modulo la
-conversion. Mais ce
n'est pas de l'unification équationnelle modulo la
-conversion car les substitutions
doivent éviter les captures. Les méthodes (comme la surréduction)
permettant d'unifier modulo une théorie équationnelle sont basées
sur l'opération de greffe (qui consiste à substituer sans
renommer) et ne peuvent donc pas s'appliquer directement à
l'unification d'ordre supérieur. En collaboration avec Gilles
Dowek du projet COQ et Thérèse Hardin du projet PARA, nous avons
réduit l'unification d'ordre supérieur à l'unification du premier
ordre modulo une théorie équationnelle appropriée. Ces résultats
ont été présentés à LICS95 [23] et sont détaillés
dans [43].
Ils ont également été implantés en ELAN, un cadre logique décrit
ci-après. Nous travaillons maintenant à l'étude de l'unification
sur les patterns qui constituent une classe où
l'unification d'ordre supérieur à la propriété d'être
unitaire.
L'ordre supérieur, en lieu et place du premier ordre, est un
moyen d'étendre l'expressivité des langages de spécification à la
manière de ce qui a été déjà réalisé pour Prolog avec
-Prolog. Dans un tel cadre les
programmes sont des règles de réécriture qui contiennent des
-termes. Pour
l'application à la spécification, une question essentielle est de
savoir si une fonction définie par un ensemble de telles règles
est définie partout (c'est la notion de complétude suffisante) et
il est essentiel d'avoir des outils permettant de décider cette
propriété ou tout au moins une approximation opérationnelle. Cela
revient à résoudre des formules logiques interprétées dans
l'ensemble des termes clos, connues sous le nom de problèmes de
complément. Nous avons poursuivi l'étude de ces formules
commencée en 1994 en précisant ce qu'on pouvait obtenir dans les
cas intéressants qui sont l'ordre 2 et la classe des termes
appelés patterns. En particulier nous avons montré que
le problème de complément d'ordre 2 était indécidable à l'aide
d'un codage par les machines à compteurs. Nous avons donné des
conditions nécessaires pour que ce problème soit décidable et
nous avons donné une preuve complète de la décidabilité de
n'importe quelle formule quand les termes qu'elle contient ne
sont que des patterns. Les idées principales de ces travaux sont
décrites dans l'habilitation de Denis Lugiez [2], présentée en janvier
95 et une version plus complète se trouve dans [13]. De plus, nous avons étudié
certains problèmes de complément sur des types polymorphes et
donné dans ce cadre un algorithme de test de complétude et de
compilation du filtrage pour le cas linéaire gauche [32].