Participants : Bruno Pagano, Thérèse Hardin, Luc Maranget, Jean-Jacques Lévy
Mots clefs : lambda-calcul,programmation fonctionnelle
Les formalismes de substitution explicite (-calculs) sont des systèmes de réécriture
du premier ordre, dans lesquels on peut encoder le
-calcul de manière à gérer pas à
pas la substitution, sans avoir à effectuer d'
-conversion. Leur introduction avait pour
objectif de donner une description plus précise des processus de
compilation et d'exécution des langages fonctionnels. Ces
systèmes se sont révélés être des systèmes de réécriture
intéressants en eux-mêmes : preuves de confluence non triviales,
non-terminaison dans le cas typé. Les termes du
-calcul sont des termes clos de
ces systèmes, la
-réduction est une sous-relation de leur relation de
réécriture. Les termes des
-calculs peuvent aussi contenir des méta-variables,
qui sont donc instanciables par une substitution du premier
ordre. Celle-ci n'est pas un procédé de calcul de la
-théorie. Les
-calculs semblent donc pouvoir exprimer et
calculer plus que le
-calcul. Il est dès lors intéressant de comprendre si
cette ``nouvelle puissance'' est réelle et à quoi elle peut
servir.
T. Hardin a apporté un premier élément de réponse à cette
question en donnant, en collaboration avec G. Dowek (projet COQ)
et C. Kirchner (projet PROTHEO), une nouvelle présentation de
l'algorithme d'unification à l'ordre supérieur utilisant le
formalisme du -calcul.
Grâce à ce formalisme, les principales difficultés de
l'algorithme classique liées à l'interaction entre les variables
d'unification et les variables ordinaires disparaissent. Les
premières sont codées à l'aide des méta-variables, les secondes
par des constantes (de de Bruijn). Le problème de l'unification
d'ordre supérieur peut ainsi être ramené à un problème
d'unification équationnelle, pour lequel les auteurs ont fourni
un algorithme adapté. Ce travail a été présenté à la conférence
LICS'95. [4]
En réponse aux premières motivations de ces calculs, T.
Hardin, L. Maranget et B. Pagano ont décrit la compilation et
l'exécution de machines abstraites dans le -calcul. Ce travail avait déjà été fait à
plusieurs reprises, mais ne fournissait qu'une preuve de
correction de la machine abstraite étudiée. Les résultats obtenus
ici sont plus précis et plus généraux: définition d'un cadre
commun de description des machines, mise en place d'une
bisimulation prouvant que chacune des machines effectue à chaque
étape au plus une étape de
-réécriture, reconnaissance des stratégies suivies
par les machines. Les machines étudiées sont la SECD, la machine
de Krivine, la CAM (machines qui partagent l'environnement), mais
aussi la FAM (machine qui copie les environnements). Pour la FAM,
il s'agit à notre connaissance de la première description
complètement formalisée. Ce travail est en cours de
soumission.
J.-J. Lévy a étudié avec M. Abadi (du laboratoire DEC/SRC) et
B. Lampson (MICROSOFT) sur les évaluations incrémentales du
-calcul. Concrètement,
il s'agit de comprendre le calcul incrémental du système de
``makefiles'' Vesta, utilisé à DEC/SRC pour développer leurs
logiciels (Topaz, Modula-3, etc). Le langage de ce système est
fonctionnel, comme celui d'E. Schmidt autrefois utilisé à
XEROX-PARC. Il présente l'avantage de calculer les dépendances,
et de ne pas les donner a priori comme dans les ``makefiles'' du
système Unix. Le groupe Vesta de DEC avait une méthode
relativement compliquée pour faire ce calcul incrémental de
dépendances. Avec les méthodes standard de la substitution
explicite et du
-calcul étiqueté, augmenté d'un calcul élémentaire de
``records'', il a été possible de donner une solution assez
simple à ces calculs. Un article [8] est soumis à la conférence
ICFP 96.