Th eorie, conception et r ealisation dun langage de programmation - - PowerPoint PPT Presentation

th eorie conception et r ealisation d un langage de
SMART_READER_LITE
LIVE PREVIEW

Th eorie, conception et r ealisation dun langage de programmation - - PowerPoint PPT Presentation

Th eorie, conception et r ealisation dun langage de programmation adapt e ` a XML Alain Frisch Soutenance de th` ese - 13/12/2004 Directeur: Giuseppe Castagna Introduction Duce : aper cu du langage Contributions th


slide-1
SLIDE 1

Th´ eorie, conception et r´ ealisation d’un langage de programmation adapt´ e ` a XML

Alain Frisch Soutenance de th` ese - 13/12/2004 Directeur: Giuseppe Castagna

slide-2
SLIDE 2

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

2/70

slide-3
SLIDE 3

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

1

. . . XML.

3/70

slide-4
SLIDE 4

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

1

. . . XML.

2

. . . langage de programmation adapt´ e . . .

4/70

slide-5
SLIDE 5

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

1

. . . XML.

2

. . . langage de programmation adapt´ e . . .

3

. . . conception . . .

5/70

slide-6
SLIDE 6

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

1

. . . XML.

2

. . . langage de programmation adapt´ e . . .

3

. . . conception . . .

4

Th´ eorie . . .

6/70

slide-7
SLIDE 7

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML

1

. . . XML.

2

. . . langage de programmation adapt´ e . . .

3

. . . conception . . .

4

Th´ eorie . . .

5

. . . r´ ealisation . . .

7/70

slide-8
SLIDE 8

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Plan

1

Introduction Contexte, motivations, objectif initial

2 ❈Duce : aper¸

cu du langage

3 Contributions th´

eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

4 Conclusion

8/70

slide-9
SLIDE 9

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XML et sch´ emas

XML Un langage de balises. Pour repr´ esenter des donn´ ees de nature arborescente. Repr´ esentation ind´ ependante de l’application. Sch´ emas Chaque application d´ efinit des contraintes sur les documents XML qu’elle peut manipuler :

balises (nom, structure d’imbrication), attributs (pr´ esence, valeurs autoris´ ees), texte (pr´ esence).

Un tel ensemble de contraintes est un sch´ ema XML. Il existe des langages pour ´ ecrire des sch´ emas de mani` ere formelle : DTD, XML-Schema, Relax-NG.

9/70

slide-10
SLIDE 10

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XML : sch´ emas

Transformation XML Sch´ ema A Programme T Sch´ ema B Garanties Le programme T s’engage ` a fournir un document XML de sch´ ema B si on lui donne un document XML de sch´ ema A. Peut-on le croire ?

10/70

slide-11
SLIDE 11

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XML : sch´ emas

Application complexe A

  • A′
  • B

B′ Toutes les op´ erations effectu´ ees sur les documents ` a l’int´ erieur de l’appli- cation sont-elles l´ egales ? Op´ erations ill´ egales Consulter un attribut qui peut ne pas exister. Supprimer un ´ el´ ement qui doit ˆ etre pr´ esent.

11/70

slide-12
SLIDE 12

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XML : sch´ emas et types

Typage dans les langages de programmation : interdire des

erations ill´ egales (1 + "Hello", customer.shutdown()). Il est naturel de voir les sch´ emas XML comme des types de donn´ ees, ` a l’int´ erieur des applications. XML langages sch´ emas ← → types documents ← → valeurs

12/70

slide-13
SLIDE 13

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XDuce (Hosoya, Vouillon, Pierce)

Pour le programmeur Un langage pour la transformation de documents XML. Types ≃ DTD. Valeurs = arbres XML. Style fonctionnel. Fonctions r´ ecursives et filtrage. Th´ eorie Types = automates d’arbres langages r´ eguliers d’arbres. Sous-typage = inclusion des langages. Regular Expression Types for XML (ICFP 2000). Regular Expression Pattern Matching for XML (POPL 2001).

13/70

