Types
Delia Kesner (Université Paris Diderot) Typage 2018 1 / 14
Motivations
Spécier partiellement un programme Éviter de programmes absurdes (1+true) Éviter la violation de la mémoire
Ne pas écrire un programme ayant des comportements indénis Ne pas mélanger ou confondre les valeurs (1+1.2)
Éviter la sémantique qui dépend du modèle de la machine
Plan
Types monomorphes
I À la Church
I À la Curry
F Unication
F Inférence de types
Types polymorphes
I À la Church
I À la Curry (inférence de types)
Delia Kesner (Université Paris Diderot) Typage 2018 3 / 14
Typage monomorphe à la Church
Typage monomorphe
Types :
A::=T |A×A|A→A Exemple :
int →bool bool ×bool bool →(bool →int) bool×(bool →int) (bool →bool)→int
Delia Kesner (Université Paris Diderot) Typage 2018 5 / 14
Expressions à la Church
M ::= x |
cte |
hM,Mi |
M M |
λx :A.M |
let x :A=M in M
Quelques exemples
let x :int =3 in x+1
let x :int = (if true then 1 else 2)in x +1 let x :int=4 in(let y :int =x +1 in x∗y)
let f :int →int= (λx :int.x +1)in f (f x)
x(λfact :int →int.λx :int.if x then 1 else(x ∗fact(x−1))
Delia Kesner (Université Paris Diderot) Typage 2018 7 / 14
Règles de réduction
(λx :A.M)N ⇒ M{x/N} let x :A=N in M ⇒ M{x/N}
x M ⇒ M (x M)
fsthM,Ni ⇒ M
sndhM,Ni ⇒ N
if true then M else N ⇒ M if false then M else N ⇒ N if 0 then M else N ⇒ M
if n then M else N ⇒ N, n 6=0
Règles de typage monomorphe à la Church
Pour chaque cte il existe un type A, qu'on note TC(cte) :A. Un environnementde typage Γ est un ensemble de la forme
x1:A1, . . . ,xn:An. Dans ce cas on écritΓ(xi) pour dénoter Ai. Γ`xi : Γ(xi) Γ`cte :TC(cte)
Γ`M:A→B Γ`N :A Γ`M N :B
Γ,x :A`M :B Γ`λx :A.M :A→B Γ`M :A Γ`N :B
Γ` hM,Ni:A×B
Γ`M :A Γ,x :A`N :B Γ`let x :A=M in N :B
Delia Kesner (Université Paris Diderot) Typage 2018 9 / 14
Exemples de dérivations
x :int `+ :int×int →int
x :int`x :int x :int`1:int x :int` hx,1i:int×int x :int `+hx,1i:int
∅ `λx :int.+hx,1i:int →int Soit (∗) =f :int→int `f :int →int
(∗)
(∗) f :int →int `3:int f :int →int `f 3:int
∅ `λx :int.+hx,1i:int →int f :int →int`f (f 3) :int
∅ `let f :int→int = (λx :int.+hx,1i)in f (f 3) :int
Delia Kesner (Université Paris Diderot) Typage 2018 11 / 14
Propriétés du typage
(Unicité) : SiΓ`M :A etΓ`M :B, alors A≡B
(Aaiblissement): SoitΓ ={x :B|x ∈FV(M)} et soitΓ⊆∆. Alors Γ`M :A ssi∆`M :A.
(Préservation) : SiΓ`M :A et M ⇒M0, alors Γ`M0 :A
Algorithme de typage
Type(Γ,cte) =TC(cte)
Type(Γ,x) =A si x :A∈Γ
Type(Γ, λx :A.M) =A→B siType((Γ,x:A),M) =B Type(Γ,hM,Ni) =A×B siType(Γ,M) =A et
Type(Γ,N) =B
Type(Γ,M N) =B siType(Γ,M) =A→B et Type(Γ,N) =A
Type(Γ,let x:A=M in N) =B siType(Γ,M) =A et Type((Γ,x:A),N) =B
Type(Γ,M) =erreur sinon
Delia Kesner (Université Paris Diderot) Typage 2018 13 / 14
Propriétés de l'algorithme de typage
(Terminaison): Pour tout terme M et tout environnementΓ, l'appel Type(Γ,M) termine.
(Correction) : SiType(Γ,M) =A, alors Γ`M :A.
(Complétude) : SiΓ`M :A, alorsType(Γ,M) =A.
Autrement dit,
SiType(Γ,M) =erreur, alors M n'est pas typable dans Γ.