70
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

Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

Theorie, conception et realisationd’un langage de programmation adapte a

XML

Alain Frisch

Soutenance de these - 13/12/2004Directeur: Giuseppe Castagna

Page 2: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

2/70

Page 3: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

3/70

Page 4: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

4/70

Page 5: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

5/70

Page 6: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

6/70

Page 7: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

Theorie, conception, et realisationd’un langage de programmation adapte a XML

1 . . . XML.

2 . . . langage de programmation adapte . . .

3 . . . conception . . .

4 Theorie . . .

5 . . . realisation . . .

7/70

Page 8: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Plan

1 IntroductionContexte, motivations, objectif initial

2 CDuce : apercu du langage

3 Contributions theoriquesAlgebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

4 Conclusion

8/70

Page 9: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XML et schemas

XML

Un langage de balises.

Pour representer des donnees de nature arborescente.

Representation independante de l’application.

Schemas

Chaque application definit des contraintes sur les documentsXML qu’elle peut manipuler :

balises (nom, structure d’imbrication),attributs (presence, valeurs autorisees),texte (presence).

Un tel ensemble de contraintes est un schema XML.

Il existe des langages pour ecrire des schemas de maniereformelle : DTD, XML-Schema, Relax-NG.

9/70

Page 10: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XML : schemas

Transformation XML

Schema AProgramme T // Schema B

Garanties

Le programme T s’engage a fournir un document XML deschema B si on lui donne un document XML de schema A.

Peut-on le croire ?

10/70

Page 11: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XML : schemas

Application complexe

A

��

A′

��•

��

// •

��•

=={{{{{{{{

��

~~}}}}

}}}}

��B B ′

Toutes les operations effectuees surles documents a l’interieur de l’appli-cation sont-elles legales ?

Operations illegales

Consulter un attribut qui peutne pas exister.

Supprimer un element qui doitetre present.

11/70

Page 12: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XML : schemas et types

Typage dans les langages de programmation : interdire desoperations illegales(1 + "Hello", customer.shutdown()).

Il est naturel de voir les schemas XML comme des types dedonnees, a l’interieur des applications.

XML langages

schemas ←→ typesdocuments ←→ valeurs

12/70

Page 13: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

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 recursives et filtrage.

Theorie

Types = automates d’arbres langages reguliers d’arbres.

Sous-typage = inclusion des langages.

Regular Expression Types for XML (ICFP 2000).Regular Expression Pattern Matching for XML (POPL 2001).

13/70

Page 14: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Sous-typage

Sous-typage dans XDuce

Definition semantique du sous-typage. Pourtant :

Systeme de types : depend du sous-typage.Semantique du langage : dirigee par les types (filtrage).

Paradoxe ?

Non !

La semantique des types ne depend pas du langage.

14/70

Page 15: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Sous-typage

Sous-typage dans XDuce

Definition semantique du sous-typage. Pourtant :

Systeme de types : depend du sous-typage.Semantique du langage : dirigee par les types (filtrage).

Paradoxe ?

Non !

La semantique des types ne depend pas du langage.

15/70

Page 16: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XDuce + ordre superieur

XDuce

��

ordre superieur

��? ? ?

16/70

Page 17: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

XDuce : descendance

XDuce

xxqqqqqqqqqq

%%KKKKKKKKK

**UUUUUUUUUUUUUUUUUU

XHaskell Xtatic CDuce

XHaskell : types XDuce dans Haskell (sous-typage encodedans les type classes) ; pas de filtrage XML, pas de melangeentre XML et fonctions, pas de sous-typage semantique.

(Zhuo Ming Lu, Sulzmann.)

Xtatic : types XDuce dans C# (sous-typage par nom pour lesobjets) ; filtrage limite. Perte du cote structurel des types.

(Pierce, Schmitt, Gapeyev, Levin.)

17/70

Page 18: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Objectif initial de la these

Etendre l’approche ensembliste de XDuce a un calcul d’ordresuperieur, qui permet de melanger librement fonctions et documentsXML, dans un cadre structurel.

Cote langage

XDuce est un langage fonctionnel, mais sans ordre superieur :ca manque !

Plus specialement pour XML : transformations parametrablesde maniere modulaire, systemes de templates de premiereclasse, . . .

Cote λ-calcul

Prospectif

18/70

Page 19: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Objectif initial de la these