slide-14
SLIDE 14

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Sous-typage

Sous-typage dans XDuce D´ efinition s´ emantique du sous-typage. Pourtant :

Syst` eme de types : d´ epend du sous-typage. S´ emantique du langage : dirig´ ee par les types (filtrage).

Paradoxe ?

14/70

slide-15
SLIDE 15

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Sous-typage

Sous-typage dans XDuce D´ efinition s´ emantique du sous-typage. Pourtant :

Syst` eme de types : d´ epend du sous-typage. S´ emantique du langage : dirig´ ee par les types (filtrage).

Paradoxe ? Non ! La s´ emantique des types ne d´ epend pas du langage.

15/70

slide-16
SLIDE 16

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XDuce + ordre sup´ erieur

XDuce

  • rdre sup´

erieur

  • ? ? ?

16/70

slide-17
SLIDE 17

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

XDuce : descendance

XDuce

  • XHaskell

Xtatic ❈Duce XHaskell : types XDuce dans Haskell (sous-typage encod´ e dans les type classes) ; pas de filtrage XML, pas de m´ elange entre XML et fonctions, pas de sous-typage s´ emantique. (Zhuo Ming Lu, Sulzmann.) Xtatic : types XDuce dans C# (sous-typage par nom pour les

  • bjets) ; filtrage limit´
  • e. Perte du cot´

e structurel des types. (Pierce, Schmitt, Gapeyev, Levin.)

17/70

slide-18
SLIDE 18

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Objectif initial de la th` ese

´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage XDuce est un langage fonctionnel, mais sans ordre sup´ erieur : ¸ ca manque ! Plus sp´ ecialement pour XML : transformations param´ etrables de mani` ere modulaire, syst` emes de templates de premi` ere classe, . . . Cot´ e λ-calcul Prospectif

18/70

slide-19
SLIDE 19

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Objectif initial de la th` ese

´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage Cot´ e λ-calcul D´ efi intellectuel : sous-typage ensembliste avec types r´ ecursifs, combinaisons bool´ eennes, constructeurs de types. Sous-typage ensembliste (t ≤ s ⇐ ⇒ t ⊆ s) :

Facile ` a expliquer. Exhiber valeur pour illustrer t ≤ s. D´ efinition conceptuellement simple, ind´ ependante d’un algorithme ou d’un syst` eme axiomatique complexe.

Prospectif

19/70

slide-20
SLIDE 20

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial

Objectif initial de la th` ese

´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage Cot´ e λ-calcul Prospectif Interaction donn´ ees/comportements sur le web (formulaires,javascript,applets,servlets,. . . )

20/70

slide-21
SLIDE 21

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Plan

1 Introduction

Contexte, motivations, objectif initial

2

❈Duce : aper¸ cu du langage

3 Contributions th´

eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

4 Conclusion

21/70

slide-22
SLIDE 22

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Types XML

type Bib = [ Book* ] type Book = <book>[ Title Subtitle? Author+ ] type Title = <title>[ PCDATA ] type Subtitle = <title>[ PCDATA ] type Author = <author>[ PCDATA ]

Fonctions et filtrage

let title(Book -> String) <book>[ <title>x _* ] -> x 22/70

slide-23
SLIDE 23

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Types XML

type Bib = [ Book* ] type Book = <book>[ Title Subtitle? Author+ ] type Title = <title>[ PCDATA ] type Subtitle = <title>[ PCDATA ] type Author = <author>[ PCDATA ]

Fonctions et filtrage

let title(Book -> String) <book>[ <title>x _* ] -> x let author(Book -> [ Author+ ]) <book>[ (x::Author | _)* ] -> x 23/70

slide-24
SLIDE 24

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

type FBook = Book -> String type ABook = <book print=FBook>[ Title Subtitle? Author+ ] type ABib = [ ABook* ] Remarque: ABook ≤ Book ABib ≤ Bib 24/70

slide-25
SLIDE 25

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

