Typage monomorphe à la Curry
Delia Kesner (Université Paris Diderot) Typage 2018 1 / 10
Typage monomorphe
Expressions à la Curry
M ::= x |
cte |
hM,Mi |
M M |
λx.M |
let x =M in M
Quelques exemples
let x :int =3 in x+1 s'écrit maintenant
let x =3 in x +1
let x :int =4 in(let y :int =x +1 in x∗y)) s'écrit maintenant
let x =4 in(let y =x +1 in x∗y))
Delia Kesner (Université Paris Diderot) Typage 2018 3 / 10
Règles du typage monomorphe à la Curry
Γ`x : Γ(x) Γ`cte :TC(cte)
Γ`M :A→B Γ`N :A Γ`M N :B
Γ,x :A`M :B Γ`λx.M :A→B Γ`M :A Γ`N :B
Γ` hM,Ni:A×B
Γ`M :A Γ,x :A`N :B Γ`let x =M in N :B
Propriétés ?
L'unicitén'est plus vraie :
`λx.x :int →int `λx.x :bool →bool
Mais les deux fonctions sont une instanced'une même fonction identité qui se comporte de la même façon :
Polymorphisme
Delia Kesner (Université Paris Diderot) Typage 2018 5 / 10
Vers un algorithme de typage
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
Types à la Curry : dicultés de l'algorithme de typage
Type(Γ, λx.M) =A→B s'il existeA t.q.
Type((Γ,x :A),M) =B Type(Γ,let x =M in N) =B s'il existeA t.q.
Type(Γ,M) =A et Type((Γ,x :A),N) =B
Delia Kesner (Université Paris Diderot) Typage 2018 7 / 10
Vers un algorithme de typage
Soit M un terme à typer. Pour chaque variable x de M on introduit unevariable de typeαx et pour chaque sous-expressionN de M on introduit une variable de typeαN.
On introduit un tableau de schémas de typespour les constantes, appelé STC. Ainsi par exemple STC(fst) =α×β→α.
On associe à M un système d'équations SE(M) comme suit :
M SE(M)
x {αM .
=αx}
cte {αM .
=STC(cte)}
hN,Li {αM .
=αN ×αL} ∪SE(N)∪SE(L)
N L {αN .
=αL →αM} ∪SE(N)∪SE(L) .
Correction et complétude de l'algorithme de typage
Théorème : (Correction) Siσ est une solution de SE(M), alors
∆`M :τ(αM), où ∆ ={x :τ(αx)|x ∈FV(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.
Delia Kesner (Université Paris Diderot) Typage 2018 9 / 10
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).