Etendre l’approche ensembliste de XDuce a un calcul d’ordresuperieur, qui permet de melanger librement fonctions et documentsXML, dans un cadre structurel.

Cote langage

Cote λ-calcul

Defi intellectuel : sous-typage ensembliste avec types recursifs,combinaisons booleennes, constructeurs de types.

Sous-typage ensembliste (t ≤ s ⇐⇒ JtK ⊆ JsK) :

Facile a expliquer. Exhiber valeur pour illustrer t 6≤ s.Definition conceptuellement simple, independante d’unalgorithme ou d’un systeme axiomatique complexe.

Prospectif

19/70

Page 20: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Contexte, motivations, objectif initial

Objectif initial de la these

Etendre l’approche ensembliste de XDuce a un calcul d’ordresuperieur, qui permet de melanger librement fonctions et documentsXML, dans un cadre structurel.

Cote langage

Cote λ-calcul

Prospectif

Interaction donnees/comportements sur le web(formulaires,javascript,applets,servlets,. . . )

20/70

Page 21: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Plan

1 IntroductionContexte, motivations, objectif initial

2 CDuce : apercu du langage

3 Contributions theoriquesAlgebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

4 Conclusion

21/70

Page 22: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

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

22/70

Page 23: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

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

Page 24: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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)

24/70

Page 25: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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)

25/70

Page 26: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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)

26/70

Page 27: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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

Page 28: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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

28/70

Page 29: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Apercu de CDuce

Ordre superieur

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

Page 30: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Plan

1 IntroductionContexte, motivations, objectif initial

2 CDuce : apercu du langage

3 Contributions theoriquesAlgebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

4 Conclusion

30/70

Page 31: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

XDuce revisite

Encodages des valeurs et des types XML

Sequences.[v1 . . . vn] ≡ (v1, (. . . , (vn, ‘nil) . . .))[t1∗ t2?] ≡ µα.(t1×××α) ∨∨∨ (t2××בnil) ∨∨∨ ‘nil

Elements XML.<tag> [v1 . . . vn] ≡ (tag, [v1, . . . , vn])

Des types bien connus

Types : produits, atomiques, reunions, recursifs.

31/70

Page 32: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Vers CDuce

Encodages des valeurs et des types XML

Sequences.[v1 . . . vn] ≡ (v1, (. . . , (vn, ‘nil) . . .))[t1∗ t2?] ≡ µα.(t1×××α) ∨∨∨ (t2××בnil) ∨∨∨ ‘nil

Elements XML.<tag> [v1 . . . vn] ≡ (tag, [v1, . . . , vn])

Constructeurs : produit, fleche, enregistrement.

Connecteurs booleens : reunion, intersection, difference.

Types recursifs.

32/70

Page 33: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Algebre de types

Types mal formes : a eviter

t = µα.αt = µα.α ∨∨∨ αt = µα.¬¬¬α

Stratification

T = (T , τ) avec τ : T −→ F (T )C ∈ F (T ) := b | t×××t | t→→→t | C∨∨∨C | C∧∧∧C | ¬C | 0 | 1Deux conditions :

Decomposition finie des types

Existence des types recursifs

33/70

Page 34: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Algebre de types : stratification

Tautologies booleennes

Liberte pour quotienter modulo tautologies booleennes.

C∨∨∨C ' CC∧∧∧¬C ' 0

Partage

Liberte pour partager ou non types modulo deroulement.

µα. (α×××α)∨∨∨t?= µα. t∨∨∨(α×××(µβ.β×××α∨∨∨t)∨∨∨α×××α)

34/70

Page 35: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Algebre de types

Resultats

Cadre categorique : souplesse d’implementation ; naturalitedes algorithmes.

Constructions de plusieurs algebres, avec partage minimal,maximal, intermediaire, et caracterisations.

Representation des combinaisons booleennes par arbres dedecision ternaire.

35/70

Page 36: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Sous-typage

Definition ensembliste

t ≤ s ⇐⇒ JtKV ⊆ JsKV ou JtKV = {v | ` v : t}

Circularite !

t ≤ t((JtKV

��` e : t

CC

` v : tgg

36/70

Page 37: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Sous-typage

Definition ensembliste

t ≤ s ⇐⇒ JtKV ⊆ JsKV ou JtKV = {v | ` v : t}

Circularite !