type FBook = Book -> String type ABook = <book print=FBook>[ Title Subtitle? Author+ ] type ABib = [ ABook* ] Remarque: ABook ≤ Book ABib ≤ Bib let set(<book>c : Book)(f : FBook) : ABook = <book print=f>c 25/70

slide-26
SLIDE 26

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

type FBook = Book -> String type ABook = <book print=FBook>[ Title Subtitle? Author+ ] type ABib = [ ABook* ] Remarque: ABook ≤ Book ABib ≤ Bib let set(<book>c : Book)(f : FBook) : ABook = <book print=f>c let prepare(b : Bib) : ABib = map b with x -> set x title 26/70

slide-27
SLIDE 27

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

type FBook = Book -> String type ABook = <book print=FBook>[ Title Subtitle? Author+ ] type ABib = [ ABook* ] Remarque: ABook ≤ Book ABib ≤ Bib let set(<book>c : Book)(f : FBook) : ABook = <book print=f>c let prepare(b : Bib) : ABib = map b with x -> set x title type Ul = <ul>[ Li+ ] type Li = <li>[ PCDATA ] let display (ABib -> Ul; ABook -> Li) | <book print=f>_ & x -> <li>(f x) | [] -> raise "Empty bibliography" | p -> <ul>(map p with z -> display z) 27/70

slide-28
SLIDE 28

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

let change(p : Book -> Bool)(f : FBook)(b : ABib) : ABib = map b with x -> if (p x) then set x f else x 28/70

slide-29
SLIDE 29

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Aper¸ cu de ❈Duce

Ordre sup´ erieur

let change(p : Book -> Bool)(f : FBook)(b : ABib) : ABib = map b with x -> if (p x) then set x f else x type HasSub = <_>[ _* Subtitle _* ] let change_if_sub = change (fun (Book -> Bool) HasSub -> ‘true | _ -> ‘false) let subtitle_first (Bib -> Bib; ABib -> ABib) [ (x::HasSub | y::_)* ] -> x @ y 29/70

slide-30
SLIDE 30

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Plan

1 Introduction

Contexte, motivations, objectif initial

2 ❈Duce : aper¸

cu du langage

3

Contributions th´ eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

4 Conclusion

30/70

slide-31
SLIDE 31

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

XDuce revisit´ e

Encodages des valeurs et des types XML S´ equences. [v1 . . . vn] ≡ (v1, (. . . , (vn, ‘nil) . . .)) [t1∗ t2?] ≡ µα.(t1× × ×α) ∨ ∨ ∨ (t2× × ×‘nil) ∨ ∨ ∨ ‘nil ´ El´ ements XML. <tag> [v1 . . . vn] ≡ (tag, [v1, . . . , vn]) Des types bien connus Types : produits, atomiques, r´ eunions, r´ ecursifs.

31/70

slide-32
SLIDE 32

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Vers ❈Duce

Encodages des valeurs et des types XML S´ equences. [v1 . . . vn] ≡ (v1, (. . . , (vn, ‘nil) . . .)) [t1∗ t2?] ≡ µα.(t1× × ×α) ∨ ∨ ∨ (t2× × ×‘nil) ∨ ∨ ∨ ‘nil ´ El´ ements XML. <tag> [v1 . . . vn] ≡ (tag, [v1, . . . , vn]) Constructeurs : produit, fl` eche, enregistrement. Connecteurs bool´ eens : r´ eunion, intersection, diff´ erence. Types r´ ecursifs.

32/70

slide-33
SLIDE 33

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Alg` ebre de types

Types mal form´ es : ` a ´ eviter t = µα.α t = µα.α ∨ ∨ ∨ α t = µα.¬ ¬ ¬α Stratification ❚ = (T, τ) avec τ : T − → F(T) C ∈ F(T) := b | t× × ×t | t→ → →t | C∨ ∨ ∨C | C∧ ∧ ∧C | ¬C | ✵ | ✶ Deux conditions : D´ ecomposition finie des types Existence des types r´ ecursifs

33/70

slide-34
SLIDE 34

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Alg` ebre de types : stratification

