• Aucun résultat trouvé

Sp ´ecification

N/A
N/A
Protected

Academic year: 2022

Partager "Sp ´ecification"

Copied!
49
0
0

Texte intégral

(1)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 1

Types et contraintes

Franc¸ois Pottier

15 d ´ecembre 2004

(2)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 2

Types

Un type est une description concise du comportement d’un fragment de programme.

Le typage peut fournir des garanties de sˆuret ´e ou de s ´ecurit ´e.

Il favorise ´egalement la modularit ´e et l’abstraction.

(3)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 3

Contraintes

Un fragment de programme admet un type si et seulement si chacun des sous-fragments qui le composent admet lui-mˆeme un type, et si ces types sont coh ´erents les uns vis- `a-vis des autres.

Un probl`eme d’inf ´erence de types s’exprime donc typiquement sous forme d’une contrainte compos ´ee de pr ´edicats sur les types, de conjonctions, et de quantifications existentielles.

De plus, les contraintes peuvent participer `a la sp ´ecification mˆeme d’un syst`eme de types.

(4)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 4

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(5)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Le syst`eme de types de Damas et Milner 5

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(6)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Le syst`eme de types de Damas et Milner 6

Sp ´ecification

La sp ´ecification classique du syst`eme de types de Damas et Milner est un jeu de r`egles permettant de d ´eriver des jugements:

Γ`x: Γ(x) Γ;x:τ1`e:τ2

Γ`λx.e:τ1→τ2

Γ`e11→τ2

Γ`e21

Γ`e1e22

Γ`e1 :σ Γ;x:σ`e2:τ Γ`letx=e1ine2

Γ`e:τ α¯# ftv(Γ) Γ`e:∀α.τ¯

Γ`e:∀¯α.τ Γ`e: [~τ/~α]τ L’ex ´ecution d’un programme bien typ ´e ne peut ´echouer.

(7)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Le syst`eme de types de Damas et Milner 7

L’algorithme J de Milner (extrait)

L’algorithme attend un pr ´e-jugement Γ`e, produit un type τ, et emploie deux variables globales V et φ.

J(Γ`e1e2) = doτ1=J(Γ`e1) doτ2=J(Γ`e2) doα= fresh

doφ←mgu(φ(τ1) =φ(τ2→α))◦φ returnα

J(Γ`letx=e1ine2) = doτ1=J(Γ`e1) letσ=∀ftv(φ(Γ)).φ(τ1) returnJ(Γ;x:σ `e2) Production et r ´esolution d’ ´equations sont entremˆel ´ees.

(8)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Le syst`eme de types de Damas et Milner 8

Correction et compl ´etude de l’algorithme J

Th ´eor`eme (Correction)

