Typage monomorphe à la Curry

publicité
Typage monomorphe
Expressions à la Curry
M ::= x
Typage monomorphe à la Curry
|
cte
|
hM, M i
|
MM
|
λx.M
|
let x = M in M
2
Quelques exemples
Règles du typage monomorphe à la Curry
let x : int = 3 in x + 1
Γ ` x : Γ(x)
s'écrit maintenant
Γ ` cte : T C(cte)
let x = 3 in x + 1
Γ`M :A→B
Γ`N :A
Γ`M N :B
let x : int = 4 in (let y : int = x + 1 in x ∗ y))
Γ`M :A
s'écrit maintenant
Γ`N :B
Γ ` hM, N i : A × B
let x = 4 in (let y = x + 1 in x ∗ y))
3
Γ, x : A ` M : B
Γ ` λx.M : A → B
Γ`M :A
Γ, x : A ` N : B
Γ ` let x = M in N : B
4
Propriétés ?
L'unicité n'est plus vraie :
` λx.x : int → int
Vers un algorithme de typage
` λx.x : bool → bool
Mais les deux fonctions sont une instance d'une même fonction
identité qui se comporte de la même façon :
Polymorphisme
Les substitutions
Les unicateurs d'un système d'équations
Algorithme d'unication d'un système d'équations
La construction d'un système d'équations à partir d'un terme
Algorithme de typage d'un terme à l'aide de l'unication
5
Types à la Curry : dicultés de l'algorithme de typage
T ype(Γ, λx.M ) = A → B
6
Vers un algorithme de typage
s'il existe A t.q.
Soit M un terme à typer. Pour chaque variable x de M on
introduit une variable de type αx et pour chaque sous-expression
N de M on introduit une variable de type αN .
On introduit un tableau de schémas de types pour les constantes,
appelé ST C . Ainsi par exemple ST C(f st) = α × β → α.
T ype((Γ, x : A), M ) = B
T ype(Γ, let x = M in N ) = B s'il existe A t.q.
T ype(Γ, M ) = A et
T ype((Γ, x : A), N ) = B
7
8
On associe à M un système d'équations SE(M ) comme suit :
Correction et complétude de l'algorithme de typage
M
SE(M )
.
x
{αM = αx }
.
cte
{αM = ST C(cte)}
.
hN, Li
{αM = αN × αL } ∪ SE(N ) ∪ SE(L)
.
NL
{αN = αL → αM } ∪ SE(N ) ∪ SE(L)
.
λx.N
{αM = αx → αN } ∪ SE(N )
let x = N in L {αM =. αL ; αx =. αN } ∪ SE(N ) ∪ SE(L)
Théorème : (Correction) Si σ est une solution de SE(M ),
alors ∆ ` M : τ (αM ), où ∆ = {x : τ (αx ) | x ∈ F V (M )} et τ est
une instance de σ .
Théorème : (Complétude) S'il existent ∆ et A t.q.
∆ ` M : A, alors SE(M ) admet une solution.
9
Principalité de l'algorithme de typage
Théorème : (Principalité) Si M est typable, i.e., ∆ ` M : A,
alors A est une instance du type principal σ(αM ), où σ est une
solution principale du système SE(M ).
11
10
Téléchargement