CSI2520 Le langage Scheme Un langage de programmation fonctionnelle.
Th´eorie, conception et r´ealisation d’un langage de ...
Transcript of Th´eorie, conception et r´ealisation d’un langage de ...
![Page 1: Th´eorie, conception et r´ealisation d’un langage de ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/1.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/2.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/3.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/4.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/5.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/6.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/7.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/8.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/9.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/10.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/11.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/12.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/13.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/14.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/15.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/16.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/17.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/18.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/19.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/20.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/21.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/22.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/23.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/24.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/25.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/26.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/27.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/28.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/29.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/30.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/31.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/32.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/33.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/34.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/35.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/36.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/37.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/38.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/39.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/40.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/41.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/42.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/43.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/44.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/45.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/46.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/47.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/48.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/49.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/50.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/51.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/52.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/53.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/54.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/55.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/56.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/57.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/58.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/59.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/60.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/61.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/62.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/63.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/64.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/65.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/66.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/67.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/68.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/69.jpg)
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 ...](https://reader030.fdocument.pub/reader030/viewer/2022012608/619bc885ff25fa6f85039dd0/html5/thumbnails/70.jpg)
IntroductionCDuce : apercu du langage
Contributions theoriquesConclusion
Merci !
http://www.cduce.org/
70/70