Tautologies bool´ eennes Libert´ e pour quotienter modulo tautologies bool´ eennes. C∨ ∨ ∨C ≃ C C∧ ∧ ∧¬C ≃ ✵ Partage Libert´ e pour partager ou non types modulo d´ eroulement. µα. (α× × ×α)∨ ∨ ∨t ? = µα. t∨ ∨ ∨(α× × ×(µβ.β× × ×α∨ ∨ ∨t)∨ ∨ ∨α× × ×α)

34/70

slide-35
SLIDE 35

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Alg` ebre de types

R´ esultats Cadre cat´ egorique : souplesse d’impl´ ementation ; naturalit´ e des algorithmes. Constructions de plusieurs alg` ebres, avec partage minimal, maximal, interm´ ediaire, et caract´ erisations. Repr´ esentation des combinaisons bool´ eennes par arbres de d´ ecision ternaire.

35/70

slide-36
SLIDE 36

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Sous-typage

D´ efinition ensembliste t ≤ s ⇐ ⇒ tV ⊆ sV

  • `

u tV = {v | ⊢ v : t}

36/70

slide-37
SLIDE 37

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Sous-typage

D´ efinition ensembliste t ≤ s ⇐ ⇒ tV ⊆ sV

  • `

u tV = {v | ⊢ v : t} Circularit´ e ! t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 37/70
slide-38
SLIDE 38

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Circularit´ e : comment la d´ epasser ?

38/70

slide-39
SLIDE 39

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Circularit´ e : comment la d´ epasser ?

39/70

slide-40
SLIDE 40

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 40/70
slide-41
SLIDE 41

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 41/70
slide-42
SLIDE 42

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 42/70
slide-43
SLIDE 43

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 43/70
slide-44
SLIDE 44

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 44/70
slide-45
SLIDE 45

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 45/70
slide-46
SLIDE 46

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD t ≤ t

  • ???
  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 46/70
slide-47
SLIDE 47

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Amor¸ cage

tD

  • t ≤ t
  • ???
  • tV
  • ⊢ e : t
  • ⊢ v : t
  • 47/70
slide-48
SLIDE 48

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

Interpr´ etation ensembliste : : T → P(D) t1∨ ∨ ∨t2 = t1 ∪ t2 t1∧ ∧ ∧t2 = t1 ∩ t2 ¬ ¬ ¬t = D\t ✵ = ∅ ✶ = D ❊ ❊ ❊ ❊ ❊ ❊ ❊ ❊

48/70

slide-49
SLIDE 49

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

Interpr´ etation ensembliste : : T → P(D) t1∨ ∨ ∨t2 = t1 ∪ t2 t1∧ ∧ ∧t2 = t1 ∩ t2 ¬ ¬ ¬t = D\t ✵ = ∅ ✶ = D Constructeurs : ❊ : T → P(❊D) ❊D = C + D × D + DD ❊t1× × ×t2 = t1 × t2 ⊆ D × D ❊t1→ → →t2 = t2t1 ⊆ DD ❊t1∨ ∨ ∨t2 = ❊t1 ∪ ❊t2 . . .

49/70

slide-50
SLIDE 50

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

Peut-on avoir D = ❊D = C + D × D + DD ? ❊ ❊ ❊

50/70

slide-51
SLIDE 51

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

Peut-on avoir D = ❊D = C + D × D + DD ? Non ! Pour une simple raison de cardinalit´ e. On veut in fine que l’ensemble des valeurs soit un mod` ele. ❊ ❊ ❊

51/70

slide-52
SLIDE 52

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

Peut-on avoir D = ❊D = C + D × D + DD ? Non ! Pour une simple raison de cardinalit´ e. On veut in fine que l’ensemble des valeurs soit un mod` ele. Faisons « comme si » D´ efinition : (D, ) est un mod` ele si : ∀t, s. t ⊆ s ⇐ ⇒ ❊t ⊆ ❊s (ou : ∀t. t = ∅ ⇐ ⇒ ❊t = ∅)

52/70

slide-53
SLIDE 53

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Mod` eles