t ≤ t((JtKV

��` e : t

CC

` v : tgg

37/70

Page 38: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Circularite : comment la depasser ?

38/70

Page 39: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Circularite : comment la depasser ?

39/70

Page 40: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t((JtKV

��` e : t

CC

` v : tgg

40/70

Page 41: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

JtKV

��` e : t

CC

` v : tgg

41/70

Page 42: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

JtKV

��` e : t

CC

` v : tgg

42/70

Page 43: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

JtKV

��` e : t

CC

` v : tgg

43/70

Page 44: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

JtKV

��` e : t

CC

` v : tgg

44/70

Page 45: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

JtKV

��` e : t

CC

` v : tgg

45/70

Page 46: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

t ≤ t

,,

???((JtKV

��` e : t

CC

` v : tgg

46/70

Page 47: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Amorcage

JtKD

���

���

t ≤ t

,,

???((JtKV

��` e : t

CC

` v : tgg

47/70

Page 48: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

Interpretation ensembliste : J K : T → P(D)

Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Constructeurs : EJ K : T → P(ED)

ED = C + D × D + DD

EJt1×××t2K = Jt1K× Jt2K ⊆ D × D

EJt1→→→t2K = Jt2KJt1K ⊆ DD

EJt1∨∨∨t2K = EJt1K ∪ EJt2K . . .

48/70

Page 49: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

Interpretation ensembliste : J K : T → P(D)

Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Constructeurs : EJ K : T → P(ED)

ED = C + D × D + DD

EJt1×××t2K = Jt1K× Jt2K ⊆ D × D

EJt1→→→t2K = Jt2KJt1K ⊆ DD

EJt1∨∨∨t2K = EJt1K ∪ EJt2K . . .

49/70

Page 50: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

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

Non !

Pour une simple raison de cardinalite.

On veut in fine que l’ensemble des valeurs soit un modele.

Faisons « comme si »Definition : (D, J K) est un modele si :

∀t, s. JtK ⊆ JsK ⇐⇒ EJtK ⊆ EJsK

(ou : ∀t. JtK = ∅ ⇐⇒ EJtK = ∅)

50/70

Page 51: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

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

Non !

Pour une simple raison de cardinalite.

On veut in fine que l’ensemble des valeurs soit un modele.

Faisons « comme si »Definition : (D, J K) est un modele si :

∀t, s. JtK ⊆ JsK ⇐⇒ EJtK ⊆ EJsK

(ou : ∀t. JtK = ∅ ⇐⇒ EJtK = ∅)

51/70

Page 52: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

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

Non !

Pour une simple raison de cardinalite.

On veut in fine que l’ensemble des valeurs soit un modele.

Faisons « comme si »Definition : (D, J K) est un modele si :

∀t, s. JtK ⊆ JsK ⇐⇒ EJtK ⊆ EJsK

(ou : ∀t. JtK = ∅ ⇐⇒ EJtK = ∅)

52/70

Page 53: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Modeles

Resultats

Caracterisation axiomatique des modeles en terme desimulation (notion coinductive).

Existence d’un modele universel J K0, qui induit la plus granderelation de sous-typage.

Existence de modeles non-universels (plus difficile !).t = µα.(0→→→0)\\\(α→→→0) JtK = ∅?

53/70

Page 54: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Raisonnements dans les modeles

Proprietes simples : transitivite de ≤, variance desconstructeurs, tautologies booleennes, egalites ensemblistes :(t1×××s1)∧∧∧(t2×××s2) ' (t1∧∧∧t2)×××(s1∧∧∧s2)(t→→→s1)∧∧∧(t→→→s2) ' t→→→(s1∧∧∧s2)(t1→→→s)∧∧∧(t2→→→s) ' (t1∨∨∨t2)→→→s

Tres utile pour preparer l’etude algorithmique du sous-typageet pour mener l’etude meta-theorique du systeme de types !

54/70

Page 55: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Sous-typage : decomposition

∧∧∧i∈I

ti×××si ≤∨∨∨i∈J

ti×××si

⇐⇒ ∀J ′ ⊆ J.

(∧∧∧i∈I

ti ≤∨∨∨i∈J′

ti

)ou

∧∧∧i∈I

si ≤∨∨∨

i∈J\J′si

∧∧∧i∈I

ti→→→si ≤∨∨∨i∈J

ti→→→si

⇐⇒ ∃j ∈ J.∀I ′ ⊆ I .

(tj ≤

∨∨∨i∈I ′

ti

)ou

I ′ 6= I et∧∧∧

i∈I\I ′si ≤ sj

55/70

Page 56: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Coller au langage

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

int→→→int?≤ 1→→→1

Resultat : variantes du systeme

Avec/sans fonctions surchargees.

Avec/sans erreur de type a l’application.

56/70

Page 57: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Plan

1 IntroductionContexte, motivations, objectif initial

2 CDuce : apercu du langage

3 Contributions theoriquesAlgebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

4 Conclusion

57/70

Page 58: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Noyau fonctionnel, systeme 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

Page 59: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Noyau fonctionnel, systeme de types

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

59/70

Page 60: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Systeme de types

Resultats

Surete pour une semantique a petits pas.

On obtient un modele en prenant JtKV = {v | ` v : t}. Il estequivalent au modele d’amorce (pour n’importe quel choix dumodele d’amorce). La boucle est bouclee !

Exactitude locale du typage de l’application et du filtrage.

Pas de type « principal », mais algorithme d’inference.

Iterateurs generiques, typage par deroulement des types.

60/70

Page 61: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Plan

1 IntroductionContexte, motivations, objectif initial

2 CDuce : apercu du langage

3 Contributions theoriquesAlgebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

4 Conclusion

61/70

Page 62: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects algorithmiques

Calcul du sous-typage

Pour un modele universel, le predicat unaire P(t) ≡ JtK 6= ∅ est unpredicat inductif (mais pas sur la structure de t qui est cyclique !).

Modularisation

1 Reformuler P(t) comme plus petit point fixe d’un operateurmonotone (contraintes booleennes).

2 Calculer ce plus petit point fixe.

Resultats

1 Divers optimisations (⇐ raisonnements ensemblistes).

2 Solveur top-down sans back-tracking, avec implementationlegere.

62/70

Page 63: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Algebre de types et sous-typageNoyau fonctionnel, systeme de typesAspects 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 declaratif ( robuste)

Resultat

Cadre pour raisonner sur les strategies de compilation.

Critere de correction des optimisations.

Heuristique de compilation.

63/70

Page 64: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Principales contributions

Aspects semantiques

Extension de XDuce avec l’ordre superieur, en preservantl’approche ensembliste.

Calcul de fonctions surchargees. Variante sans surcharge.

Formulation originale pour les types et motifs recursifs.

Filtrage : motifs intersection, capture plus puissante, typageexact.

Enregistrements extensibles et sous-typage ensembliste.

64/70

Page 65: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Principales contributions

Aspects algorithmiques

Compilation optimisee du filtrage.

Modularisation de l’algorithme de sous-typage et calculefficace.

Implementation efficace : representation des valeurs.

65/70

Page 66: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Implementation de CDuce

' 20 000 lignes de code (OCaml).

Distribution publique depuis juin 2003.

Implementation assez efficace (ordre de grandeur des moteursXSLT et XQuery pour transformations/requetes equivalentes).

Prise en compte de tout XML, Unicode, Namespaces.Traduction DTD types, et partiellement pour XMLSchema.

Quelques dizaines d’utilisateurs.

Utilisations : sites web statiques, dynamiques (y compris enproduction), enseignement.

Systeme d’interface type avec OCaml :

Utiliser des bibliotheques OCaml existantes.Appeler CDuce depuis OCaml (projets mixtes).

66/70

Page 67: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Theses autour de CDuce

Analyse de securite (M. Burelle)

Langage de requetes (C. Miachon)

Iterateurs, chemins, . . . (K. Nguyen)

67/70

Page 68: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Travaux futurs

Semantique, typage

Polymorphisme parametrique.

Extension de ML avec types et operations XML.

Inference des types de fonctions.

Logique plus puissante (ex : contraintes d’arite, pointeursID/IDREF).

68/70

Page 69: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Travaux futurs

Algorithmique, compilation

Representation des valeurs dirigee par le type et le contexted’utilisation.

Implementation du partage optimal des types recursifs moduloderoulement + tautologies booleennes.

Modele de cout pour la compilation du filtrage.

69/70

Page 70: Th´eorie, conception et r´ealisation d’un langage de ... · Introduction C Duce : aper¸cu du langage Contributions th´eoriques Conclusion Contexte, motivations, objectif initial

IntroductionCDuce : apercu du langage

Contributions theoriquesConclusion

Merci !

http://www.cduce.org/

70/70