Si J(Γ`e) termine dans l’ ´etat (φ, V) et renvoie τ, alors φ(Γ)`e:φ(τ) est un jugement.

Th ´eor`eme (Compl ´etude)

Soit Γ un environnement de typage. Soit (φ0, V0) un ´etat

satisfaisant les invariants de l’algorithme. Supposons donn ´es θ0 et τ0 tels que θ0φ0(Γ)`e:τ0 soit un jugement. Alors, l’ex ´ecution de J(Γ`e) `a partir de l’ ´etat initial (φ0, V0) r ´eussit. Soient (φ1, V1) son ´etat final et τ1 le type renvoy ´e. Alors il existe une substitution θ1 telle que θ0φ0 et θ1φ1 co¨ıncident en dehors de V0 et telle que τ0 s’ ´ecrit θ1φ11).

(9)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Le syst`eme de types de Damas et Milner 9

Compl ´etude de l’algorithme J (extrait de la preuve)

[...] Nous avons

θ1φ1(γ) =θ1ψφ02(γ) =θ002φ02(γ).

Puisque α est distinct de γ et hors de port ´ee de φ02, nous pouvons continuer avec

θ002φ02(γ) =θ02φ02(γ) =θ01φ01(γ) =θ0φ0(γ).

θ1φ1 et θ0φ0 co¨ıncident donc en dehors de V0 [...]

(10)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Une approche `a base de contraintes 10

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(11)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Une approche `a base de contraintes 11

Syntaxe

La syntaxe des contraintes et des sch ´emas de types contraints sera la suivante:

C ::= τ≤τ|C∧C| ∃α.C|xτ|defx:σinC σ ::= ∀¯α[C].τ

(12)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Une approche `a base de contraintes 12

Interpr ´etation

Les contraintes sont interpr ´et ´ees dans un mod`ele logique.

Une variable α d ´enote un ´el ´ement d’un univers de Herbrand.

Une variable x d ´enote un ensemble de tels ´el ´ements.

L’interpr ´etation logique des contraintes est d ´efinie de fac¸on `a satisfaire les lois

defx:σ inC≡[σ/x]C

(∀¯α[C].τ)τ0≡ ∃¯α.(C∧τ≤τ0)

(13)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Une approche `a base de contraintes 13

Production

A une expression` e et un type τ, on associe une contrainte Je:τK, n ´ecessaire et suffisante pour que e admette le type τ.

Jx:τK = xτ Jλx.e:τK = ∃α1α2.

defx:α1inJe:α2K α1→α2≤τ

Je1e2:τK = ∃α.(Je1:α→τK∧Je2:αK) Jletx=e1ine2:τK = letx:∀α[Je1 :αK].αinJe2:τK Cette sp ´ecification est ´equivalente aux pr ´ec ´edentes.

(14)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

HM(X) 14

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(15)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

HM(X) 15

Sp ´ecification

Les jugements font explicitement apparaˆıtre une contrainte:

Γ(x) =σ C∃σ C,Γ`x:σ

C,Γ;x:τ1`e:τ2 C,Γ`λx.e:τ1→τ2

C,Γ`e11→τ2

C,Γ`e21

C,Γ`e1e22

C,Γ`e1:σ C,Γ;x:σ `e2:τ C,Γ`letx=e1ine2

(16)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

HM(X) 16

Sp ´ecification (suite)

Cette contrainte joue le rˆole d’hypoth`ese lorsque l’on souhaite prouver qu’une assertion portant sur les types est satisfaite.

C∧D,Γ`e:τ α¯# ftv(C,Γ) C∧D,Γ`e:∀α[D].τ¯

C,Γ`e:∀α[D].τ¯ CD C,Γ`e:τ

C,Γ`e:τ Cτ≤τ0 C,Γ`e:τ0

C,Γ`e:σ α¯# ftv(Γ, σ)

∃α.C,¯ Γ`e:σ La pr ´esence d’une contrainte dans les jugements conduit naturellement `a l’emploi de sch ´emas de types contraints.

(17)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

HM(X) 17

Les deux facettes de HM(X)

Cette sp ´ecification est ´equivalente aux r`egles de production de contraintes pr ´ec ´edentes.

Th ´eor`eme

C,Γ`e:τ est ´equivalent `a CdefΓinJe:τK. Corollaire

Une expression close e est bien typ ´ee si et seulement si la contrainte ∃α.Je:αK est satisfiable.

(18)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Pr ´esentation 18

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(19)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Pr ´esentation 19

Pourquoi contrˆoler les flots d’information ?

Bob

identit ´e revenus formulaire

logiciel de conseil

fiscal

fournisseur de service

Bob emploie un logiciel pour remplir son formulaire de d ´eclaration de revenus, lequel communique, `a travers le r ´eseau, avec son site d’origine.

(20)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Pr ´esentation 20

Pourquoi contrˆoler les flots d’information ?

Bob

identit ´e revenus formulaire

logiciel de conseil

fiscal

fournisseur de service

Bob souhaiterait obtenir une garantie de secret: s’il modifiait les revenus qu’il d ´eclare, le fournisseur du logiciel ne pourrait percevoir aucune diff ´erence. En d’autres termes, les donn ´ees envoy ´ees au fournisseur ne d ´ependent pas des revenus de Bob.

(21)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Pr ´esentation 21

Pourquoi contrˆoler les flots d’information ?

Bob

identit ´e revenus formulaire

logiciel de conseil

fiscal

fournisseur de service L

L H

H

Pour sp ´ecifier cela de fac¸on succincte, on attribue des niveaux d’information ordonn ´es `a chaque canal d’entr ´ee ou de sortie – ici, L < H – et on n’autorise la transmission d’information que

(22)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Pr ´esentation 22

Pourquoi contrˆoler les flots d’information ?

Bob

identit ´e revenus formulaire

logiciel de conseil

fiscal

fournisseur de service L

L H

H

Cette sp ´ecification peut prendre la forme d’un type, comme stringL×intH→stringH×intL

(23)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 23

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(24)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 24

Polymorphisme

Pour permettre la r ´eutilisation de code, le syst`eme est dot ´e de polymorphisme vis- `a-vis des niveaux, des types, et des effets:

λx.x+ 1 : ∀α.intα →intα λx.x : ∀β.β→β

Le polymorphisme permet ´egalement d’abstraire une sp ´ecification vis- `a-vis du treillis des niveaux d’information:

stringL ×intH →stringH ×intL

∀αβ[α≤β].stringα×intβ →stringβ ×intα

(25)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 25

Sous-typage

Les types habituels sont d ´ecor ´es par des niveaux, comme L et H. La relation d’ordre entre niveaux donne donc naturellement lieu `a une relation de sous-typage structurel entre types.

Le sous-typage permet une analyse orient ´ee des flots d’information:

λ(a, b, c).(b+c, a+c, a+b) :

β≤α0 γ ≤α0 α≤β0 γ≤β0 α≤γ0 β≤γ0

.intα×intβ×intγ →intα0×intβ0 ×intγ0

(26)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 26

Contraintes non standard

Le syst`eme emploie ´egalement des contraintes d’ordre entre un niveau et un type:

let choose b x y = if b then x else y

∀αβ[α≤level(β)].boolα →β→β→β

Une telle contrainte exige, en gros, que “l’ ´etiquette” port ´ee par le type β soit born ´ee inf ´erieurement par le niveau α.

(27)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 27

Contraintes non standard (suite)

On dispose ´egalement de contraintes d’ordre entre un type et un niveau:

(=) :∀αβ[content(α)≤β].α→α→boolβ

Une telle contrainte exige, en gros, que le niveau β soit born ´e inf ´erieurement par “toutes les ´etiquettes” du type α.

(28)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 28

Rang ´ees

Tout constructeur fl`eche est annot ´e par une rang ´ee qui `a chaque nom d’exception associe le niveau de l’information trahie par le lancement de cette exception.

λx.(if x then raise X)

∀αβγ[α≤γ∧β≤γ].boolα β‚‚‚‚→X:γ unit

(29)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 29

Sp ´ecification

L’analyse est sp ´ecifi ´ee par un jeu de r`egles dont le style rappelle la sp ´ecification de HM(X). Par exemple,

C,Γ`v:boolλ

∀j ∈ {1,2} C, πtλ,Γ`ej :τ[ρ] Cλ≤level(τ) C, π,Γ`if v then e1 else e2:τ[ρ]

(30)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 30

Inf ´erence de types

L’inf ´erence de types, donc l’analyse automatique de flots d’information, se ram`ene comme pr ´ec ´edemment `a la r ´esolution de contraintes. Par exemple,

Jπ`if v then e1 else e2:τ[ρ]K=∃αβ.

Jv :boolαK π≤β∧α≤β Jβ `e1:τ[ρ]K Jβ `e2:τ[ρ]K α≤level(τ)

(31)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Techniques 31

R ´esolution de contraintes

Le langage de contraintes consid ´er ´e comprend une relation de sous-typage structurel sur les types, niveaux et rang ´ees, ainsi que deux relations d’ordre entre types et niveaux et entre niveaux et types.

La complexit ´e ajout ´ee par l’analyse vis- `a-vis de l’inf ´erence de types classique est born ´ee par un facteur constant.

(32)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es 32

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(33)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es 33

Les types alg ´ebriques

Les constructeurs de donn ´ees associ ´es `a un type alg ´ebrique ordinaire ε rec¸oivent des sch ´emas de types de la forme:

K::∀¯α.τ1· · ·τn →ε( ¯α) Par exemple,

Feuille::∀α.arbre(α)

Noeud::∀α.arbre(α)·α·arbre(α)→arbre(α)

Filtrer une valeur de type arbre(α) contre le motif Noeud(l, v, r) lie l, v et r `a des valeurs de types arbre(α), α et arbre(α).

(34)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es 34

Les types existentiels `a la L ¨aufer & Odersky

Dans l’extension de ML propos ´ee par L ¨aufer et Odersky, les constructeurs de donn ´ees rec¸oivent des sch ´emas de types de la forme:

K::∀¯αβ.τ¯ 1· · ·τn →ε( ¯α) Par exemple,

Clef::∀β.β·(β→int)→clef

Filtrer une valeur de type clef contre le motif Clef(v, f) lie v et f `a des valeurs de types β et β→int, pour un β inconnu.

(35)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es 35

Les types alg ´ebriques g ´en ´eralis ´es

Attribuons `a pr ´esent des sch ´emas de types contraints aux constructeurs de donn ´ees:

K::∀¯α¯β[D].τ1· · ·τn →ε( ¯α)

Filtrer une valeur de type ε( ¯α) contre le motif K x1· · ·xn lie xi `a une valeur de type τi, pour des types β¯ inconnus mais qui satisfont la contrainte D.

Si D mentionne ¯β, ceux-ci ne sont que partiellement abstraits.

Si D mentionne ¯α, la r ´eussite du filtrage fournit une information statique suppl ´ementaire sur ces types existants.

(36)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 36

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(37)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 37

Un exemple typique

Suivant Crary, Weirich et Morrisett, on peut d ´efinir un type de descripteurs de types `a l’ex ´ecution:

Entier::desc(int)

Paire::∀β1β2.desc(β1)·desc(β2)→desc(β1×β2) Ceci peut ´egalement s’ ´ecrire

Entier::∀α[α=int].desc(α)

Paire::∀αβ1β2[α=β1×β2].desc(β1)·desc(β2)→desc(α) desc est un constructeur de types singleton, au sens o `u, par exemple, Paire(Entier,Entier) est l’unique valeur de type

(38)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 38

Un exemple typique (suite)

Ceci permet la d ´efinition de fonctions g ´en ´eriques:

l e t rec print : α.desc(α)αunit= fun t match t with

| Entier ( α=int ) p r i n t i n t

| Paire (t1 , t2) ( α=β1×β2 ) fun (x1 , x2)

print t1 x1 ; print string ” ” ; print t2 x2

Les deux branches admettent les types incompatibles int→unit et β1×β2→unit, mais elles ont ´egalement un type commun, `a savoir α→unit.

(39)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 39

Lien avec les type classes

Dans un langage dot ´e de type classes, on aurait pu d ´efinir print comme une fonction surcharg ´ee:

class Printable α where print : : αunit

Le type de print est alors ∀α[Printableα].α→unit.

(40)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 40

Lien avec les type classes (suite)

On aurait ensuite sp ´ecifi ´e que print est applicable aux entiers et aux produits:

instance Printable int where print = p r i n t i n t

instance Printable β1, Printable β2Printable β1×β2 where print (x1 , x2) = print x1 ; print string ” ” ; print x2

(41)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

Applications 41

Lien avec les type classes (suite)

Il existe une traduction syst ´ematique de ce programme vers le pr ´ec ´edent.

Dans le programme source, le pr ´edicat Printable (int×int) est d ´erivable. Dans le programme cible, le type desc(int×int) est habit ´e par la valeur Paire(Entier,Entier).

(42)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

De HM(X) `a HMG(X) 42

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(43)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

De HM(X) `a HMG(X) 43

Au-del `a de l’ ´egalit ´e

On peut imaginer de combiner les types alg ´ebriques g ´en ´eralis ´es avec des langages de contraintes plus riches:

I arithm ´etique de Presburger (Xi)

I polynˆomes complexes (Zenger)

I sous-typage (Tse et Zdancewic)

I et autres ?

Il semble naturel d’ ´etudier ces combinaisons de fac¸on commune, donc d’ajouter les types alg ´ebriques g ´en ´eralis ´es `a HM(X).

(44)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

De HM(X) `a HMG(X) 44

La facette logique de HMG(X)

La sp ´ecification logique de HM(X) se voit ajouter de nouvelles r`egles, concernant en particulier les fonctions d ´efinies par cas:

C`p:τ0 ∃β[D]Γ¯ 0 C∧D,ΓΓ0 `e:τ β¯# ftv(C,Γ, τ) C,Γ`p.e:τ0→τ

L’ex ´ecution d’un programme bien typ ´e ne peut ´echouer.

(45)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

De HM(X) `a HMG(X) 45

La facette fonctionnelle de HMG(X)

Une nouvelle r`egle s’applique aux fonctions d ´efinies par cas:

Jp.e:τ1→τ2K = Jp↓τ1K∧ ∀¯β.D⇒defΓ0inJe:τ2K

o `u β[D]Γ¯ 0estJpτ1K

Les types alg ´ebriques g ´en ´eralis ´es exigent la quantification universelle (d ´ej `a requise par les types existentiels `a la L ¨aufer &

Odersky) et l’implication.

Comme dans HM(X), les deux sp ´ecifications sont ´equivalentes.

(46)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion

De HM(X) `a HMG(X) 46

Un probl`eme ouvert

La contrainte Je:τK est `a pr ´esent exprim ´ee (au minimum) dans la th ´eorie du premier ordre de l’ ´egalit ´e dans un univers de Herbrand, pour laquelle le probl`eme de la satisfiabilit ´e est de complexit ´e non ´el ´ementaire.

Comment restreindre l’ensemble des programmes acceptables, de fac¸on simple, ´el ´egante, sans perte d’expressivit ´e, et de sorte `a garantir que le probl`eme de r ´esolution de contraintes retrouve une complexit ´e faible ?

(47)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 47

Des types aux contraintes

Le syst`eme de types de Damas et Milner Une approche `a base de contraintes HM(X)

Analyse de flots d’information Pr ´esentation

Techniques

Types alg ´ebriques g ´en ´eralis ´es

Des types alg ´ebriques aux types alg ´ebriques g ´en ´eralis ´es Applications

De HM(X) `a HMG(X) Conclusion

(48)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 48

Un credo

Les contraintes constituent un formalisme d ´eclaratif pour raisonner et calculer `a propos des programmes.

(49)

Introduction Des types aux contraintes Analyse de flots d’information Types alg ´ebriques g ´en ´eralis ´es Conclusion 49

Et ensuite ?

L’ ´equipe Cristal veut d ´efinir le successeur potentiel d’Objective Caml. Celui-ci devra ˆetre plus l ´eger, plus expressif, et pourrait proposer, entre autres:

I plus de polymorphisme ;

I des modules plus maniables et composables ;

I la possibilit ´e d’exprimer des invariants plus riches.

Références

Documents relatifs

En d´ eduire un syst` eme d’´ equations cart´ esiennes de D (en coordonn´ ees dans la base canonique)... Construction g´ eom´ etrique des op´ erations

Introduction Transform´ ee de Fourier Alg` ebre lin´ eaire Biblioth` eques de calcul num´ erique Conclusion.. Introduction au calcul

Exercice 2 : D´ eterminer les expressions alg´ ebriques des fonctions affines f , g et h dont les courbes repr´ esentatives sont trac´

En utilisant les axiomes alg´ ebriques d’un corps K montrez l’´ el´ ement neutre de l’addition 0 est unique.. La progression g´

Introduction aux BDR Jean-Paul Comet Les concepts g´en´eraux Notions essentielles Alg`ebre Relationnelle + SQL.. Op´erateurs unaires Traduction en SQL Jointures Op´erateurs

θ-polynˆ omes et m´ etriques rang Codes de Gabidulin g´ en´ eralis´ es R´ esoudre le probl` eme de Reconstruction.. M´ etriques rang et codes de Gabidulin g´ en´ eralis´ es

Le type des ´el´ements des structures alg´ebriques d´efinies ` a partir de zmodType, comme les types ringType et vecType, sont aussi transitivement munis d’une structure de

Big Data, flux de donn´ees, donn´ees de grande dimension, analyse de donn´ees en ligne, analyse en composantes principales partielle, analyse canonique g´en´eralis´ee