R´ esultats Caract´ erisation axiomatique des mod` eles en terme de simulation (notion coinductive). Existence d’un mod` ele universel 0, qui induit la plus grande relation de sous-typage. Existence de mod` eles non-universels (plus difficile !). t = µα.(✵→ → →✵)\ \ \(α→ → →✵) t = ∅?

53/70

slide-54
SLIDE 54

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Raisonnements dans les mod` eles

Propri´ et´ es simples : transitivit´ e de ≤, variance des constructeurs, tautologies bool´ eennes, ´ egalit´ es ensemblistes : (t1× × ×s1)∧ ∧ ∧(t2× × ×s2) ≃ (t1∧ ∧ ∧t2)× × ×(s1∧ ∧ ∧s2) (t→ → →s1)∧ ∧ ∧(t→ → →s2) ≃ t→ → →(s1∧ ∧ ∧s2) (t1→ → →s)∧ ∧ ∧(t2→ → →s) ≃ (t1∨ ∨ ∨t2)→ → →s Tr` es utile pour pr´ eparer l’´ etude algorithmique du sous-typage et pour mener l’´ etude m´ eta-th´ eorique du syst` eme de types !

54/70

slide-55
SLIDE 55

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Sous-typage : d´ ecomposition

  • i∈I

ti× × ×si ≤

  • i∈J

ti× × ×si ⇐ ⇒ ∀J′ ⊆ J.

  • i∈I

ti ≤

  • i∈J′

ti

  • u

 

  • i∈I

si ≤

  • i∈J\J′

si  

  • i∈I

ti→ → →si ≤

  • i∈J

ti→ → →si ⇐ ⇒ ∃j ∈ J.∀I ′ ⊆ I.

  • tj ≤
  • i∈I ′

ti

  • u

 I ′ = I et

  • i∈I\I ′

si ≤ sj  

55/70

slide-56
SLIDE 56

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Coller au langage

(t1→ → →s1)∧ ∧ ∧(t2→ → →s2)

?

≤ (t1∨ ∨ ∨t2)→ → →(s1∧ ∧ ∧s2) int→ → →int

?

≤ ✶→ → →✶ R´ esultat : variantes du syst` eme Avec/sans fonctions surcharg´ ees. Avec/sans erreur de type ` a l’application.

56/70

slide-57
SLIDE 57

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Plan

1 Introduction

Contexte, motivations, objectif initial

2 ❈Duce : aper¸

cu du langage

3

Contributions th´ eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

4 Conclusion

57/70

slide-58
SLIDE 58

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Noyau fonctionnel, syst` eme de types

Γ ⊢ e : t1 t1 ≤ t2 Γ ⊢ e : t2 Γ ⊢ c : bc Γ ⊢ x : Γ(x) Γ ⊢ e1 : t1 Γ ⊢ e2 : t2 Γ ⊢ (e1, e2) : t1× × ×t2 Γ ⊢ e1 : t→ → →s Γ ⊢ e2 : t Γ ⊢ e1e2 : s ∀i = 1..n. (x : ti), Γ ⊢ e : si Γ ⊢ λt1→

→ →s1;...;tn→ → →snx.e :

  • i=1..n

(ti→ → →si)

58/70

slide-59
SLIDE 59

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Noyau fonctionnel, syst` eme de types

Γ ⊢ e : t0 (x : t0∧ ∧ ∧t), Γ ⊢ e1 : s1 (x : t0\ \ \t), Γ ⊢ e2 : s2 Γ ⊢ (x = e ∈ t?e1|e2) : s1∨ ∨ ∨s2

59/70

