Précédent Index Suivant

2.1   Les types simples pour le l-calcul typé

La syntaxe du l-calcul est identique à celle qui a été introduite précédemment.

Soit P un ensemble de variables de types. On définit l'ensemble des types simples bien formés T (construit à partir de T et du constructeur ®) par : Typer un terme (clos), c'est lui associer un type. Mais on ne peut pas se contenter de ne typer que les termes clos. Il faut donc se référer à un contexte de types (qui associe à chaque variable libre un type). Donc typer un terme (non nécessairement clos) consistera à lui associer un type dans un certain contexte où se trouvent toutes les variables libres du terme. Donnons une définition plus formelle.

Les contextes sont des listes de couples C=(x1:s1),...,(xn:sn).

On définit inductivement une relation C|- M:t qui signifie ``M est de type t dans le contexte C'' de la façon suivante : Ces règles s'écrivent habituellement :
(Var)
(x1:s1),...,(xn:sn) |- xi:si

(Abs)
(x:s),C|- M:tC|-l x.M:s®t
Exemple de typage : on se propose de typer l'entier de Church ``deux''. C'est l fl x.f(f x). On prouve qu'il admet le type (a®a)®a®a au moyens des règles ci-dessus.

Ce qui s'écrit plus facilement en utilisant la deuxième forme des règles :

x:a,f:a®a|- f:a®a x:a,f:a|- f:a®a x:a,f:a®a|- x:a x:a,f:a®a|- fx:a x:a,f:a®a|- f(fx):a f:a®a|-l x.f(fx):a®a |-l f.l x.f(f x):(a®a)®a®a

On a donné une méthode de vérification de typage, mais pas de synthèse d'un type.

Pour ce système de types, il existe une méthode de synthèse utilisant l'unification, que nous allons donner. En voici un avant-goût par le raisonnement intuitif suivant :

On suppose que dans ce terme, f a le type s et x a le type t. Comme on a pu former fx il faut que s soit de la forme t®s1 et alors fx est du type s1. Comme on a pu former f(fx), il faut que t=s1. En conclusion, f:t®t et x:t, et le terme a le type (t®t)®t®t pour n'importe quel type t (en particulier, on peut prendre une variable a).


Précédent Index Suivant