Th eorie, conception et r ealisation dun langage de programmation - - PowerPoint PPT Presentation
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
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
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
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
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
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
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
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
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
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
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
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
- p´
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
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
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
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
Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Contexte, motivations, objectif initial
XDuce + ordre sup´ erieur
XDuce
- rdre sup´
erieur
- ? ? ?
16/70
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introduction ❈Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion
Merci !
http://www.cduce.org/
70/70