slide-60
SLIDE 60

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Syst` eme de types

R´ esultats Sˆ uret´ e pour une s´ emantique ` a petits pas. On obtient un mod` ele en prenant tV = {v | ⊢ v : t}. Il est ´ equivalent au mod` ele d’amorce (pour n’importe quel choix du mod` ele d’amorce). La boucle est boucl´ ee ! Exactitude locale du typage de l’application et du filtrage. Pas de type « principal », mais algorithme d’inf´ erence. It´ erateurs g´ en´ eriques, typage par d´ eroulement des types.

60/70

slide-61
SLIDE 61

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Plan

1 Introduction

Contexte, motivations, objectif initial

2 ❈Duce : aper¸

cu du langage

3

Contributions th´ eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

4 Conclusion

61/70

slide-62
SLIDE 62

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Calcul du sous-typage

Pour un mod` ele universel, le pr´ edicat unaire P(t) ≡ t = ∅ est un pr´ edicat inductif (mais pas sur la structure de t qui est cyclique !). Modularisation

1

Reformuler P(t) comme plus petit point fixe d’un op´ erateur monotone (contraintes bool´ eennes).

2

Calculer ce plus petit point fixe. R´ esultats

1

Divers optimisations (⇐ raisonnements ensemblistes).

2

Solveur top-down sans back-tracking, avec impl´ ementation l´ eg` ere.

62/70

slide-63
SLIDE 63

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques

Compilation du filtrage

Un exemple

type A = <a>[ A* ] type B = <b>[ B* ] fun (A|B -> Int) A -> 0 | B -> 1 ≃ fun (A|B -> Int) <a>_ -> 0 | _ -> 1

Tirer partie des informations de types statiques Autoriser un style plus d´ eclaratif ( robuste) R´ esultat Cadre pour raisonner sur les strat´ egies de compilation. Crit` ere de correction des optimisations. Heuristique de compilation.

63/70

slide-64
SLIDE 64

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Principales contributions

Aspects s´ emantiques Extension de XDuce avec l’ordre sup´ erieur, en pr´ eservant l’approche ensembliste. Calcul de fonctions surcharg´

  • ees. Variante sans surcharge.

Formulation originale pour les types et motifs r´ ecursifs. Filtrage : motifs intersection, capture plus puissante, typage exact. Enregistrements extensibles et sous-typage ensembliste.

64/70

slide-65
SLIDE 65

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Principales contributions

Aspects algorithmiques Compilation optimis´ ee du filtrage. Modularisation de l’algorithme de sous-typage et calcul efficace. Impl´ ementation efficace : repr´ esentation des valeurs.

65/70

slide-66
SLIDE 66

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Impl´ ementation de ❈Duce

≃ 20 000 lignes de code (OCaml). Distribution publique depuis juin 2003. Impl´ ementation assez efficace (ordre de grandeur des moteurs XSLT et XQuery pour transformations/requˆ etes ´ equivalentes). Prise en compte de tout XML, Unicode, Namespaces. Traduction DTD types, et partiellement pour XML Schema. Quelques dizaines d’utilisateurs. Utilisations : sites web statiques, dynamiques (y compris en production), enseignement. Syst` eme d’interface typ´ e avec OCaml :

Utiliser des biblioth` eques OCaml existantes. Appeler ❈Duce depuis OCaml (projets mixtes).

66/70

slide-67
SLIDE 67

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Th` eses autour de ❈Duce

Analyse de s´ ecurit´ e (M. Burelle) Langage de requˆ etes (C. Miachon) It´ erateurs, chemins, . . . (K. Nguyen)

67/70

slide-68
SLIDE 68

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Travaux futurs

S´ emantique, typage Polymorphisme param´ etrique. Extension de ML avec types et op´ erations XML. Inf´ erence des types de fonctions. Logique plus puissante (ex : contraintes d’arit´ e, pointeurs ID/IDREF).

68/70

slide-69
SLIDE 69

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Travaux futurs

Algorithmique, compilation Repr´ esentation des valeurs dirig´ ee par le type et le contexte d’utilisation. Impl´ ementation du partage optimal des types r´ ecursifs modulo d´ eroulement + tautologies bool´ eennes. Mod` ele de coˆ ut pour la compilation du filtrage.

69/70

slide-70
SLIDE 70

Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion

Merci !

http://www.cduce.org/

70/70