• 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

Thus, we have a uniform description for Cox rings of ADE -surfaces and their relations to configurations of curves, representation theory and flag varieties, as is the purpose of

Par exemple, un problème d’affectation avec contraintes supplémentaires peut être résolu avec un algorithme de construction de l’arbre des solutions dans lequel:. On génère

Elle peut se terminer par un point, c’est alors une phrase impérative, ou par un point d’exclama- tion, c’est alors une phrase exclamative impérative.  Ecoute bien

print (&#34;Vous n ' avez pas donné de nombre correct, nous ne pouvons donc pas donner le carré&#34;) print (&#34;Le carré de&#34;, nombre, &#34;est égale à&#34;, nombre * nombre).

Cette conception d’onduleur, illustrée dans la Figure 5, est une technologie plus récente (10 ans) introduite pour remédier aux inconvénients de la conception on-line double

Extrait du livre Enfants-Poètes de l'Ecole Freinet.. de la Table

Les deux premières fonctions s’appliquent à des expressions d’un type ordinal et donne la valeur de ce type qui suit pour succ, qui précède pour pred.. De même la fonction pred

Syst` emes de types R` egles d’inf´ erence Le syst` eme de types de Zwei.. Analyse