Transcript
Page 1: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Theory and practice of XML processingprogramming languages

Giuseppe Castagna

CNRSUniversite Paris 7 - Denis Diderot

MPRI Lectures on Theory of Subtyping

G. Castagna: Theory and practice of XML processing languages 1/110

Page 2: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Outline of the lecture

1 XML Programming in CDuce

XML Regular Expression Types and PatternsXML Programming in CDuceTools on top of CDuce

2 Theoretical Foundations

Semantic subtypingSubtyping algorithmsCDuce functional core

3 Polymorphic Subtyping

Current statusSemantic solutionSubtyping algorithm

4 Polymorphic Language

Motivating exampleFormal settingExplicit substitutionsInference SystemEfficient implementation

G. Castagna: Theory and practice of XML processing languages 2/110

Page 3: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Outline of the lecture

1 XML Programming in CDuceXML Regular Expression Types and PatternsXML Programming in CDuceTools on top of CDuce

2 Theoretical Foundations

Semantic subtypingSubtyping algorithmsCDuce functional core

3 Polymorphic Subtyping

Current statusSemantic solutionSubtyping algorithm

4 Polymorphic Language

Motivating exampleFormal settingExplicit substitutionsInference SystemEfficient implementation

G. Castagna: Theory and practice of XML processing languages 2/110

Page 4: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Outline of the lecture

1 XML Programming in CDuceXML Regular Expression Types and PatternsXML Programming in CDuceTools on top of CDuce

2 Theoretical FoundationsSemantic subtypingSubtyping algorithmsCDuce functional core

3 Polymorphic Subtyping

Current statusSemantic solutionSubtyping algorithm

4 Polymorphic Language

Motivating exampleFormal settingExplicit substitutionsInference SystemEfficient implementation

G. Castagna: Theory and practice of XML processing languages 2/110

Page 5: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Outline of the lecture

1 XML Programming in CDuceXML Regular Expression Types and PatternsXML Programming in CDuceTools on top of CDuce

2 Theoretical FoundationsSemantic subtypingSubtyping algorithmsCDuce functional core

3 Polymorphic SubtypingCurrent statusSemantic solutionSubtyping algorithm

4 Polymorphic Language

Motivating exampleFormal settingExplicit substitutionsInference SystemEfficient implementation

G. Castagna: Theory and practice of XML processing languages 2/110

Page 6: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

MPRI

Outline of the lecture

1 XML Programming in CDuceXML Regular Expression Types and PatternsXML Programming in CDuceTools on top of CDuce

2 Theoretical FoundationsSemantic subtypingSubtyping algorithmsCDuce functional core

3 Polymorphic SubtypingCurrent statusSemantic solutionSubtyping algorithm

4 Polymorphic LanguageMotivating exampleFormal settingExplicit substitutionsInference SystemEfficient implementation

G. Castagna: Theory and practice of XML processing languages 2/110

Page 7: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

PART 1: XML PROGRAMMING INCDUCE

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 3/110

Page 8: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Programming with XML

Level 0: textual representation of XML documents

AWK, sed, Perl

Level 1: abstract view provided by a parser

SAX, DOM, . . .

Level 2: untyped XML-specific languages

XSLT, XPath

Level 3: XML types taken seriously (aka: related work)

XDuce, XtaticXQueryCω (Microsoft). . .

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 4/110

Page 9: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Programming with XML

Level 0: textual representation of XML documents

AWK, sed, Perl

Level 1: abstract view provided by a parser

SAX, DOM, . . .

Level 2: untyped XML-specific languages

XSLT, XPath

Level 3: XML types taken seriously (aka: related work)

XDuce, XtaticXQueryCω (Microsoft). . .

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 4/110

Page 10: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Programming with XML

Level 0: textual representation of XML documents

AWK, sed, Perl

Level 1: abstract view provided by a parser

SAX, DOM, . . .

Level 2: untyped XML-specific languages

XSLT, XPath

Level 3: XML types taken seriously (aka: related work)

XDuce, XtaticXQueryCω (Microsoft). . .

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 4/110

Page 11: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Programming with XML

Level 0: textual representation of XML documents

AWK, sed, Perl

Level 1: abstract view provided by a parser

SAX, DOM, . . .

Level 2: untyped XML-specific languages

XSLT, XPath

Level 3: XML types taken seriously (aka: related work)

XDuce, XtaticXQueryCω (Microsoft). . .

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 4/110

Page 12: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Programming with XML

Level 0: textual representation of XML documents

AWK, sed, Perl

Level 1: abstract view provided by a parser

SAX, DOM, . . .

Level 2: untyped XML-specific languages

XSLT, XPath

Level 3: XML types taken seriously (aka: related work)

XDuce, XtaticXQueryCω (Microsoft). . .

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 4/110

Page 13: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Presentation of CDuce

Features:Oriented to XML processingType centricGeneral-purpose featuresVery efficient

Intended use:Small “adapters” between different XML applicationsLarger applications that use XMLWeb developmentWeb services

Status:Public release available (0.5.3) in all major Linux distributions.

Integration with standardsInternally: Unicode, XML, Namespaces, XML SchemaExternally: DTD, WSDL

Some tools: graphical queries, code embedding (a la php)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 5/110

Page 14: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Presentation of CDuceFeatures:

Oriented to XML processingType centricGeneral-purpose featuresVery efficient

Intended use:Small “adapters” between different XML applicationsLarger applications that use XMLWeb developmentWeb services

Status:Public release available (0.5.3) in all major Linux distributions.

Integration with standardsInternally: Unicode, XML, Namespaces, XML SchemaExternally: DTD, WSDL

Some tools: graphical queries, code embedding (a la php)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 5/110

Page 15: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Presentation of CDuceFeatures:

Oriented to XML processingType centricGeneral-purpose featuresVery efficient

Intended use:Small “adapters” between different XML applicationsLarger applications that use XMLWeb developmentWeb services

Status:Public release available (0.5.3) in all major Linux distributions.

Integration with standardsInternally: Unicode, XML, Namespaces, XML SchemaExternally: DTD, WSDL

Some tools: graphical queries, code embedding (a la php)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 5/110

Page 16: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Presentation of CDuceFeatures:

Oriented to XML processingType centricGeneral-purpose featuresVery efficient

Intended use:Small “adapters” between different XML applicationsLarger applications that use XMLWeb developmentWeb services

Status:Public release available (0.5.3) in all major Linux distributions.

Integration with standardsInternally: Unicode, XML, Namespaces, XML SchemaExternally: DTD, WSDL

Some tools: graphical queries, code embedding (a la php)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 5/110

Page 17: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Presentation of CDuceFeatures:

Oriented to XML processingType centricGeneral-purpose featuresVery efficient

Intended use:Small “adapters” between different XML applicationsLarger applications that use XMLWeb developmentWeb services

Status:Public release available (0.5.3) in all major Linux distributions.

Integration with standardsInternally: Unicode, XML, Namespaces, XML SchemaExternally: DTD, WSDL

Some tools: graphical queries, code embedding (a la php)

Used both for teaching and in production code.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 5/110

Page 18: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types, Types, Types!!!

Types are pervasive in CDuce:

Static validationE.g.: does the transformation produce valid XHTML ?

Type-driven programming semanticsAt the basis of the definition of patternsDynamic dispatchOverloaded functions

Type-driven compilationOptimizations made possible by static typesAvoids unnecessary and redundant tests at runtimeAllows a more declarative style

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 6/110

Page 19: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types, Types, Types!!!

Types are pervasive in CDuce:

Static validationE.g.: does the transformation produce valid XHTML ?

Type-driven programming semanticsAt the basis of the definition of patternsDynamic dispatchOverloaded functions

Type-driven compilationOptimizations made possible by static typesAvoids unnecessary and redundant tests at runtimeAllows a more declarative style

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 6/110

Page 20: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types, Types, Types!!!

Types are pervasive in CDuce:

Static validationE.g.: does the transformation produce valid XHTML ?

Type-driven programming semanticsAt the basis of the definition of patternsDynamic dispatchOverloaded functions

Type-driven compilationOptimizations made possible by static typesAvoids unnecessary and redundant tests at runtimeAllows a more declarative style

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 6/110

Page 21: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types, Types, Types!!!

Types are pervasive in CDuce:

Static validationE.g.: does the transformation produce valid XHTML ?

Type-driven programming semanticsAt the basis of the definition of patternsDynamic dispatchOverloaded functions

Type-driven compilationOptimizations made possible by static typesAvoids unnecessary and redundant tests at runtimeAllows a more declarative style

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 6/110

Page 22: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Regular ExpressionTypes and Patterns for XML

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 7/110

Page 23: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types & patterns: the functional languages perspective

Types are sets of values

Values are decomposed by patterns

Patterns are roughly values with capture variables

Instead of

let x = fst(e) inlet y = snd(e) in (y,x)

with pattern one can write

let (x,y) = e in (y,x)

which is syntactic sugar for

match e with (x,y) -> (y,x)

“match” is more interesting than “let”, since it can testseveral “|||”-separated patterns.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 8/110

Page 24: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types & patterns: the functional languages perspective

Types are sets of values

Values are decomposed by patterns

Patterns are roughly values with capture variables

Instead of

let x = fst(e) inlet y = snd(e) in (y,x)

with pattern one can write

let (x,y) = e in (y,x)

which is syntactic sugar for

match e with (x,y) -> (y,x)

“match” is more interesting than “let”, since it can testseveral “|||”-separated patterns.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 8/110

Page 25: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types & patterns: the functional languages perspective

Types are sets of values

Values are decomposed by patterns

Patterns are roughly values with capture variables

Instead of

let x = fst(e) inlet y = snd(e) in (y,x)

with pattern one can write

let (x,y) = e in (y,x)

which is syntactic sugar for

match e with (x,y) -> (y,x)

“match” is more interesting than “let”, since it can testseveral “|||”-separated patterns.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 8/110

Page 26: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types & patterns: the functional languages perspective

Types are sets of values

Values are decomposed by patterns

Patterns are roughly values with capture variables

Instead of

let x = fst(e) inlet y = snd(e) in (y,x)

with pattern one can write

let (x,y) = e in (y,x)

which is syntactic sugar for

match e with (x,y) -> (y,x)

“match” is more interesting than “let”, since it can testseveral “|||”-separated patterns.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 8/110

Page 27: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Types & patterns: the functional languages perspective

Types are sets of values

Values are decomposed by patterns

Patterns are roughly values with capture variables

Instead of

let x = fst(e) inlet y = snd(e) in (y,x)

with pattern one can write

let (x,y) = e in (y,x)

which is syntactic sugar for

match e with (x,y) -> (y,x)

“match” is more interesting than “let”, since it can testseveral “|||”-separated patterns.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 8/110

Page 28: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 29: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 30: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 31: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 32: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , nnn) -> n| (( ,ttt), nnn) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 33: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 34: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil‘nil‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 35: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 36: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 37: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List)(Any,List)(Any,List) | ‘nil

fun length (x:(List,Int)(List,Int)(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 38: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 39: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil‘nil‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 40: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 41: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (AnyAnyAny,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 42: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Key idea behind regular patterns

Patterns are types with capture variables

Define types: patterns come for free.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 43: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Key idea behind regular patterns

Patterns are types with capture variables

Define types: patterns come for free.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 44: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Example: tail-recursive version of length for lists:

type List = (Any,List) | ‘nil

fun length (x:(List,Int)) : Int =match x with| (‘nil , n) -> n| (( ,t), n) -> length(t,n+1)

So patterns are values with capture variables, wildcards, constants.

But if we:

1 use for types the same constructors as for values(e.g. (s,t) instead of s × t)

2 use values to denote singleton types(e.g. ‘nil in the list type);

3 consider the wildcard “ ” as synonym of Any

Key idea behind regular patterns

Patterns are types with capture variables

Define types: patterns come for free.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 9/110

Page 45: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 46: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 47: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 48: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 49: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 50: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 51: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 52: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 53: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t&&& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \\\ *** p1+++)&&& *** p2+++;- The type of the match is t1|||t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

t = {v | v value of type t} and ***p+++ = {v | v matches pattern p}

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 54: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 55: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Roadmap to extend it to XML:

1 Define types for XML documents,2 Add boolean type constructors,3 Define patterns as types with capture variables

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 56: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Roadmap to extend it to XML:

1 Define types for XML documents,

2 Add boolean type constructors,3 Define patterns as types with capture variables

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 57: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Roadmap to extend it to XML:

1 Define types for XML documents,2 Add boolean type constructors,

3 Define patterns as types with capture variables

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 58: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Which types should we start from?

Patterns are tightly connected to boolean type constructors,that is unions (|), intersections (&) and differences (\\\):

Boolean operators are needed to type pattern matching:match e with p1 -> e1 | p2 -> e2

- To infer the type t1 of e1 we need t& *** p1+++ (where e : t);- To infer the type t2 of e2 we need (t \ *** p1+++)& *** p2+++;- The type of the match is t1|t2 .

Boolean type constructors are useful for programming:

map catalogue withx :: (Car & (Guaranteed|(Any\Used)) -> x

Select in catalogue all cars that if used then are guaranteed.

Roadmap to extend it to XML:

1 Define types for XML documents,2 Add boolean type constructors,3 Define patterns as types with capture variables

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 10/110

Page 59: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book Book]<book year="1997"><title>[’Object-Oriented Programming’]</title><author><last>[’Castagna’]</last><first>[’Giuseppe’]</first>

</author>]<price>[’56’]</price>’Bikhauser’

</book>]<book year="2000"><title>[’Regexp Types for XML’]</title><editor><last>[’Hosoya’]</last><first>[’Haruo’]</first>

</editor>]’UoT’

</book>]</bib>]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 60: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book Book]<book year="1997">[<title>[’Object-Oriented Programming’]<author>[<last>[’Castagna’]<first>[’Giuseppe’]

]<price>[’56’]’Bikhauser’

]<book year="2000">[<title>[’Regexp Types for XML’]<editor><last>[’Hosoya’]<first>[’Haruo’]

]’UoT’

]]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 61: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book Book]<book year="1997">[<title>[’Object-Oriented Programming’]<author>[<last>[’Castagna’]<first>[’Giuseppe’]

]<price>[’56’]’Bikhauser’

]<book year="2000">[<title>[’Regexp Types for XML’]<editor><last>[’Hosoya’]<first>[’Haruo’]

]’UoT’

]]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 62: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book Book] String = [PCDATA] = [Char*]<book year=String>[<title><author>[<last>[PCDATA]<first>[PCDATA]

]<price>[PCDATA]PCDATA

]<book year=String>[<title>[PCDATA]<editor><last>[PCDATA]<first>[PCDATA]

]PCDATA

]]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 63: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book Book]type Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 64: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 65: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 66: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*] Kleene startype Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 67: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[ attribute types

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 68: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title nested elements(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 69: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+) unionsPrice?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 70: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+)Price? optional elemsPCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 71: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA] mixed content

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 72: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML syntax

type Bib = <bib>[Book*]type Book = <book year=String>[

Title(Author+ | Editor+)Price?PCDATA]

type Author = <author>[Last First]type Editor = <editor>[Last First]type Title = <title>[PCDATA]type Last = <last>[PCDATA]type First = <first>[PCDATA]type Price = <price>[PCDATA]

This and: singletons, intersections, differences, Empty, and Any.

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 11/110

Page 73: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

TY

PE

SP

AT

TE

RN

S

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 74: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = String

TY

PE

SP

AT

TE

RN

S

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 75: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[x::Book*] -> x

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 76: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[x::Book*] -> x

The pattern binds x to the sequence of all books in the bibliographyPA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 77: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[x::Book*] -> x

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 78: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[x::Book*] -> x

Returns the content of bibs.PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 79: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[( x::<book year="2005"> | y:: )*] -> x@y

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 80: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[( x::<book year="2005"> | y:: )*] -> x@y

Binds x to the sequence of all this year’s books, and y to all theother books.

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 81: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[( x::<book year="2005"> | y:: )*] -> x@y

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 82: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[( x::<book year="2005"> | y:: )*] -> x@y

Returns the concatenation (i.e., “@”) of the two captured sequencesPA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 83: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 84: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

Binds x to the sequence of books published in 1990 from publishersothers than “ACM” and discards all the others.

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 85: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 86: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

Returns all the captured booksPA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 87: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

Returns all the captured books

Exact type inference:

E.g.: if we match the pattern [(x::Int| )*] against an expressionof type [Int* String Int] the type deduced for x is [Int+]

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 88: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Patterns

Patterns = Types + Capture variables

type Bib = <bib>[Book*]

type Book = <book year=String>[Title Author+ Publisher]

type Publisher = StringTY

PE

S

match bibs with<bib>[(x::<book year="1990">[ * Publisher\"ACM"] | )*] -> x

Returns all the captured books

Exact type inference:

E.g.: if we match the pattern [(x::Int| )***] against an expressionof type [Int* String Int] the type deduced for x is [Int+++]

PA

TT

ER

NS

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 12/110

Page 89: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

XML-programming in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 13/110

Page 90: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: basic usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Extract subsequences (union polymorphism)

fun (Invited|Talk -> [Author+])< >[ Title x::Author* ] -> x

Extract subsequences of non-consecutive elements:

fun ([(Invited|Talk|Event)*] -> ([Invited*], [Talk*]))[ (i::Invited | t::Talk | )* ] -> (i,t)

Perl-like string processing (String = [Char*])

fun parse email (String -> (String,String))| [ local:: * ’@’ domain:: * ] -> (local,domain)| -> raise "Invalid email address"

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 14/110

Page 91: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: basic usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Extract subsequences (union polymorphism)

fun (Invited|Talk -> [Author+])< >[ Title x::Author* ] -> x

Extract subsequences of non-consecutive elements:

fun ([(Invited|Talk|Event)*] -> ([Invited*], [Talk*]))[ (i::Invited | t::Talk | )* ] -> (i,t)

Perl-like string processing (String = [Char*])

fun parse email (String -> (String,String))| [ local:: * ’@’ domain:: * ] -> (local,domain)| -> raise "Invalid email address"

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 14/110

Page 92: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: basic usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Extract subsequences (union polymorphism)

fun (Invited|Talk -> [Author+])< >[ Title x::Author* ] -> x

Extract subsequences of non-consecutive elements:

fun ([(Invited|Talk|Event)*] -> ([Invited*], [Talk*]))[ (i::Invited | t::Talk | )* ] -> (i,t)

Perl-like string processing (String = [Char*])

fun parse email (String -> (String,String))| [ local:: * ’@’ domain:: * ] -> (local,domain)| -> raise "Invalid email address"

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 14/110

Page 93: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: basic usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Extract subsequences (union polymorphism)

fun (Invited|Talk -> [Author+])< >[ Title x::Author* ] -> x

Extract subsequences of non-consecutive elements:

fun ([(Invited|Talk|Event)*] -> ([Invited*], [Talk*]))[ (i::Invited | t::Talk | )* ] -> (i,t)

Perl-like string processing (String = [Char*])

fun parse email (String -> (String,String))| [ local:: * ’@’ domain:: * ] -> (local,domain)| -> raise "Invalid email address"

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 14/110

Page 94: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 95: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 96: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 97: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 98: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 99: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 100: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 101: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 102: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Functions: advanced usage

type Program = <program>[ Day* ]type Day = <day date=String>[ Invited? Talk+ ]type Invited = <invited>[ Title Author+ ]type Talk = <talk>[ Title Author+ ]

Functions can be higher-order and overloaded

let patch program(p :[Program], f :(Invited -> Invited) &&& (Talk -> Talk)):[Program]

= xtransform p with (Invited | Talk) & x -> [ (f x) ]

Higher-order, overloading, subtyping provide name/code sharing...

let first author ([Program] -> [Program];Invited -> Invited;Talk -> Talk)

| [ Program ] & p -> patch program (p,first author)| <invited>[ t a * ] -> <invited>[ t a ]| <talk>[ t a * ] -> <talk>[ t a ]

Even more compact: replace the last two branches with:

<(k)>[ t a * ] -> <(k)>[ t a ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 15/110

Page 103: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

. . . it is all syntactic sugar!

Types

t ::= Int | v | (t, t) | t→→→t | t ∨ t | t ∧ t | ¬t | Any

Patterns

p ::= t | x | (p, p) | p ∨ p | p ∧ p

Example:

type Book = <book>[Title (Author+|Editor+) Price?]

encoded as

Book = (‘book, (Title,X ∨ Y ))X = (Author,X ∨ (Price, ‘nil) ∨ ‘nil)Y = (Editor,Y ∨ (Price, ‘nil) ∨ ‘nil)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 16/110

Page 104: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

. . . it is all syntactic sugar!

Types

t ::= Int | v | (t, t) | t→→→t | t ∨ t | t ∧ t | ¬t | Any

Patterns

p ::= t | x | (p, p) | p ∨ p | p ∧ p

Example:

type Book = <book>[Title (Author+|Editor+) Price?]

encoded as

Book = (‘book, (Title,X ∨ Y ))X = (Author,X ∨ (Price, ‘nil) ∨ ‘nil)Y = (Editor,Y ∨ (Price, ‘nil) ∨ ‘nil)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 16/110

Page 105: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

. . . it is all syntactic sugar!

Types

t ::= Int | v | (t, t) | t→→→t | t ∨ t | t ∧ t | ¬t | Any

Patterns

p ::= t | x | (p, p) | p ∨ p | p ∧ p

Example:

type Book = <book>[Title (Author+|Editor+) Price?]

encoded as

Book = (‘book, (Title,X ∨ Y ))X = (Author,X ∨ (Price, ‘nil) ∨ ‘nil)Y = (Editor,Y ∨ (Price, ‘nil) ∨ ‘nil)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 16/110

Page 106: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

. . . it is all syntactic sugar!

Types

t ::= Int | v | (t, t) | t→→→t | t ∨ t | t ∧ t | ¬t | Any

Patterns

p ::= t | x | (p, p) | p ∨ p | p ∧ p

Example:

type Book = <book>[Title (Author+|Editor+) Price?]

encoded as

Book = (‘book, (Title,X ∨ Y ))X = (Author,X ∨ (Price, ‘nil) ∨ ‘nil)Y = (Editor,Y ∨ (Price, ‘nil) ∨ ‘nil)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 16/110

Page 107: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some reasons to consider regularexpression types and patterns

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 17/110

Page 108: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some good reasons to consider regexp patterns/types

Theoretical reason: very compact

Nine practical reasons:

1 Classic usage2 Informative error messages3 Error mining4 Efficient execution5 Compact programs6 Logical optimisation of pattern-based queries7 Pattern matches as building blocks for iterators8 Type/pattern-based data pruning for memory usage optimisation9 Type-based query optimisation

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 18/110

Page 109: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some good reasons to consider regexp patterns/types

Theoretical reason: very compact ( 6= simple)

Nine practical reasons:

1 Classic usage2 Informative error messages3 Error mining4 Efficient execution5 Compact programs6 Logical optimisation of pattern-based queries7 Pattern matches as building blocks for iterators8 Type/pattern-based data pruning for memory usage optimisation9 Type-based query optimisation

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 18/110

Page 110: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some good reasons to consider regexp patterns/types

Theoretical reason: very compact ( 6= simple)

Nine practical reasons:

1 Classic usage2 Informative error messages3 Error mining4 Efficient execution5 Compact programs6 Logical optimisation of pattern-based queries7 Pattern matches as building blocks for iterators8 Type/pattern-based data pruning for memory usage optimisation9 Type-based query optimisation

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 18/110

Page 111: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some good reasons to consider regexp patterns/types

Theoretical reason: very compact ( 6= simple)

Nine practical reasons:

1 Classic usage2 Informative error messages3 Error mining4 Efficient execution5 Compact programs6 Logical optimisation of pattern-based queries7 Pattern matches as building blocks for iterators8 Type/pattern-based data pruning for memory usage optimisation9 Type-based query optimisation

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 18/110

Page 112: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Some good reasons to consider regexp patterns/types

Theoretical reason: very compact ( 6= simple)

Nine practical reasons:

1 Classic usage2 Informative error messages←3 Error mining4 Efficient execution←5 Compact programs6 Logical optimisation of pattern-based queries7 Pattern matches as building blocks for iterators8 Type/pattern-based data pruning for memory usage optimisation9 Type-based query optimisation

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 18/110

Page 113: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

Page 114: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

Page 115: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 116: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 117: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 118: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 119: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 120: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[(t::Title | a::Author | )+] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 121: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

2. Informative error messages

List of books of a given year, stripped of the Editors and Price

fun onlyAuthors (year:Int,books:[Book*]):[Book*] =select <book year=y>(t@a) from<book year=y>[ t::Title a::Author+++ * ] in books

where int of(y) = year

Returns the following error message:Error at chars 81-83:

select <book year=y>(t@a) fromThis expression should have type:[ Title (Editor+|Author+) Price? ]but its inferred type is:[ Title Author+ | Title ]which is not a subtype, as shown by the sample:

[ <title>[ ] ]

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 19/110

In case of error return a sample value in the difference of theinferred type and the expected one

type Book = <book year=String>[Title (Author+|Editor+) Price?]

Page 122: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 123: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 124: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 125: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 126: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 127: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 128: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 129: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 130: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Computing the optimal solution requires to fully exploit inter-sections and differences of types

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 131: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

5. Efficient execution

Idea: if types tell you that something cannot happen, don’t test it.

type A = <a>[A*]type B = <b>[B*]

fun check(x : A|B) = match x with A -> 1 | B -> 0

fun check(x : A|B) = match x with <a> -> 1 | -> 0

No backtracking.

Whole parts of the matched data are not checked

Specific kind of push-down tree automata

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 20/110

Use static type information to perform an optimal set of tests

Page 132: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

On top of CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 21/110

Page 133: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Full integration with OCaml

Embedding of CDuce code in XML documents

Graphical queries

Security (control flow analysis)

Web-services

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 22/110

Page 134: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Full integration with OCaml

Embedding of CDuce code in XML documents

Graphical queries

Security (control flow analysis)

Web-services

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 22/110

Page 135: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 136: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 137: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 138: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 139: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 140: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 141: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

CDuce↔OCaml Integration

A CDuce application that requires OCaml code

Reuse existing librairies

Abstract data structures : hash tables, sets, ...Numerical computations, system callsBindings to C libraries : databases, networks, ...

Implement complex algorithms

An OCaml application that requires CDuce code

CDuce used as an XML input/output/transformation layer

Configuration filesXML serialization of datasXHTML code production

Need to seamlessly call OCaml code in CDuce and viceversa

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 23/110

Page 142: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 143: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:

No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 144: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:

the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 145: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 146: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:

No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 147: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:

the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 148: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 149: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Main Challenges

1 Seamless integration:No explicit conversion function in programs:the compiler performs the conversions

2 Type safety:No explicit type cast in programs:the standard type-checkers ensure type safety

What we need:

A mapping between OCaml and CDuce types and values

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 24/110

Page 150: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 151: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does not

If we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 152: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;

⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 153: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 154: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not

⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 155: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 156: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.

⇒ Polymorphic OCaml libraries/functions must be first instantiedto be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 157: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

How to integrate the two type systems?

The translation can go just one way: OCaml → CDuce

⊕⊕⊕ CDuce uses (semantic) subtyping; OCaml does notIf we translate CDuce types into OCaml ones :- soundness requires the translation to be monotone;- no subtyping in Ocaml implies a constant translation;⇒ CDuce typing would be lost.

⊕⊕⊕ CDuce has unions, intersections, differences,heterogeneous lists; OCaml does not⇒ OCaml types are not enough to translate CDuce types.

OCaml supports type polymorphism; CDuce does not.⇒ Polymorphic OCaml libraries/functions must be first instantied

to be used in CDuce

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 25/110

Page 158: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

In practice

1 Define a mapping T from OCaml types to CDuce types.

t (OCaml) T(t) (CDuce)int min int- -max int

string Latin1

t1 ∗ t2 (T(t1),T(t2))t1 → t2 T(t1)→ T(t2)t list [T(t)∗]t array [T(t)∗]t option [T(t)?]t ref ref T(t)A1 of t1 | . . . | An of tn (‘A1,T(t1)) | . . . | (‘An,T(tn)){l1 = t1; . . . ; ln = tn} {l1 = T(t1); . . . ; ln = T(tn)}

2 Define a retraction pair between OCaml and CDuce values.

ocaml2cduce: t → T(t)cduce2ocaml: T(t)→ t

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 26/110

Page 159: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

In practice

1 Define a mapping T from OCaml types to CDuce types.

t (OCaml) T(t) (CDuce)int min int- -max int

string Latin1

t1 ∗ t2 (T(t1),T(t2))t1 → t2 T(t1)→ T(t2)t list [T(t)∗]t array [T(t)∗]t option [T(t)?]t ref ref T(t)A1 of t1 | . . . | An of tn (‘A1,T(t1)) | . . . | (‘An,T(tn)){l1 = t1; . . . ; ln = tn} {l1 = T(t1); . . . ; ln = T(tn)}

2 Define a retraction pair between OCaml and CDuce values.

ocaml2cduce: t → T(t)cduce2ocaml: T(t)→ t

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 26/110

Page 160: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

In practice

1 Define a mapping T from OCaml types to CDuce types.

t (OCaml) T(t) (CDuce)int min int- -max int

string Latin1

t1 ∗ t2 (T(t1),T(t2))t1 → t2 T(t1)→ T(t2)t list [T(t)∗]t array [T(t)∗]t option [T(t)?]t ref ref T(t)A1 of t1 | . . . | An of tn (‘A1,T(t1)) | . . . | (‘An,T(tn)){l1 = t1; . . . ; ln = tn} {l1 = T(t1); . . . ; ln = T(tn)}

2 Define a retraction pair between OCaml and CDuce values.

ocaml2cduce: t → T(t)cduce2ocaml: T(t)→ t

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 26/110

Page 161: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

In practice

1 Define a mapping T from OCaml types to CDuce types.

t (OCaml) T(t) (CDuce)int min int- -max int

string Latin1

t1 ∗ t2 (T(t1),T(t2))t1 → t2 T(t1)→ T(t2)t list [T(t)∗]t array [T(t)∗]t option [T(t)?]t ref ref T(t)A1 of t1 | . . . | An of tn (‘A1,T(t1)) | . . . | (‘An,T(tn)){l1 = t1; . . . ; ln = tn} {l1 = T(t1); . . . ; ln = T(tn)}

2 Define a retraction pair between OCaml and CDuce values.

ocaml2cduce: t → T(t)cduce2ocaml: T(t)→ t

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 26/110

Page 162: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then- applies cduce2ocaml to the arguments of the call- calls the OCaml function- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 163: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then

- applies cduce2ocaml to the arguments of the call- calls the OCaml function- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 164: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then- applies cduce2ocaml to the arguments of the call

- calls the OCaml function- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 165: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then- applies cduce2ocaml to the arguments of the call- calls the OCaml function

- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 166: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then- applies cduce2ocaml to the arguments of the call- calls the OCaml function- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 167: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling OCaml from CDuce

Easy

Use M.f to call the function f exported by the OCaml module M

The CDuce compiler checks type soundness and then- applies cduce2ocaml to the arguments of the call- calls the OCaml function- applies ocaml2cduce to the result of the call

Example: use ocaml-mysql library in CDuce

let db = Mysql.connect Mysql.defaults;;

match Mysql.list dbs db ‘None [] with

| (‘Some,l) -> print [ ’Databases: ’ !(string of l) ’\ n’ ]

| ‘None -> [];;

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 27/110

Page 168: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling CDuce from OCaml

Needs little work

Compile a CDuce module as an OCaml binary module by providinga OCaml (.mli) interface. Use it as a standard Ocaml module.

The CDuce compiler:1 Checks that if val f :t in the .mli file, then the CDuce type

of f is a subtype of T(t)2 Produces the OCaml glue code to export CDuce values as

OCaml ones and bind OCaml values in the CDuce module.

Example: use CDuce to compute a factorial:

(* File cdnum.mli: *)val fact: Big int.big int -> Big int.big int

(* File cdnum.cd: *)let aux ((Int,Int) -> Int)| (x, 0 | 1) -> x| (x, n) -> aux (x * n, n - 1)

let fact (x : Int) : Int = aux(1,x)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 28/110

Page 169: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling CDuce from OCaml

Needs little work

Compile a CDuce module as an OCaml binary module by providinga OCaml (.mli) interface. Use it as a standard Ocaml module.

The CDuce compiler:

1 Checks that if val f :t in the .mli file, then the CDuce typeof f is a subtype of T(t)

2 Produces the OCaml glue code to export CDuce values asOCaml ones and bind OCaml values in the CDuce module.

Example: use CDuce to compute a factorial:

(* File cdnum.mli: *)val fact: Big int.big int -> Big int.big int

(* File cdnum.cd: *)let aux ((Int,Int) -> Int)| (x, 0 | 1) -> x| (x, n) -> aux (x * n, n - 1)

let fact (x : Int) : Int = aux(1,x)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 28/110

Page 170: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling CDuce from OCaml

Needs little work

Compile a CDuce module as an OCaml binary module by providinga OCaml (.mli) interface. Use it as a standard Ocaml module.

The CDuce compiler:1 Checks that if val f :t in the .mli file, then the CDuce type

of f is a subtype of T(t)

2 Produces the OCaml glue code to export CDuce values asOCaml ones and bind OCaml values in the CDuce module.

Example: use CDuce to compute a factorial:

(* File cdnum.mli: *)val fact: Big int.big int -> Big int.big int

(* File cdnum.cd: *)let aux ((Int,Int) -> Int)| (x, 0 | 1) -> x| (x, n) -> aux (x * n, n - 1)

let fact (x : Int) : Int = aux(1,x)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 28/110

Page 171: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling CDuce from OCaml

Needs little work

Compile a CDuce module as an OCaml binary module by providinga OCaml (.mli) interface. Use it as a standard Ocaml module.

The CDuce compiler:1 Checks that if val f :t in the .mli file, then the CDuce type

of f is a subtype of T(t)2 Produces the OCaml glue code to export CDuce values as

OCaml ones and bind OCaml values in the CDuce module.

Example: use CDuce to compute a factorial:

(* File cdnum.mli: *)val fact: Big int.big int -> Big int.big int

(* File cdnum.cd: *)let aux ((Int,Int) -> Int)| (x, 0 | 1) -> x| (x, n) -> aux (x * n, n - 1)

let fact (x : Int) : Int = aux(1,x)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 28/110

Page 172: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction 2. Regexp types/patterns 3. XML Programming in CDuce 3. Properties 4. Toolkit MPRI

Calling CDuce from OCaml

Needs little work

Compile a CDuce module as an OCaml binary module by providinga OCaml (.mli) interface. Use it as a standard Ocaml module.

The CDuce compiler:1 Checks that if val f :t in the .mli file, then the CDuce type

of f is a subtype of T(t)2 Produces the OCaml glue code to export CDuce values as

OCaml ones and bind OCaml values in the CDuce module.

Example: use CDuce to compute a factorial:

(* File cdnum.mli: *)val fact: Big int.big int -> Big int.big int

(* File cdnum.cd: *)let aux ((Int,Int) -> Int)| (x, 0 | 1) -> x| (x, n) -> aux (x * n, n - 1)

let fact (x : Int) : Int = aux(1,x)

Part 1: XML Programming in CDuce G. Castagna: Theory and practice of XML processing languages 28/110

Page 173: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

PART 2: THEORETICALFOUNDATIONS

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 29/110

Page 174: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Goal

The goal is to show how to take your favourite type constructors

×××, →→→, {. . . }, chan(), . . .

and add boolean combinators:

∨∨∨, ∧∧∧, ¬¬¬

so that they behave set-theoretically w.r.t. ≤

WHY?

Short answer: YOU JUST SAW IT!

Recap:- to encode XML types- to define XML patterns- to precisely type pattern matching

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 30/110

Page 175: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Goal

The goal is to show how to take your favourite type constructors

×××, →→→, {. . . }, chan(), . . .

and add boolean combinators:

∨∨∨, ∧∧∧, ¬¬¬

so that they behave set-theoretically w.r.t. ≤

WHY?

Short answer: YOU JUST SAW IT!

Recap:- to encode XML types- to define XML patterns- to precisely type pattern matching

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 30/110

Page 176: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Goal

The goal is to show how to take your favourite type constructors

×××, →→→, {. . . }, chan(), . . .

and add boolean combinators:

∨∨∨, ∧∧∧, ¬¬¬

so that they behave set-theoretically w.r.t. ≤

WHY?

Short answer: YOU JUST SAW IT!

Recap:- to encode XML types- to define XML patterns- to precisely type pattern matching

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 30/110

Page 177: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Goal

The goal is to show how to take your favourite type constructors

×××, →→→, {. . . }, chan(), . . .

and add boolean combinators:

∨∨∨, ∧∧∧, ¬¬¬

so that they behave set-theoretically w.r.t. ≤

WHY?

Short answer: YOU JUST SAW IT!

Recap:- to encode XML types- to define XML patterns- to precisely type pattern matching

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 30/110

Page 178: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t

| t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix, e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors, e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 179: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix,

e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors, e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 180: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix,

e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors, e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 181: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix, e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors,

e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 182: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix, e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors,

e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 183: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix, e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors, e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 184: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Handling subtyping without combinators is easy:constructors do not mix, e.g. :

s2 ≤ s1 t1 ≤ t2

s1 → t1 ≤ s2 → t2

With combinators is much harder:combinators distribute over constructors, e.g.

(s1∨∨∨s2)→ t R (s1 → t)∧∧∧(s2 → t)

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 185: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Not a particularly new idea. Many attempts(e.g. Aiken&Wimmers, Damm,. . . , Hosoya&Pierce).

None fully satisfactory. (no negation, or no function types,or restrictions on unions and intersections, . . . )

Starting point of what follows: the approach ofHosoya&Pierce.

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 186: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Not a particularly new idea. Many attempts(e.g. Aiken&Wimmers, Damm,. . . , Hosoya&Pierce).

None fully satisfactory. (no negation, or no function types,or restrictions on unions and intersections, . . . )

Starting point of what follows: the approach ofHosoya&Pierce.

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 187: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

In details

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

Not a particularly new idea. Many attempts(e.g. Aiken&Wimmers, Damm,. . . , Hosoya&Pierce).

None fully satisfactory. (no negation, or no function types,or restrictions on unions and intersections, . . . )

Starting point of what follows: the approach ofHosoya&Pierce.

MAIN IDEA

Instead of defining the subtyping relation so that it conforms tothe semantic of types, define the semantics of types and derive thesubtyping relation.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 31/110

Page 188: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 32/110

Page 189: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

1 Define a set-theoretic semantics of the types:

J K : Types −→ P(D)

2 Define the subtyping relation as follows:

s ≤ tdef⇐⇒ JsK ⊆ JtK

KEY OBSERVATION 1:

The model of types may be independent from a model of terms

Hosoya and Pierce use the model of values:JtKV = {v | ` v : t}

Ok because the only values of XDuce are XML documents (nofirst-class functions)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 33/110

Page 190: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

1 Define a set-theoretic semantics of the types:

J K : Types −→ P(D)

2 Define the subtyping relation as follows:

s ≤ tdef⇐⇒ JsK ⊆ JtK

KEY OBSERVATION 1:

The model of types may be independent from a model of terms

Hosoya and Pierce use the model of values:JtKV = {v | ` v : t}

Ok because the only values of XDuce are XML documents (nofirst-class functions)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 33/110

Page 191: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

1 Define a set-theoretic semantics of the types:

J K : Types −→ P(D)

2 Define the subtyping relation as follows:

s ≤ tdef⇐⇒ JsK ⊆ JtK

KEY OBSERVATION 1:

The model of types may be independent from a model of terms

Hosoya and Pierce use the model of values:JtKV = {v | ` v : t}

Ok because the only values of XDuce are XML documents (nofirst-class functions)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 33/110

Page 192: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

1 Define a set-theoretic semantics of the types:

J K : Types −→ P(D)

2 Define the subtyping relation as follows:

s ≤ tdef⇐⇒ JsK ⊆ JtK

KEY OBSERVATION 1:

The model of types may be independent from a model of terms

Hosoya and Pierce use the model of values:JtKV = {v | ` v : t}

Ok because the only values of XDuce are XML documents (nofirst-class functions)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 33/110

Page 193: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Semantic subtyping

1 Define a set-theoretic semantics of the types:

J K : Types −→ P(D)

2 Define the subtyping relation as follows:

s ≤ tdef⇐⇒ JsK ⊆ JtK

KEY OBSERVATION 1:

The model of types may be independent from a model of terms

Hosoya and Pierce use the model of values:JtKV = {v | ` v : t}

Ok because the only values of XDuce are XML documents (nofirst-class functions)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 33/110

Page 194: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K =

Jt1K× Jt2K

Jt1→→→t2K =

???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 195: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K =

Jt1K× Jt2K

Jt1→→→t2K =

???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 196: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K =

Jt1K× Jt2K

Jt1→→→t2K =

???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 197: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K = Jt1K× Jt2KJt1→→→t2K =

???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 198: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K = Jt1K× Jt2KJt1→→→t2K = ???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 199: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Step 1 : Model

Define when J K : Types −→ P(D) yields a set-theoretic model.

Easy for the combinators:Jt1∨∨∨t2K = Jt1K ∪ Jt2KJt1∧∧∧t2K = Jt1K ∩ Jt2KJ¬¬¬tK = D\JtKJ0K = ∅J1K = D

Hard for constructors:Jt1×××t2K = Jt1K× Jt2KJt1→→→t2K = ???

Think semantically!

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 34/110

Page 200: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = ???

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 201: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = {functions from JtK to JsK}

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 202: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = {f ⊆ D2 | ∀(d1, d2)∈ f . d1∈JtK⇒ d2∈JsK}

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 203: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) ( Xdef= complement of X )

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 204: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) (∗)

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 205: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) (∗)

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to state how types are related rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 206: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) (∗)

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to state how types are related

rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,

namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 207: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) (∗)

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 208: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Intuition

(×JsK)Jt→→→sK = P(JtK× JsK) (∗)

Impossible since it requires P(D2) ⊆ D

KEY OBSERVATION 2:

We need the model to

state how types are related rather thanwhat the types are

Accept every J K that behaves w.r.t. ⊆ as if equation (∗) held,namely

Jt1→→→s1K ⊆ Jt2→→→s2K ⇐⇒ P(Jt1K× Js1K) ⊆ P(Jt2K× Js2K)

and similarly for any boolean combination of arrow types.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 35/110

Page 209: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK

[connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t) [constructor semantics]

3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 210: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK [connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t)

[constructor semantics]3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 211: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK [connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t)

[constructor semantics]

3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 212: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK [connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t) [constructor semantics]

3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅

(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 213: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK [connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t) [constructor semantics]

3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅

(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 214: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Technically . . .

1 Take J K : Types→ P(D) such thatJt1∨∨∨t2K = Jt1K ∪ Jt2K Jt1∧∧∧t2K = Jt1K ∩ Jt2K

J0K = ∅ J1K = DJ¬¬¬tK = J1K\JtK [connective semantics]

2 Define E( ) : Types→ P(D2 + P(D2)) as follows

E(t1×××t2)def= Jt1K× Jt2K ⊆ D2

E(t1→→→t2)def= P(Jt1K× Jt2K) ⊆ P(D2)

E(t1∨∨∨t2)def= E(t1) ∪ E(t2) E(t1∧∧∧t2)

def= E(t1) ∩ E(t2)

E(0)def= ∅ E(1)

def= D2 + P(D2)

E(¬¬¬t)def= E(1)\E(t) [constructor semantics]

3 Model: Instead of requiring JtK = E(t), accept J K if

JtK = ∅ ⇐⇒ E(t) = ∅(which is equivalent to JsK ⊆ JtK ⇐⇒ E(s) ⊆ E(t))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 36/110

Page 215: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 216: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 217: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 218: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 219: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 220: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The main intuition

To characterize ≤ all is needed is the test of emptyness

Indeed: s ≤ t ⇔ JsK ⊆ JtK⇔ JsK ∩ JtK = ∅⇔ Js∧∧∧¬¬¬tK = ∅

Instead of JtK = E(t), the weaker JtK=∅ ⇔ E(t)=∅ suffices for ≤.

J K and E( ) must have the same zeros

We relaxed our requirement but . . .

DOES A MODEL EXIST?

Is it possible to define J K : Types→ P(D) that satisfies the modelconditions, in particular a JK such that JtK=∅ ⇔ E(t)=∅?

YES: an example within two slides

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 37/110

Page 221: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 222: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.

E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 223: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.

E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 224: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.

E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 225: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 226: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

The role of E()

E() characterizes the behavior of types (for what it concerns ≤ onecan consider JtK = E(t)): it depends on the language the types areintended for.

Variations are possible. Our choice

E(t1→→→t2) = P(Jt1K× Jt2K)accounts for languages that are:

1 Non-deterministic :Admits functions in which (d , d1) and (d , d2) with d1 6= d2.

2 Non-terminating :a function in Jt→→→sK may be not total on JtK.E.g.

Jt→→→0K = functions diverging on t

3 Overloaded :J(t1∨∨∨t2)→→→(s1∧∧∧s2)K J(t1→→→s1)∧∧∧(t2→→→s2)K

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 38/110

Page 227: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 228: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 229: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 230: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 231: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 232: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Closing the circle

1 Take any model (B, JKB) to bootstrap the definition.

2 Defines ≤B t ⇐⇒ JsKB ⊆ JtKB

3 Take any “appropriate” language L and use ≤B to type it

Γ `B e : t

4 Define a new interpretation JtKV = {v ∈ V | `B v : t} ands ≤V t ⇐⇒ JsKV ⊆ JtKV

5 If L is “appropriate” (`B v : t ⇐⇒ 6`B v : ¬¬¬t) then JKV is amodel and

s ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 39/110

Page 233: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)

YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 234: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 235: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 236: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 237: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 238: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKU

Js×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 239: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 240: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 241: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 242: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exhibit a model

Does a model exists? (i.e. a J K such that JtK = ∅ ⇐⇒ E(t) = ∅)YES: take (U , J KU ) where

1 U least solution of X = X 2 + Pf (X 2)

2 J KU is defined as:

J0KU = ∅ J1KU = U J¬¬¬tKU = U\JtKUJs∨∨∨tKU = JsKU∪ JtKU Js∧∧∧tKU = JsKU∩ JtKUJs×××tKU = JsKU × JtKU Jt→→→sKU = Pf (JtKU× JsKU )

It is a model: Pf (JtKU× JsKU ) = ∅ ⇐⇒ P(JtKU× JsKU ) = ∅

It is the best model: for any other model J KD

t1 ≤D t2 ⇒ t1 ≤U t2

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 40/110

Page 243: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Subtyping Algorithms.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 41/110

Page 244: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Canonical forms

Every (recursive) typet ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

is equivalent (semantically, w.r.t. ≤) to a type of the form(I omitted base types):∨∨∨

(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

1 Put it in disjunctive normal form, e.g.(a1∧∧∧a2∧∧∧¬¬¬a3)∨∨∨(a4∧∧∧¬¬¬a5)∨∨∨(¬¬¬a6∧∧∧¬¬¬a7)∨∨∨(a8∧∧∧a9)

2 Transform to have only homogeneous intersections, e.g.((s1×××t1)∧∧∧¬¬¬(s2×××t2)) ∨∨∨ (¬¬¬(s3→→→t3)∧∧∧¬¬¬(s4→→→t4)) ∨∨∨ (s5×××t5)

3 Group negative and positive atoms in the intersections:∨∨∨(P,N)∈S

((∧∧∧a∈P

a)∧∧∧(∧∧∧a∈N¬¬¬a))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 42/110

Page 245: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Canonical forms

Every (recursive) typet ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

is equivalent (semantically, w.r.t. ≤) to a type of the form(I omitted base types):∨∨∨

(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

1 Put it in disjunctive normal form, e.g.(a1∧∧∧a2∧∧∧¬¬¬a3)∨∨∨(a4∧∧∧¬¬¬a5)∨∨∨(¬¬¬a6∧∧∧¬¬¬a7)∨∨∨(a8∧∧∧a9)

2 Transform to have only homogeneous intersections, e.g.((s1×××t1)∧∧∧¬¬¬(s2×××t2)) ∨∨∨ (¬¬¬(s3→→→t3)∧∧∧¬¬¬(s4→→→t4)) ∨∨∨ (s5×××t5)

3 Group negative and positive atoms in the intersections:∨∨∨(P,N)∈S

((∧∧∧a∈P

a)∧∧∧(∧∧∧a∈N¬¬¬a))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 42/110

Page 246: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Canonical forms

Every (recursive) typet ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

is equivalent (semantically, w.r.t. ≤) to a type of the form(I omitted base types):∨∨∨

(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

1 Put it in disjunctive normal form, e.g.(a1∧∧∧a2∧∧∧¬¬¬a3)∨∨∨(a4∧∧∧¬¬¬a5)∨∨∨(¬¬¬a6∧∧∧¬¬¬a7)∨∨∨(a8∧∧∧a9)

2 Transform to have only homogeneous intersections, e.g.((s1×××t1)∧∧∧¬¬¬(s2×××t2)) ∨∨∨ (¬¬¬(s3→→→t3)∧∧∧¬¬¬(s4→→→t4)) ∨∨∨ (s5×××t5)

3 Group negative and positive atoms in the intersections:∨∨∨(P,N)∈S

((∧∧∧a∈P

a)∧∧∧(∧∧∧a∈N¬¬¬a))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 42/110

Page 247: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Canonical forms

Every (recursive) typet ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

is equivalent (semantically, w.r.t. ≤) to a type of the form(I omitted base types):∨∨∨

(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

1 Put it in disjunctive normal form, e.g.(a1∧∧∧a2∧∧∧¬¬¬a3)∨∨∨(a4∧∧∧¬¬¬a5)∨∨∨(¬¬¬a6∧∧∧¬¬¬a7)∨∨∨(a8∧∧∧a9)

2 Transform to have only homogeneous intersections, e.g.((s1×××t1)∧∧∧¬¬¬(s2×××t2)) ∨∨∨ (¬¬¬(s3→→→t3)∧∧∧¬¬¬(s4→→→t4)) ∨∨∨ (s5×××t5)

3 Group negative and positive atoms in the intersections:∨∨∨(P,N)∈S

((∧∧∧a∈P

a)∧∧∧(∧∧∧a∈N¬¬¬a))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 42/110

Page 248: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Canonical forms

Every (recursive) typet ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

is equivalent (semantically, w.r.t. ≤) to a type of the form(I omitted base types):∨∨∨

(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

1 Put it in disjunctive normal form, e.g.(a1∧∧∧a2∧∧∧¬¬¬a3)∨∨∨(a4∧∧∧¬¬¬a5)∨∨∨(¬¬¬a6∧∧∧¬¬¬a7)∨∨∨(a8∧∧∧a9)

2 Transform to have only homogeneous intersections, e.g.((s1×××t1)∧∧∧¬¬¬(s2×××t2)) ∨∨∨ (¬¬¬(s3→→→t3)∧∧∧¬¬¬(s4→→→t4)) ∨∨∨ (s5×××t5)

3 Group negative and positive atoms in the intersections:∨∨∨(P,N)∈S

((∧∧∧a∈P

a)∧∧∧(∧∧∧a∈N¬¬¬a))

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 42/110

Page 249: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Decision procedure

s ≤ t?

Recall that:

s ≤ t ⇐⇒ JsK ∩ JtK = ∅ ⇐⇒ Js∧∧∧¬¬¬tK = ∅ ⇐⇒ s∧∧∧¬¬¬t = 0

1 Consider s∧∧∧¬¬¬t2 Put it in canonical form∨∨∨(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

3 Decide (coinductively) whether all the intersections occuringabove are empty by applying the set theoretic propertiesstated in the next slide.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 43/110

Page 250: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Decision procedure

s ≤ t?

Recall that:

s ≤ t ⇐⇒ JsK ∩ JtK = ∅ ⇐⇒ Js∧∧∧¬¬¬tK = ∅ ⇐⇒ s∧∧∧¬¬¬t = 0

1 Consider s∧∧∧¬¬¬t2 Put it in canonical form∨∨∨(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

3 Decide (coinductively) whether all the intersections occuringabove are empty by applying the set theoretic propertiesstated in the next slide.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 43/110

Page 251: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Decision procedure

s ≤ t?

Recall that:

s ≤ t ⇐⇒ JsK ∩ JtK = ∅ ⇐⇒ Js∧∧∧¬¬¬tK = ∅ ⇐⇒ s∧∧∧¬¬¬t = 0

1 Consider s∧∧∧¬¬¬t

2 Put it in canonical form∨∨∨(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

3 Decide (coinductively) whether all the intersections occuringabove are empty by applying the set theoretic propertiesstated in the next slide.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 43/110

Page 252: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Decision procedure

s ≤ t?

Recall that:

s ≤ t ⇐⇒ JsK ∩ JtK = ∅ ⇐⇒ Js∧∧∧¬¬¬tK = ∅ ⇐⇒ s∧∧∧¬¬¬t = 0

1 Consider s∧∧∧¬¬¬t2 Put it in canonical form∨∨∨(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

3 Decide (coinductively) whether all the intersections occuringabove are empty by applying the set theoretic propertiesstated in the next slide.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 43/110

Page 253: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Decision procedure

s ≤ t?

Recall that:

s ≤ t ⇐⇒ JsK ∩ JtK = ∅ ⇐⇒ Js∧∧∧¬¬¬tK = ∅ ⇐⇒ s∧∧∧¬¬¬t = 0

1 Consider s∧∧∧¬¬¬t2 Put it in canonical form∨∨∨(P,N)∈Π

((∧∧∧

s×××t∈Ps×××t)∧∧∧(

∧∧∧s×××t∈N

¬¬¬(s×××t)))∨∨∨

(P,N)∈Σ

((∧∧∧

s→→→t∈Ps→→→t)∧∧∧(

∧∧∧s→→→t∈N

¬¬¬(s→→→t)))

3 Decide (coinductively) whether all the intersections occuringabove are empty by applying the set theoretic propertiesstated in the next slide.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 43/110

Page 254: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Subtyping decomposition

Decomposition law for products:∧∧∧i∈I

ti×××si ≤∨∨∨j∈J

tj×××sj

⇐⇒ ∀J ′ ⊆ J.

∧∧∧i∈I

ti ≤∨∨∨j∈J′

tj

or

∧∧∧i∈I

si ≤∨∨∨

j∈J\J′sj

Decomposition law for arrows:∧∧∧i∈I

ti→→→si ≤∨∨∨j∈J

tj→→→sj

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

(tj ≤

∨∨∨i∈I ′

ti

)or

I ′ 6= I et∧∧∧

i∈I\I ′si ≤ sj

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 44/110

Page 255: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Exercise

Using the laws of the previous slide prove the followingequivalences:

t1×××s1 ≤ t2×××s2 ⇐⇒ t1 ≤ ∅ or s1 ≤ ∅ or (t1 ≤ t2 and s1 ≤ s2)

t1→→→s1 ≤ t2→→→s2 ⇐⇒ t2 ≤ ∅ or or (t2 ≤ t1 and s1 ≤ s2)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 45/110

Page 256: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Application to a language.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 46/110

Page 257: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Language

e : := x variable

| µf (s1→→→t1;...;sn→→→tn)(x).e abstraction, n ≥ 1| e1e2 application| (e1,e2) pair| πi (e) projection, i = 1, 2| (x = e ∈∈∈ t)???e1:e2 binding type case

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 47/110

Page 258: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 259: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 260: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 261: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 262: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 263: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Typing

Γ ` e : s ≤BtΓ ` e : t

(subsumption)

(∀i) Γ, (f : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn), (x : si ) ` e : ti

Γ ` µf (s1→→→t1;...;sn→→→tn)(x).e : s1→→→t1∧∧∧ . . .∧∧∧sn→→→tn(abstr)

(for s1 ≡ s∧∧∧t, s2 ≡ s∧∧∧¬¬¬t)Γ ` e : s Γ, (x : s1) ` e1 : t1 Γ, (x : s2) ` e2 : t2

Γ ` (x = e ∈∈∈ t)???e1:e2 :∨∨∨{i |si 6'0} ti

(typecase)

Consider:

µf(Int→→→Int;Bool→→→Bool)(x).(y = x ∈∈∈ Int)???(y + 1):not(y)

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 48/110

Page 264: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Reduction

(µf (...)(x).e)v → e[x/v , (µf (...)(x).e)/f ](x = v ∈∈∈ t)???e1:e2 → e1[x/v ] if v ∈ JtK(x = v ∈∈∈ t)???e1:e2 → e2[x/v ] if v 6∈ JtK

wherev ::= µf (...)(x).e | (v ,v)

And we haves ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 49/110

Page 265: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Reduction

(µf (...)(x).e)v → e[x/v , (µf (...)(x).e)/f ](x = v ∈∈∈ t)???e1:e2 → e1[x/v ] if v ∈ JtK(x = v ∈∈∈ t)???e1:e2 → e2[x/v ] if v 6∈ JtK

wherev ::= µf (...)(x).e | (v ,v)

And we haves ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 49/110

Page 266: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Reduction

(µf (...)(x).e)v → e[x/v , (µf (...)(x).e)/f ](x = v ∈∈∈ t)???e1:e2 → e1[x/v ] if v ∈ JtK(x = v ∈∈∈ t)???e1:e2 → e2[x/v ] if v 6∈ JtK

wherev ::= µf (...)(x).e | (v ,v)

And we haves ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 49/110

Page 267: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Reduction

(µf (...)(x).e)v → e[x/v , (µf (...)(x).e)/f ](x = v ∈∈∈ t)???e1:e2 → e1[x/v ] if v ∈ JtK(x = v ∈∈∈ t)???e1:e2 → e2[x/v ] if v 6∈ JtK

wherev ::= µf (...)(x).e | (v ,v)

And we haves ≤B t ⇐⇒ s ≤V t

The circle is closed

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 49/110

Page 268: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Why does it work?

s ≤B t ⇐⇒ s ≤V t (1)

Equation (1) (actually, ⇒) states that the language is quite rich,since there always exists a value to separate two distinct types; i.e.its set of values is a model of types with “enough points”

For any model B,s 6≤B t =⇒ there exists v such that ` v : s and 6` v : t

In particular, thanks to multiple arrows in λ-abstractions:∧∧∧i=1..k

si→→→ti 6≤ t

then the two types are distinguished by µf (s1→→→t1;...;sk→→→tk)(x).e

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 50/110

Page 269: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Why does it work?

s ≤B t ⇐⇒ s ≤V t (1)

Equation (1) (actually, ⇒) states that the language is quite rich,since there always exists a value to separate two distinct types; i.e.its set of values is a model of types with “enough points”

For any model B,s 6≤B t =⇒ there exists v such that ` v : s and 6` v : t

In particular, thanks to multiple arrows in λ-abstractions:∧∧∧i=1..k

si→→→ti 6≤ t

then the two types are distinguished by µf (s1→→→t1;...;sk→→→tk)(x).e

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 50/110

Page 270: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Why does it work?

s ≤B t ⇐⇒ s ≤V t (1)

Equation (1) (actually, ⇒) states that the language is quite rich,since there always exists a value to separate two distinct types; i.e.its set of values is a model of types with “enough points”

For any model B,s 6≤B t =⇒ there exists v such that ` v : s and 6` v : t

In particular, thanks to multiple arrows in λ-abstractions:∧∧∧i=1..k

si→→→ti 6≤ t

then the two types are distinguished by µf (s1→→→t1;...;sk→→→tk)(x).e

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 50/110

Page 271: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Advantages for the programmer

The programmer does not need to know the gory details. All s/heneeds to retain is

1 Types are the set of values of that type

2 Subtyping is set inclusion

Furthermore the propertys 6≤ t =⇒ there exists v such that ` v : s and 6` v : t

is fundamental for meaningful error messages:

Exibit the v at issue rather than pointing to the failure of somededuction rule.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 51/110

Page 272: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Advantages for the programmer

The programmer does not need to know the gory details. All s/heneeds to retain is

1 Types are the set of values of that type

2 Subtyping is set inclusion

Furthermore the propertys 6≤ t =⇒ there exists v such that ` v : s and 6` v : t

is fundamental for meaningful error messages:

Exibit the v at issue rather than pointing to the failure of somededuction rule.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 51/110

Page 273: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Advantages for the programmer

The programmer does not need to know the gory details. All s/heneeds to retain is

1 Types are the set of values of that type

2 Subtyping is set inclusion

Furthermore the propertys 6≤ t =⇒ there exists v such that ` v : s and 6` v : t

is fundamental for meaningful error messages:

Exibit the v at issue rather than pointing to the failure of somededuction rule.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 51/110

Page 274: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Advantages for the programmer

The programmer does not need to know the gory details. All s/heneeds to retain is

1 Types are the set of values of that type

2 Subtyping is set inclusion

Furthermore the propertys 6≤ t =⇒ there exists v such that ` v : s and 6` v : t

is fundamental for meaningful error messages:

Exibit the v at issue rather than pointing to the failure of somededuction rule.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 51/110

Page 275: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Advantages for the programmer

The programmer does not need to know the gory details. All s/heneeds to retain is

1 Types are the set of values of that type

2 Subtyping is set inclusion

Furthermore the propertys 6≤ t =⇒ there exists v such that ` v : s and 6` v : t

is fundamental for meaningful error messages:

Exibit the v at issue rather than pointing to the failure of somededuction rule.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 51/110

Page 276: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

Summary of the theory

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 52/110

Page 277: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 278: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 279: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 280: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 281: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]

5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 282: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]

5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 283: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Introduction – 2. Semantic subtyping – 3. Algorithms – 4. Language – 6. Recap – MPRI

La morale de l’histoire est . . .

If you have a strong semantic intuition of your favorite languageand you want to add set-theoretic ∨∨∨, ∧∧∧, ¬¬¬ types then:

1 Define E( ) for your type constructors so that it matches yoursemantic intuition

2 Find a model (any model). [may be not easy/possible]

3 Use the subtyping relation induced by the model to type yourlanguage: if the intuition was right then the set of values isalso a model, otherwise tweak it. [may be not easy/possible]

4 Use the set-theoretic properties of the model (actually ofE( )) to decompose the emptyness test for your typeconstructors, and hence derive a subtyping algorithm.

[may be not easy/possible]5 Enjoy.

Part 2: Theoretical Foundations G. Castagna: Theory and practice of XML processing languages 53/110

Page 284: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

PART 3: POLYMORPHICSUBTYPING

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 54/110

Page 285: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Goal

We want to add Type variables:

(X×××Y→→→X ) ∧∧∧ ((X→→→Y )→→→X→→→Y )

and define for them an intuitive semantics

WHY?

Short answers:

Parametric polymorphism is very useful in practice.

It covers new needs peculiar to XML processing(eg, SOAP envelopes).

It would make the interface with OCaml complete

The extension shoud shed new light on the notion ofparametricity

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 55/110

Page 286: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Goal

We want to add Type variables:

(X×××Y→→→X ) ∧∧∧ ((X→→→Y )→→→X→→→Y )

and define for them an intuitive semantics

WHY?

Short answers:

Parametric polymorphism is very useful in practice.

It covers new needs peculiar to XML processing(eg, SOAP envelopes).

It would make the interface with OCaml complete

The extension shoud shed new light on the notion ofparametricity

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 55/110

Page 287: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Goal

We want to add Type variables:

(X×××Y→→→X ) ∧∧∧ ((X→→→Y )→→→X→→→Y )

and define for them an intuitive semantics

WHY?

Short answers:

Parametric polymorphism is very useful in practice.

It covers new needs peculiar to XML processing(eg, SOAP envelopes).

It would make the interface with OCaml complete

The extension shoud shed new light on the notion ofparametricity

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 55/110

Page 288: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Goal

We want to add Type variables:

(X×××Y→→→X ) ∧∧∧ ((X→→→Y )→→→X→→→Y )

and define for them an intuitive semantics

WHY?

Short answers:

Parametric polymorphism is very useful in practice.

It covers new needs peculiar to XML processing(eg, SOAP envelopes).

It would make the interface with OCaml complete

The extension shoud shed new light on the notion ofparametricity

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 55/110

Page 289: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Concrete answer: an example in web development

We need parametric polymorphism to statically type serviceregistration in the Ocsigen web server:

To every page possibly with parameters

corresponds a function that takes the parameters (the querystring) and dynamically generates the appropriate Xhtml page:

let wikipage (p : WikiParams) : Xhtml = ...

type WikiParams = <params>

<title> String </title>

<action> "raw"|"edit" <action>

</params>

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 56/110

Page 290: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Concrete answer: an example in web development

We need parametric polymorphism to statically type serviceregistration in the Ocsigen web server:

To every page possibly with parameters

corresponds a function that takes the parameters (the querystring) and dynamically generates the appropriate Xhtml page:

let wikipage (p : WikiParams) : Xhtml = ...

type WikiParams = <params>

<title> String </title>

<action> "raw"|"edit" <action>

</params>

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 56/110

Page 291: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The binding between the URL $WEBROOT/w/index and thefunction wikipage is done by the Ocsigen functionregister_new_service:

register new service(wikipage,"w.index")

whenever the page $WEBROOT/w/index is selected, Ocsigenpasses the XML encoding of the query string to wikipage

and returns its result.

We would like to give register_new_service the type

∀(X ≤ QueryString).(X→ Xhtml)× Path→ unit

where QueryString is the XML type that includes all querystrings and Path specifies the paths of the server.

Notice

We need both higher-order polymorphic functions and boundedquantification

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 57/110

Page 292: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The binding between the URL $WEBROOT/w/index and thefunction wikipage is done by the Ocsigen functionregister_new_service:

register new service(wikipage,"w.index")

whenever the page $WEBROOT/w/index is selected, Ocsigenpasses the XML encoding of the query string to wikipage

and returns its result.

We would like to give register_new_service the type

∀(X ≤ QueryString).(X→ Xhtml)× Path→ unit

where QueryString is the XML type that includes all querystrings and Path specifies the paths of the server.

Notice

We need both higher-order polymorphic functions and boundedquantification

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 57/110

Page 293: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The binding between the URL $WEBROOT/w/index and thefunction wikipage is done by the Ocsigen functionregister_new_service:

register new service(wikipage,"w.index")

whenever the page $WEBROOT/w/index is selected, Ocsigenpasses the XML encoding of the query string to wikipage

and returns its result.

We would like to give register_new_service the type

∀(X ≤ QueryString).(X→ Xhtml)× Path→ unit

where QueryString is the XML type that includes all querystrings and Path specifies the paths of the server.

Notice

We need both higher-order polymorphic functions and boundedquantification

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 57/110

Page 294: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The binding between the URL $WEBROOT/w/index and thefunction wikipage is done by the Ocsigen functionregister_new_service:

register new service(wikipage,"w.index")

whenever the page $WEBROOT/w/index is selected, Ocsigenpasses the XML encoding of the query string to wikipage

and returns its result.

We would like to give register_new_service the type

∀(X ≤ QueryString).(X→ Xhtml)× Path→ unit

where QueryString is the XML type that includes all querystrings and Path specifies the paths of the server.

Notice

We need both higher-order polymorphic functions

and boundedquantification

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 57/110

Page 295: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The binding between the URL $WEBROOT/w/index and thefunction wikipage is done by the Ocsigen functionregister_new_service:

register new service(wikipage,"w.index")

whenever the page $WEBROOT/w/index is selected, Ocsigenpasses the XML encoding of the query string to wikipage

and returns its result.

We would like to give register_new_service the type

∀(X ≤ QueryString).(X→ Xhtml)× Path→ unit

where QueryString is the XML type that includes all querystrings and Path specifies the paths of the server.

Notice

We need both higher-order polymorphic functions and boundedquantification

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 57/110

Page 296: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A very hard problem

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 58/110

Page 297: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t

| t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 298: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1

| X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 299: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 300: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 301: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 302: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Naive solution

t ::= B | t×××t | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | X

Now use the previous relation. This is defined for “ground types”

Let σ : Vars→ Typesground denote ground substitutions thendefine:

s ≤ tdef⇐⇒ ∀σ . sσ ≤ tσ

or equivalently

s ≤ tdef⇐⇒ ∀σ.JsσK ⊆ JtσK

This is a wrong way

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 59/110

Page 303: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 304: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 305: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 306: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:

Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 307: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 308: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union suffices

If t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 309: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

1 Haruo Hosoya conjectured that deciding ∀σ . sσ ≤ tσ isequivalent to solve Diophantine equations

2 It breaks parametricity:

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

This inclusion holds if and only if t is an atomic type:Imagine that t is a singleton or a basic type (both are specialcases of atomic types), then for all possible interpretation ofX it holds

t ≤ X or X ≤ ¬¬¬t

If X ≤ ¬¬¬t then the left element of the union sufficesIf t ≤ X , then X = (X\t)∨∨∨t and, therefore,(t×××X ) = (t×××(X\t))∨∨∨(t×××t). This union is containedcomponent-wise in the one above.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 60/110

Page 310: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

The fact that

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

holds if and only if t is an atomic type is really catastrophic:

It means that to decide subtyping one has to decide atomicityof types which in general is very hard (cf. [Castagna,DeNicola, Varacca TCS 2008])

It means that subtyping breaks parametricity since bysubsumption we can consider a function generic in its firstargument, as one generic on its second argument.

We can eschew the problem by resorting to syntactic solutions:- Castagna, Frisch, Hosoya [POPL 05]- Vouillon [POPL 06]It implies to give up to the underlying semantic intuition

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 61/110

Page 311: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

The fact that

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

holds if and only if t is an atomic type is really catastrophic:

It means that to decide subtyping one has to decide atomicityof types which in general is very hard (cf. [Castagna,DeNicola, Varacca TCS 2008])

It means that subtyping breaks parametricity since bysubsumption we can consider a function generic in its firstargument, as one generic on its second argument.

We can eschew the problem by resorting to syntactic solutions:- Castagna, Frisch, Hosoya [POPL 05]- Vouillon [POPL 06]It implies to give up to the underlying semantic intuition

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 61/110

Page 312: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

The fact that

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

holds if and only if t is an atomic type is really catastrophic:

It means that to decide subtyping one has to decide atomicityof types which in general is very hard (cf. [Castagna,DeNicola, Varacca TCS 2008])

It means that subtyping breaks parametricity since bysubsumption we can consider a function generic in its firstargument, as one generic on its second argument.

We can eschew the problem by resorting to syntactic solutions:- Castagna, Frisch, Hosoya [POPL 05]- Vouillon [POPL 06]It implies to give up to the underlying semantic intuition

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 61/110

Page 313: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

The fact that

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

holds if and only if t is an atomic type is really catastrophic:

It means that to decide subtyping one has to decide atomicityof types which in general is very hard (cf. [Castagna,DeNicola, Varacca TCS 2008])

It means that subtyping breaks parametricity since bysubsumption we can consider a function generic in its firstargument, as one generic on its second argument.

We can eschew the problem by resorting to syntactic solutions:- Castagna, Frisch, Hosoya [POPL 05]- Vouillon [POPL 06]It implies to give up to the underlying semantic intuition

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 61/110

Page 314: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Problems with the naive solution

The fact that

(t×××X ) ≤ (t××׬¬¬t)∨∨∨(X×××t)

holds if and only if t is an atomic type is really catastrophic:

It means that to decide subtyping one has to decide atomicityof types which in general is very hard (cf. [Castagna,DeNicola, Varacca TCS 2008])

It means that subtyping breaks parametricity since bysubsumption we can consider a function generic in its firstargument, as one generic on its second argument.

We can eschew the problem by resorting to syntactic solutions:- Castagna, Frisch, Hosoya [POPL 05]- Vouillon [POPL 06]It implies to give up to the underlying semantic intuition NO!

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 61/110

Page 315: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Some faint intuition

The loss of parametricity is only due to the interpretation ofatomic types, all the rest works (more or less) smoothly

Indeed it seems that the crux of the problem is that for an atomictype a

a ≤ X or X ≤ ¬¬¬avalidity can stutter from one formula to another, missing in thisway the uniformity typical of parametricityIf we can give a semantic characterization of models in which thisstuttering is absent, then this should yield a subtyping relation thatis:

Semantic

Intuitive for the programmer

Decidable

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 62/110

Page 316: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Some faint intuition

The loss of parametricity is only due to the interpretation ofatomic types, all the rest works (more or less) smoothly

Indeed it seems that the crux of the problem is that for an atomictype a

a ≤ X or X ≤ ¬¬¬avalidity can stutter from one formula to another, missing in thisway the uniformity typical of parametricity

If we can give a semantic characterization of models in which thisstuttering is absent, then this should yield a subtyping relation thatis:

Semantic

Intuitive for the programmer

Decidable

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 62/110

Page 317: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Some faint intuition

The loss of parametricity is only due to the interpretation ofatomic types, all the rest works (more or less) smoothly

Indeed it seems that the crux of the problem is that for an atomictype a

a ≤ X or X ≤ ¬¬¬avalidity can stutter from one formula to another, missing in thisway the uniformity typical of parametricityIf we can give a semantic characterization of models in which thisstuttering is absent, then this should yield a subtyping relation thatis:

Semantic

Intuitive for the programmer

Decidable

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 62/110

Page 318: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Semantic solution

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 63/110

Page 319: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Rough idea

We must make atomic types “splittable” so that type variables canrange over strict subsets of every type, atomic types included

Since this cannot be done at syntactic level, move to the semanticone and replace ground substitutions by semantic assignements:

η : Vars→ P(D)

and now the interpretation function takes an extra parameter

J K : Types→ P(D)Vars → P(D)

withJX Kη = η(X ) J¬¬¬tKη = D\JtKηJt1∨∨∨t2Kη = Jt1Kη ∪ Jt2Kη Jt1∧∧∧t2Kη = Jt1Kη ∩ Jt2KηJ0Kη = ∅ J1Kη = D

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 64/110

Page 320: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Rough idea

We must make atomic types “splittable” so that type variables canrange over strict subsets of every type, atomic types included

Since this cannot be done at syntactic level, move to the semanticone and replace ground substitutions by semantic assignements:

η : Vars→ P(D)

and now the interpretation function takes an extra parameter

J K : Types→ P(D)Vars → P(D)

withJX Kη = η(X ) J¬¬¬tKη = D\JtKηJt1∨∨∨t2Kη = Jt1Kη ∪ Jt2Kη Jt1∧∧∧t2Kη = Jt1Kη ∩ Jt2KηJ0Kη = ∅ J1Kη = D

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 64/110

Page 321: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Rough idea

We must make atomic types “splittable” so that type variables canrange over strict subsets of every type, atomic types included

Since this cannot be done at syntactic level, move to the semanticone and replace ground substitutions by semantic assignements:

η : Vars→ P(D)

and now the interpretation function takes an extra parameter

J K : Types→ P(D)Vars → P(D)

withJX Kη = η(X ) J¬¬¬tKη = D\JtKηJt1∨∨∨t2Kη = Jt1Kη ∪ Jt2Kη Jt1∧∧∧t2Kη = Jt1Kη ∩ Jt2KηJ0Kη = ∅ J1Kη = D

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 64/110

Page 322: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

A semantic solution

Rough idea

We must make atomic types “splittable” so that type variables canrange over strict subsets of every type, atomic types included

Since this cannot be done at syntactic level, move to the semanticone and replace ground substitutions by semantic assignements:

η : Vars→ P(D)

and now the interpretation function takes an extra parameter

J K : Types→ P(D)Vars → P(D)

withJX Kη = η(X ) J¬¬¬tKη = D\JtKηJt1∨∨∨t2Kη = Jt1Kη ∪ Jt2Kη Jt1∧∧∧t2Kη = Jt1Kη ∩ Jt2KηJ0Kη = ∅ J1Kη = D

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 64/110

Page 323: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Subtyping relation

In this framework the natural definition of subtyping is

s ≤ tdef⇐⇒ ∀η . JsKη ⊆ JtKη

It just remains to find the uniformity condition to recoverparametricity.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 65/110

Page 324: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The magic property

Consider only models of semantic subtyping in which the followingconvexity property holds

∀η.(Jt1Kη=∅ or Jt2Kη=∅) ⇐⇒ (∀η.Jt1Kη=∅) or (∀η.Jt2Kη=∅)

It avoids stuttering: (Ja∧∧∧¬¬¬X Kη=∅ or Ja∧∧∧X Kη=∅) holds trueif and only if a is empty.

There is a natural model: every model in which all types areinterpreted as infinite sets satisfies it (we recover the initialfaint intuition).

A sound and complete algorithm: the condition gives usexactly the right conditions needed to reuse the subtypingalgorithm for ground types (though, decidability is an openproblem, yet).

An intuitive relation: the algorithm returns intuitive results(actually, it helps to better understand twisted examples)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 66/110

Page 325: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The magic property

Consider only models of semantic subtyping in which the followingconvexity property holds

∀η.(Jt1Kη=∅ or Jt2Kη=∅) ⇐⇒ (∀η.Jt1Kη=∅) or (∀η.Jt2Kη=∅)

It avoids stuttering: (Ja∧∧∧¬¬¬X Kη=∅ or Ja∧∧∧X Kη=∅) holds trueif and only if a is empty.

There is a natural model: every model in which all types areinterpreted as infinite sets satisfies it (we recover the initialfaint intuition).

A sound and complete algorithm: the condition gives usexactly the right conditions needed to reuse the subtypingalgorithm for ground types (though, decidability is an openproblem, yet).

An intuitive relation: the algorithm returns intuitive results(actually, it helps to better understand twisted examples)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 66/110

Page 326: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The magic property

Consider only models of semantic subtyping in which the followingconvexity property holds

∀η.(Jt1Kη=∅ or Jt2Kη=∅) ⇐⇒ (∀η.Jt1Kη=∅) or (∀η.Jt2Kη=∅)

It avoids stuttering: (Ja∧∧∧¬¬¬X Kη=∅ or Ja∧∧∧X Kη=∅) holds trueif and only if a is empty.

There is a natural model: every model in which all types areinterpreted as infinite sets satisfies it (we recover the initialfaint intuition).

A sound and complete algorithm: the condition gives usexactly the right conditions needed to reuse the subtypingalgorithm for ground types (though, decidability is an openproblem, yet).

An intuitive relation: the algorithm returns intuitive results(actually, it helps to better understand twisted examples)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 66/110

Page 327: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The magic property

Consider only models of semantic subtyping in which the followingconvexity property holds

∀η.(Jt1Kη=∅ or Jt2Kη=∅) ⇐⇒ (∀η.Jt1Kη=∅) or (∀η.Jt2Kη=∅)

It avoids stuttering: (Ja∧∧∧¬¬¬X Kη=∅ or Ja∧∧∧X Kη=∅) holds trueif and only if a is empty.

There is a natural model: every model in which all types areinterpreted as infinite sets satisfies it (we recover the initialfaint intuition).

A sound and complete algorithm: the condition gives usexactly the right conditions needed to reuse the subtypingalgorithm for ground types (though, decidability is an openproblem, yet).

An intuitive relation: the algorithm returns intuitive results(actually, it helps to better understand twisted examples)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 66/110

Page 328: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

The magic property

Consider only models of semantic subtyping in which the followingconvexity property holds

∀η.(Jt1Kη=∅ or Jt2Kη=∅) ⇐⇒ (∀η.Jt1Kη=∅) or (∀η.Jt2Kη=∅)

It avoids stuttering: (Ja∧∧∧¬¬¬X Kη=∅ or Ja∧∧∧X Kη=∅) holds trueif and only if a is empty.

There is a natural model: every model in which all types areinterpreted as infinite sets satisfies it (we recover the initialfaint intuition).

A sound and complete algorithm: the condition gives usexactly the right conditions needed to reuse the subtypingalgorithm for ground types (though, decidability is an openproblem, yet).

An intuitive relation: the algorithm returns intuitive results(actually, it helps to better understand twisted examples)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 66/110

Page 329: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Examples of subtyping relations

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 67/110

Page 330: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Examples

We can internalize properties such as:

(α→ γ) ∧ (β → γ) ∼ α∨β → γ

or distributivity laws:

(α∨β × γ) ∼ (α×γ) ∨ (β×γ) (2)

combining them we deduce:

(α×γ → δ1) ∧ (β×γ → δ2) ≤ (α∨β × γ)→ δ1 ∨ δ2

We can prove relevant relations on infinite types. Consider genericlists:

α list = µx .(α×x) ∨ nil

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 68/110

Page 331: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Examples

We can internalize properties such as:

(α→ γ) ∧ (β → γ) ∼ α∨β → γ

or distributivity laws:

(α∨β × γ) ∼ (α×γ) ∨ (β×γ) (2)

combining them we deduce:

(α×γ → δ1) ∧ (β×γ → δ2) ≤ (α∨β × γ)→ δ1 ∨ δ2

We can prove relevant relations on infinite types. Consider genericlists:

α list = µx .(α×x) ∨ nil

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 68/110

Page 332: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Examples

We can internalize properties such as:

(α→ γ) ∧ (β → γ) ∼ α∨β → γ

or distributivity laws:

(α∨β × γ) ∼ (α×γ) ∨ (β×γ) (2)

combining them we deduce:

(α×γ → δ1) ∧ (β×γ → δ2) ≤ (α∨β × γ)→ δ1 ∨ δ2

We can prove relevant relations on infinite types. Consider genericlists:

α list = µx .(α×x) ∨ nil

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 68/110

Page 333: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Examples

We can internalize properties such as:

(α→ γ) ∧ (β → γ) ∼ α∨β → γ

or distributivity laws:

(α∨β × γ) ∼ (α×γ) ∨ (β×γ) (2)

combining them we deduce:

(α×γ → δ1) ∧ (β×γ → δ2) ≤ (α∨β × γ)→ δ1 ∨ δ2

We can prove relevant relations on infinite types. Consider genericlists:

α list = µx .(α×x) ∨ nil

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 68/110

Page 334: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

It contains both the α-lists with an even number of elements

µx .(α×(α×x)) ∨ nil ≤ µx .(α×x) ∨ nil

and the α-lists with an odd number of elements

µx .(α×(α×x)) ∨ (α×nil) ≤ µx .(α×x) ∨ nil

and it is itself contained in the union of the two, that is:

α list ∼ (µx .(α× (α× x))∨ nil) ∨ (µx .(α× (α× x))∨ (α× nil))

And we can prove far more complicated relations (see later).

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 69/110

Page 335: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

It contains both the α-lists with an even number of elements

µx .(α×(α×x)) ∨ nil ≤ µx .(α×x) ∨ nil

and the α-lists with an odd number of elements

µx .(α×(α×x)) ∨ (α×nil) ≤ µx .(α×x) ∨ nil

and it is itself contained in the union of the two, that is:

α list ∼ (µx .(α× (α× x))∨ nil) ∨ (µx .(α× (α× x))∨ (α× nil))

And we can prove far more complicated relations (see later).

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 69/110

Page 336: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

It contains both the α-lists with an even number of elements

µx .(α×(α×x)) ∨ nil ≤ µx .(α×x) ∨ nil

and the α-lists with an odd number of elements

µx .(α×(α×x)) ∨ (α×nil) ≤ µx .(α×x) ∨ nil

and it is itself contained in the union of the two, that is:

α list ∼ (µx .(α× (α× x))∨ nil) ∨ (µx .(α× (α× x))∨ (α× nil))

And we can prove far more complicated relations (see later).

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 69/110

Page 337: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Subtyping algorithm

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 70/110

Page 338: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Subtyping Algorithm

Step 1: Transform the subtyping problem into an emptinessdecision problem:t1 ≤ t2 ⇐⇒ ∀η.Jt1Kη ⊆ Jt2Kη ⇐⇒ ∀η.Jt1∧¬t2Kη=∅ ⇐⇒t1∧¬t2 ≤ 0

Step 2: Put the type whose emptiness is to be decided indisjunctive normal form.∨

i∈I

∧j∈J

`ij

where a ::= b | t × t | t → t | 0 | 1 | α and ` ::= a | ¬aStep 3: Simplify mixed intersections:

Consider each summand of the union: cases such ast1×t2 ∧ t1→t2 or t1×t2 ∧ ¬(t1→t2) are straightforward.

Solve:∧i∈I

ai∧j∈J¬a′j

∧h∈H

αh

∧k∈K¬βk

where all a are of the same kind.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 71/110

Page 339: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Subtyping Algorithm

Step 1: Transform the subtyping problem into an emptinessdecision problem:t1 ≤ t2 ⇐⇒ ∀η.Jt1Kη ⊆ Jt2Kη ⇐⇒ ∀η.Jt1∧¬t2Kη=∅ ⇐⇒t1∧¬t2 ≤ 0

Step 2: Put the type whose emptiness is to be decided indisjunctive normal form.∨

i∈I

∧j∈J

`ij

where a ::= b | t × t | t → t | 0 | 1 | α and ` ::= a | ¬a

Step 3: Simplify mixed intersections:Consider each summand of the union: cases such ast1×t2 ∧ t1→t2 or t1×t2 ∧ ¬(t1→t2) are straightforward.

Solve:∧i∈I

ai∧j∈J¬a′j

∧h∈H

αh

∧k∈K¬βk

where all a are of the same kind.

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 71/110

Page 340: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Subtyping Algorithm

Step 1: Transform the subtyping problem into an emptinessdecision problem:t1 ≤ t2 ⇐⇒ ∀η.Jt1Kη ⊆ Jt2Kη ⇐⇒ ∀η.Jt1∧¬t2Kη=∅ ⇐⇒t1∧¬t2 ≤ 0

Step 2: Put the type whose emptiness is to be decided indisjunctive normal form.∨

i∈I

∧j∈J

`ij

where a ::= b | t × t | t → t | 0 | 1 | α and ` ::= a | ¬aStep 3: Simplify mixed intersections:

Consider each summand of the union: cases such ast1×t2 ∧ t1→t2 or t1×t2 ∧ ¬(t1→t2) are straightforward.

Solve:∧i∈I

ai∧j∈J¬a′j

∧h∈H

αh

∧k∈K¬βk

where all a are of the same kind.Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 71/110

Page 341: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Step 4: Eliminate toplevel negative variables.,

∀η.JtKη = ∅ ⇐⇒ ∀η.Jt{¬α/α}Kη = ∅so replace ¬βk for βk (forall k ∈ K )

Solve:∧i∈I

ai∧j∈J¬a′j

∧h∈H

αh

Step 5: Eliminate toplevel variables.∧t1×t2∈P

t1×t2

∧h∈H

αh ≤∨

t′1×t′2∈Nt ′1×t ′2

holds if and only if∧t1×t2∈P

t1σ × t2σ∧h∈H

γ1h × γ2

h ≤∨

t′1×t′2∈Nt ′1σ × t ′2σ

where σ = {(γ1h×γ2

h) ∨ αh/αh}h∈H (similarly for arrows)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 72/110

Page 342: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Step 4: Eliminate toplevel negative variables.,

∀η.JtKη = ∅ ⇐⇒ ∀η.Jt{¬α/α}Kη = ∅so replace ¬βk for βk (forall k ∈ K )

Solve:∧i∈I

ai∧j∈J¬a′j

∧h∈H

αh

Step 5: Eliminate toplevel variables.∧t1×t2∈P

t1×t2

∧h∈H

αh ≤∨

t′1×t′2∈Nt ′1×t ′2

holds if and only if∧t1×t2∈P

t1σ × t2σ∧h∈H

γ1h × γ2

h ≤∨

t′1×t′2∈Nt ′1σ × t ′2σ

where σ = {(γ1h×γ2

h) ∨ αh/αh}h∈H (similarly for arrows)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 72/110

Page 343: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivations 2. Current status 2. Semantic solution 3. Examples 4. Algorithm MPRI

Step 6: Eliminate toplevel constructors, memoize, and recurse.Thanks to convexity and the product decomposition rules∧

t1×t2∈Pt1×t2 ≤

∨t′1×t′2∈N

t ′1×t ′2 (3)

is equivalent to

∀N ′⊆N.

∧t1×t2∈P

t1 ≤∨

t′1×t′2∈N′t ′1

or

∧t1×t2∈P

t2 ≤∨

t′1×t′2∈N\N′t ′2

(similarly for arrows)

Part 3: Polymorphic subtyping G. Castagna: Theory and practice of XML processing languages 73/110

Page 344: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

PART 4: POLYMORPHICLANGUAGE

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 74/110

Page 345: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Motivating example

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 75/110

Page 346: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell

(almost)

[no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 347: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell

(almost)

[no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 348: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 349: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 350: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 351: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 352: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 353: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 354: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

Typical function used to modify some nodesof an XML tree leaving the others unchanged.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 355: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

Expression: if the argument is an integer then return theBoolean expression otherwise return the argument

Type: when applied to an Int it returns a Bool; when appliedto an argument that is not an Int it returns a result of thesame type.

The combination of type-case and intersectionsyields statically typed dynamic overloading.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 356: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

This example as a yardstick. I want to define a language that:

1 Can define both map and even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 357: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

This example as a yardstick. I want to define a language that:

1 Can define both map and even

2 Can check the types specified in the signature

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 358: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

This example as a yardstick. I want to define a language that:

1 Can define both map and even

2 Can check the types specified in the signature

3 Can deduce the type of the partial application map even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 359: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

This example as a yardstick. I want to define a language that:

1 Can define both map and even

2 Can check the types specified in the signature

3 Can deduce the type of the partial application map even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 360: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

This example as a yardstick. I want to define a language that:

1 Can define both map and even

2 Can check the types specified in the signature

3 Can deduce the type of the partial application map even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 361: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

We expect map evenmap evenmap even to have the following type:

( Int list→ Bool list ) ∧∧∧ int lists are transformed into bool lists(ααα\\\Int list→ ααα\\\Int list ) ∧∧∧ lists w/o ints return the same type(ααα∨∨∨Int list→ (ααα\\\Int)∨∨∨Bool list ) ints in the arg. are replaced by bools

Difficult because of expansion: needs a set of type substitutions —rather than just one— to unify the domain and the argument types.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 362: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

We expect map evenmap evenmap even to have the following type:

( Int list→ Bool list ) ∧∧∧ int lists are transformed into bool lists(ααα\\\Int list→ ααα\\\Int list ) ∧∧∧ lists w/o ints return the same type(ααα∨∨∨Int list→ (ααα\\\Int)∨∨∨Bool list ) ints in the arg. are replaced by bools

Difficult because of expansion: needs a set of type substitutions —rather than just one— to unify the domain and the argument types.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 363: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A motivating example in Haskell (almost) [no XML]

map :: (ααα→βββ)→ [ααα]→ [βββ]map f l = case l of

| [] -> []| (x : xs) -> (f x : map f xs)

even :: (Int→ Bool) ∧∧∧ ((ααα\\\Int)→ (ααα\\\Int))even x = case x of

| Int -> (x ‘mod‘ 2) == 0| _ -> x

We expect map evenmap evenmap even to have the following type:

( Int list→ Bool list ) ∧∧∧ int lists are transformed into bool lists(ααα\\\Int list→ ααα\\\Int list ) ∧∧∧ lists w/o ints return the same type(ααα∨∨∨Int list→ (ααα\\\Int)∨∨∨Bool list ) ints in the arg. are replaced by bools

Difficult because of expansion: needs a set of type substitutions —rather than just one— to unify the domain and the argument types.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 76/110

Page 364: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal framework

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 77/110

Page 365: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 366: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Expressions include:

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 367: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Expressions include:

A type-case:abstracts regular type patternsmakes dynamic overloading possible

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 368: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Expressions include:

A type-case:abstracts regular type patternsmakes dynamic overloading possible

Explicitly-typed functions:Needed by the type-case [e.g. µf .λx .f ∈(1→Int) ? true : 42]

More expressive with the result type (parameter type not enough)

λ∧i∈I si→ti x .e: well typed if for all i∈I from x : si we can deduce e : ti .

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 369: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Types may be recursive and have a set-theoretic interpretation:

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 370: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Types may be recursive and have a set-theoretic interpretation:

Constructors: JIntK={0, 1,−1, ...}. Js → tK = λ-abstractions thatwhen applied to arguments in JsK return only results in JtK.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 371: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Types may be recursive and have a set-theoretic interpretation:

Constructors: JIntK={0, 1,−1, ...}. Js → tK = λ-abstractions thatwhen applied to arguments in JsK return only results in JtK.

Connectives have the corresponding set-theoretic interpretation:Js∨∨∨tK = JsK ∪ JtK Js∧∧∧tK = JsK ∩ JtK J¬¬¬tK = J1K \ JtK

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 372: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Types may be recursive and have a set-theoretic interpretation:

Constructors: JIntK={0, 1,−1, ...}. Js → tK = λ-abstractions thatwhen applied to arguments in JsK return only results in JtK.

Connectives have the corresponding set-theoretic interpretation:Js∨∨∨tK = JsK ∪ JtK Js∧∧∧tK = JsK ∩ JtK J¬¬¬tK = J1K \ JtK

Subtyping:

it is defined as set-containment: s ≤ tdef⇐⇒ JsK ⊆ JtK;

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 373: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Types may be recursive and have a set-theoretic interpretation:

Constructors: JIntK={0, 1,−1, ...}. Js → tK = λ-abstractions thatwhen applied to arguments in JsK return only results in JtK.

Connectives have the corresponding set-theoretic interpretation:Js∨∨∨tK = JsK ∪ JtK Js∧∧∧tK = JsK ∩ JtK J¬¬¬tK = J1K \ JtK

Subtyping with type variables:

it is defined as set-containment: s ≤ tdef⇐⇒ JsK ⊆ JtK;

it is such that forall type-substitutions σ: s ≤ t ⇒ sσ ≤ tσ;it is decidable. [ICFP2011].

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 374: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Polymorphic functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 375: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Polymorphic functions: The novelty of this work is that type vari-ables can occur in the interfaces.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Formal calculus

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Polymorphic functions: The novelty of this work is that type vari-ables can occur in the interfaces.

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 376: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Polymorphic functions: The novelty of this work is that type vari-ables can occur in the interfaces.

λα→αx .x polymorphic identityλ(α→β)∧∧∧α→βx .xx auto-application

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 377: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Polymorphic functions: The novelty of this work is that type vari-ables can occur in the interfaces.

λα→αx .x polymorphic identityλ(α→β)∧∧∧α→βx .xx auto-application

Meaning: types obtained by subsumption and by instantiationλα→αx .x : 0→ 1 subsumptionλα→αx .x : ¬Int subsumptionλα→αx .x : Int→ Int instantiationλα→αx .x : Bool→ Bool instantiation

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 378: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Problem

Define an explicitly typed, polymorphic calculuswith intersection types and dynamic type-case

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 379: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Problem

Define an explicitly typed, polymorphic calculuswith intersection types and dynamic type-case

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 380: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Formal calculus: new stuff

Exprs e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Types t ::= B | t→→→t | t∨∨∨t | t∧∧∧t | ¬t | 0 | 1 | ααα

Problem

Define an explicitly typed, polymorphic calculuswith intersection types and dynamic type-case

Four simple points to show why dealingwith this blend is quite problematic

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 78/110

Page 381: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:

To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 382: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 383: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 384: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 385: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:

A “daffy” definition of identity:(λα→αx .(λα→αy .x)x)

To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 386: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)

To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 387: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

1. Polymorphism needs instantiation:To apply λα→αx .x to 42 we must use the instance obtained by thetype substitution {Int/α}:

(λInt→Intx .x)42we relabel the function by instantiating its interface.

2. Type-case needs explicit relabeling:(λα→α→αx .λα→αy .x)42 ∈ Int→Int ; λInt→Inty .42(λα→α→αx .λα→αy .x)true 6∈ Int→Int ; λBool→Booly .true

Interfaces determine λ-abstractions’s types [intrinsic semantics]

3. Relabeling must be applied also on function bodies:A “daffy” definition of identity:

(λα→αx .(λα→αy .x)x)To apply it to 42, relabeling the outer λ by {Int/α} does notsuffice:

(λα→αy .42)42is not well typed. The body must be relabeled as well, by applyingthe {Int/α} yielding: (λInt→Inty .42)42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 79/110

Page 388: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 389: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 390: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 391: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 392: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.

We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 393: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?

Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 394: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 395: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 396: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 80/110

Page 397: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 398: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 399: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 400: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 401: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.

We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 402: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?

Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 403: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 404: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 405: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the identity to a function which expects argument ofthat type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧∧∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 81/110

Page 406: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

The identity function λα→αx .x has both these types:

(Int→Int) ∧∧∧ (Bool→Bool)

So it has their intersection.We can feed the the identity to a function which expects argumentof that type. But how do we relabel it?Intuitively: apply {Int/α} and {Bool/α} to the interface andreplace it by the intersection of the two instances:

(λα→αx .x)[{Int/α}, {Bool/α}] ; λ(Int→Int)∧(Bool→Bool)x .x

We applied a set of type substitutions: t[σi ]i∈I =∧

i∈I tσi .

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 82/110

Page 407: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

Consider again the daffy identity (λα→αx .(λα→αy .x)x).It also has type

(Int→Int) ∧∧∧ (Bool→Bool)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 82/110

Page 408: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

Consider again the daffy identity (λα→αx .(λα→αy .x)x).It also has type

(Int→Int) ∧∧∧ (Bool→Bool)

Applying the set of substitutions [{Int/α}, {Bool/α}] both to theinterface and the body yields an ill-typed term:

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 82/110

Page 409: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

4. Relabeling the body is not always straightforward:

1 More than one type-substitution needed

2 Relabeling depends on the dynamic type of the argument

Consider again the daffy identity (λα→αx .(λα→αy .x)x).It also has type

(Int→Int) ∧∧∧ (Bool→Bool)

Applying the set of substitutions [{Int/α}, {Bool/α}] both to theinterface and the body yields an ill-typed term:

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

Let us see whyit is not well typed

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 82/110

Page 410: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 411: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 412: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 413: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 414: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 415: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:

(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 416: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:

(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 417: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

In order to type

(λ(Int→Int)∧∧∧(Bool→Bool)x .(λ(Int→Int)∧∧∧(Bool→Bool)y .x)x)

we must check that it has both types of the interface:

1 x : Int ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Int

2 x : Bool ` (λ(Int→Int)∧∧∧(Bool→Bool)y .x)x : Bool

Both fail because λ(Int→Int)∧∧∧(Bool→Bool)y .x is not well typed

Key idea

The relabeling of the body must changeaccording to the type of the parameter

In our example with (λα→αx .(λα→αy .x)x) and [{Int/α}, {Bool/α}]:(λα→αy .x) must be relabeled as (λInt→Inty .x) when x : Int;(λα→αy .x) must be relabeled as (λBool→Booly .x) when x : Bool

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 83/110

Page 418: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeledThe relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 419: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:

To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeledThe relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 420: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeledThe relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 421: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeled

The relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 422: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeledThe relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)

The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 423: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A new technique

Observation

This “dependent relabeling” is the stumbling block for thedefinition of an explicitly-typed λ-calculus with intersection types.

A new technique: “lazy” relabeling of bodies.

Decorate λ-abstractions by sets of type-substitutions:To pass the daffy identity to a function that expectsarguments of type (Int→Int) ∧ (Bool→Bool)first “lazily” relabel it as follows:

(λα→α[{Int/α},{Bool/α}]x .(λα→αy .x)x)

The decoration indicates that the function must be relabeledThe relabeling will be actually propagated to the body of thefunction at the moment of the reduction (lazy relabeling)The new decoration is statically used by the type system toensure soundness.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 84/110

Page 424: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Details follow, but remember we want to program in this language

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : eNo decorations: We do not want to oblige the programmer towrite any explicit type substitution.

The technical development will proceed as follows:

1 Define a calculus with explicit type-substitutions anddecorated λ-abstractions.

2 Define an inference system that deduces where to insertexplicit type-substitutions in a term of the language above

3 Define a compilation and execution technique thanks to whichtype substitutions are computed only when strictly necessary(in general, as efficient as a monomorphic execution).

Before proceeding we can already check our first yardstick:

even = λ(Int→Bool)∧∧∧(α\\\Int→α\\\Int)x . x∈Int ? (x mod 2) = 0 : x

map = µm(α→β)→[α]→[β] f .λ[α]→[β]` . `∈nil ? nil : (f (π1`),mf (π2`))

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 85/110

Page 425: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Details follow, but remember we want to program in this language

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : eNo decorations: We do not want to oblige the programmer towrite any explicit type substitution.

The technical development will proceed as follows:

1 Define a calculus with explicit type-substitutions anddecorated λ-abstractions.

2 Define an inference system that deduces where to insertexplicit type-substitutions in a term of the language above

3 Define a compilation and execution technique thanks to whichtype substitutions are computed only when strictly necessary(in general, as efficient as a monomorphic execution).

Before proceeding we can already check our first yardstick:

even = λ(Int→Bool)∧∧∧(α\\\Int→α\\\Int)x . x∈Int ? (x mod 2) = 0 : x

map = µm(α→β)→[α]→[β] f .λ[α]→[β]` . `∈nil ? nil : (f (π1`),mf (π2`))

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 85/110

Page 426: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Details follow, but remember we want to program in this language

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : eNo decorations: We do not want to oblige the programmer towrite any explicit type substitution.

The technical development will proceed as follows:

1 Define a calculus with explicit type-substitutions anddecorated λ-abstractions.

2 Define an inference system that deduces where to insertexplicit type-substitutions in a term of the language above

3 Define a compilation and execution technique thanks to whichtype substitutions are computed only when strictly necessary(in general, as efficient as a monomorphic execution).

Before proceeding we can already check our first yardstick:

even = λ(Int→Bool)∧∧∧(α\\\Int→α\\\Int)x . x∈Int ? (x mod 2) = 0 : x

map = µm(α→β)→[α]→[β] f .λ[α]→[β]` . `∈nil ? nil : (f (π1`),mf (π2`))

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 85/110

Page 427: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicittype-substitutions

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 86/110

Page 428: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 429: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 430: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42

(λα→α[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 431: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 432: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42

(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 433: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])

(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 434: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

A calculus with explicit type-substitutions

Explicitly pinpoint where sets of type substitutions are applied:

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Some examples:

(λα→αx .x)42

(λα→αx .x)[{Int/α}]42(λα→α

[{Int/α}]x .x)42

(λα→αx .x)[{Bool/α}]42(λ(Int→Int)→Inty .y3)(λα→αx .x)

(λ(Int→Int)→Inty .y3)((λα→αx .x)[{Int/α}])(λ((Int→Int)∧∧∧(Bool→Bool))→ty .e)((λα→αx .x)[{Int/α}, {Bool/α}])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 87/110

Page 435: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : pushes the type substitutionsinto the decorations of the λ’s inside e [Pushes σ’s down into λ’s]x@[σj ]j∈J

def= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 436: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : pushes the type substitutionsinto the decorations of the λ’s inside e

[Pushes σ’s down into λ’s]x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 437: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 438: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 439: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si

[σk ]k∈Kx .e)@[σj ]j∈J

def= λ

∧i∈I ti→si

[σk ]k∈K◦[σj ]j∈Jx .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 440: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 441: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 442: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 443: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Reduction semantics

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Relabeling operation e@[σj ]j∈J : [Pushes σ’s down into λ’s]

x@[σj ]j∈Jdef= x

(λ∧i∈I ti→si[σk ]k∈K

x .e)@[σj ]j∈Jdef= λ

∧i∈I ti→si[σk ]k∈K◦[σj ]j∈J

x .e

(e1e2)@[σj ]j∈Jdef= (e1@[σj ]j∈J)(e2@[σj ]j∈J)

(e∈t ? e1 : e2)@[σj ]j∈Jdef= e@[σj ]j∈J∈t ? e1@[σj ]j∈J : e2@[σj ]j∈J

(e[σk ]k∈K )@[σj ]j∈Jdef= e@([σk ]k∈K ◦ [σj ]j∈J)

Notions of reduction:e[σj ]j∈J ; e@[σj ]j∈J

(λ∧i∈I ti→si[σj ]j∈J

x .e)v ; (e@[σj ]j∈P){v/x} P = {j∈J | ∃i∈I ,` v : tiσj}

v∈t ? e1 : e2 ;

{e1 if ` v : te2 otherwise

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 88/110

Page 444: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 445: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 446: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 447: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 448: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 449: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 450: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42

≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 451: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42

≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

❀ (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

❀ (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

❀ (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 452: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 453: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 454: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example

(λ(Int→Int)∧(Bool→Bool)z .(λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]z)42

; (λα→αx .(λα→αy .x)x)[{Int/α}, {Bool/α}]42

; (λα→α[{Int/α},{Bool/α}]x .(λ

α→αy .x)x)42

; (λInt→Inty .42)42 ≡ (((λα→αy .x)x)@[{Int/α}]){42/x}

; 42

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 89/110

Page 455: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type system

(subsumption)

Γ ` e : t1 t1≤t2

Γ ` e : t2

(inst)

Γ ` e : t σj] Γ

Γ ` e[σj ]j∈J :∧j∈J

tσj

(appl)

Γ ` e1 : t1 → t2 Γ ` e2 : t1

Γ ` e1e2 : t2

(abstr)

Γ, x : tiσj ` e@[σj ] : siσj

Γ ` λ∧i∈I ti→si[σj ]j∈J

x .e :∧

i∈I ,j∈Jtiσj → siσj

i ∈ Ij ∈ J

[plus the rules for type-case and variables]Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 90/110

Page 456: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type system

(subsumption)

Γ ` e : t1 t1≤t2

Γ ` e : t2

(inst)

Γ ` e : t σj] Γ

Γ ` e[σj ]j∈J :∧j∈J

tσj

(appl)

Γ ` e1 : t1 → t2 Γ ` e2 : t1

Γ ` e1e2 : t2

(abstr)

Γ, x : tiσj ` e@[σj ] : siσj

Γ ` λ∧i∈I ti→si[σj ]j∈J

x .e :∧

i∈I ,j∈Jtiσj → siσj

i ∈ Ij ∈ J

[plus the rules for type-case and variables]Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 90/110

Page 457: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type system

(subsumption)

Γ ` e : t1 t1≤t2

Γ ` e : t2

(inst)

Γ ` e : t σj] Γ

Γ ` e[σj ]j∈J :∧j∈J

tσj

(appl)

Γ ` e1 : t1 → t2 Γ ` e2 : t1

Γ ` e1e2 : t2

(abstr)

Γ, x : tiσj ` e@[σj ] : siσj

Γ ` λ∧i∈I ti→si[σj ]j∈J

x .e :∧

i∈I ,j∈Jtiσj → siσj

i ∈ Ij ∈ J

[plus the rules for type-case and variables]Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 90/110

Page 458: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type system

(subsumption)

Γ ` e : t1 t1≤t2

Γ ` e : t2

(inst)

Γ ` e : t σj] Γ

Γ ` e[σj ]j∈J :∧j∈J

tσj

(appl)

Γ ` e1 : t1 → t2 Γ ` e2 : t1

Γ ` e1e2 : t2

(abstr)

Γ, x : tiσj ` e@[σj ] : siσj

Γ ` λ∧i∈I ti→si[σj ]j∈J

x .e :∧

i∈I ,j∈Jtiσj → siσj

i ∈ Ij ∈ J

[plus the rules for type-case and variables]Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 90/110

Page 459: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 460: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 461: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 462: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 463: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 464: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

satisfies the above theorem and is closed by reduction.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 465: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

satisfies the above theorem and is closed by reduction, too.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 466: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

Theorem (Subject Reduction)

For every term e and type t, if Γ ` e : t and e ; e ′, then Γ ` e ′ : t.

Theorem (Progress)

Let e be a well-typed closed term. If e is not a value, then thereexists a term e ′ such that e ; e ′.

Theorem

Let `BCD be Barendregt, Coppo, and Dezani, typing, and dee thetype erasure of e. If `BCD a : t, then ∃e s.t. ` e : t and dee = a.

Note that

e ::= x | ee | λ∧i∈I si→ti[σj ]j∈J

x .e | e∈t ? e : e | e[σi ]i∈I

The first n terms (n = 3, 4, 5) form an explicitly-typed λ-calculuswith intersection types subsuming BCD.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 91/110

Page 467: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

The definitions we gave:

even = λ(Int→Bool)∧∧∧(α\\\Int→α\\\Int)x . x∈Int ? (x mod 2) = 0 : x

map = µm(α→β)→[α]→[β] f .λ[α]→[β]` . `∈nil ? nil : (f (π1`),mf (π2`))

are well typed.

A yardstick for the language

Can define both map and even

Can check the types specified in the signature

Can deduce the type of the partial application map even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 92/110

Page 468: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Properties

The definitions we gave:

even = λ(Int→Bool)∧∧∧(α\\\Int→α\\\Int)x . x∈Int ? (x mod 2) = 0 : x

map = µm(α→β)→[α]→[β] f .λ[α]→[β]` . `∈nil ? nil : (f (π1`),mf (π2`))

are well typed.

A yardstick for the language

Can define both map and even

Can check the types specified in the signature

Can deduce the type of the partial application map even

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 92/110

Page 469: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Inference of explicittype-substitutions

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 93/110

Page 470: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Two problems:

1 Local type-substitution inference: Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : ea sound & complete algorithm that, whenever possible, insertssets of type-substitutions that make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

(and, yes, the type inferred for map even is as expected)

2 Type recostruction: Given a term

λx .e

find, if possible, a set of type-substitutions [σj ]j∈J such that

λ[σj ]j∈J

α→β x .e

is well typed

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 94/110

Page 471: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Two problems:

1 Local type-substitution inference: Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : ea sound & complete algorithm that, whenever possible, insertssets of type-substitutions that make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

(and, yes, the type inferred for map even is as expected)

2 Type recostruction: Given a term

λx .e

find, if possible, a set of type-substitutions [σj ]j∈J such that

λ[σj ]j∈J

α→β x .e

is well typed

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 94/110

Page 472: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Two problems:

1 Local type-substitution inference: Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : ea sound & complete algorithm that, whenever possible, insertssets of type-substitutions that make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

(and, yes, the type inferred for map even is as expected)

2 Type recostruction: Given a term

λx .e

find, if possible, a set of type-substitutions [σj ]j∈J such that

λ[σj ]j∈J

α→β x .e

is well typed

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 94/110

Page 473: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Local Type-Substitution Inference

Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Infer whether it is possible to insert sets of type-substitutions in itto make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

The reason is purely practical:

λα→αx .3 must return a static type error

If we infer decorations, then it can be typed: λα→α{Int/α}x .3

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 95/110

Page 474: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Local Type-Substitution Inference

Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Infer whether it is possible to insert sets of type-substitutions in itto make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

The reason is purely practical:

λα→αx .3 must return a static type error

If we infer decorations, then it can be typed: λα→α{Int/α}x .3

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 95/110

Page 475: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Local Type-Substitution Inference

Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Infer whether it is possible to insert sets of type-substitutions in itto make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

The reason is purely practical:

λα→αx .3 must return a static type error

If we infer decorations, then it can be typed: λα→α{Int/α}x .3

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 95/110

Page 476: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Local Type-Substitution Inference

Given a term of

e ::= x | ee | λ∧i∈I si→ti x .e | e∈t ? e : e

Infer whether it is possible to insert sets of type-substitutions in itto make it a well-typed term of

e ::= x | ee | λ∧i∈I si→ti[ ] x .e | e∈t ? e : e | e[σj ]j∈J

The reason is purely practical:

λα→αx .3 must return a static type error

If we infer decorations, then it can be typed: λα→α{Int/α}x .3

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 95/110

Page 477: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 478: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 479: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 480: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 481: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 482: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The rule for applications1. In the type system: [with explicit type-subst.]

(Appl)

Γ ` e1 : s → u Γ ` e2 : s

Γ ` e1e2 : u

[The type of the function is subsumed to an arrow and the type of theargument is subsumed to the domain of this arrow].

2. Subsumption elimination: [with explicit type-subst.]

(Appl-algorithm)

Γ `A e1 : t Γ `A e2 : s

Γ `A e1e2 : min{u | t ≤ s → u}t ≤ 0→ 1s ≤ dom(t)

3. Inference of type substitutions [w/o explicit type-subst.]

(Appl-inference)

∃[σi ]i∈I , [σ′j ]j∈J Γ `I e1 : t Γ `I e2 : s

Γ `I e1e2 : min{u | t[σ′j ]j∈J ≤ s[σi ]i∈I → u}t[σ′

j ]j∈J ≤ 0→ 1s[σi ]i∈I ≤ dom(t[σ′

j ]j∈J)

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 96/110

Page 483: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Tallying problem

The problem of inferring the type of an application is thus to findfor s and t given, [σi ]i∈I , [σ′j ]j∈J such that:

t[σ′j ]j∈J ≤ 0→ 1 and s[σi ]i∈I ≤ dom(t[σ′j ]j∈J)

This can be reduced to solving a suite of tallying problems

Definition (Type tallying)

Let C = {(s1, t1), ..., (sn, tn)} a constraint set. A type-substitutionσ is a solution for the tallying of C iff sσ ≤ tσ for all (s, t) ∈ C .

A sound and complete set of solutions for every tallying problemcan be effectively found in three simple steps.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 97/110

Page 484: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Tallying problem

The problem of inferring the type of an application is thus to findfor s and t given, [σi ]i∈I , [σ′j ]j∈J such that:

t[σ′j ]j∈J ≤ 0→ 1 and s[σi ]i∈I ≤ dom(t[σ′j ]j∈J)

This can be reduced to solving a suite of tallying problems

Definition (Type tallying)

Let C = {(s1, t1), ..., (sn, tn)} a constraint set. A type-substitutionσ is a solution for the tallying of C iff sσ ≤ tσ for all (s, t) ∈ C .

A sound and complete set of solutions for every tallying problemcan be effectively found in three simple steps.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 97/110

Page 485: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Step 1: Decompose constraints.Use the set-theoretic decomposition rules to transform C into a setof constraint sets whose constraints are of the form (α, t) or (t, α).

Step 2: Merge constraints on the same variable.

if (α, t1) and (α, t2) are in C , then replace them by (α, t1∧∧∧t2);if (s1, α) and (s2, α) are in C , then replace them by (s1∨∨∨s2, α);

Possibly decompose the new constraints generated by transitivity.

Step 3: Transform into a set of equations.After Step 2 we have constraint-sets of the form{si≤αi≤ti | i ∈ [1..n]} where αi are pairwise distinct.

1 select s ≤ α ≤ t and replace it by α = (s∨∨∨β)∧∧∧t with β fresh.2 in all other constraints in replace every α by (s∨∨∨β)∧∧∧t3 repeat with another constraint

At the end we have a sets of equations {αi = ui | i ∈ [1..n]} that(with some care) are contractive. By Courcelle there exists asolution, ie, a substitution for α1, ..., αn into (possibly recursiveregular) types t1, ..., tn (in which the fresh β’s are free variables).

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 98/110

Page 486: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Step 1: Decompose constraints.Use the set-theoretic decomposition rules to transform C into a setof constraint sets whose constraints are of the form (α, t) or (t, α).

Step 2: Merge constraints on the same variable.

if (α, t1) and (α, t2) are in C , then replace them by (α, t1∧∧∧t2);if (s1, α) and (s2, α) are in C , then replace them by (s1∨∨∨s2, α);

Possibly decompose the new constraints generated by transitivity.

Step 3: Transform into a set of equations.After Step 2 we have constraint-sets of the form{si≤αi≤ti | i ∈ [1..n]} where αi are pairwise distinct.

1 select s ≤ α ≤ t and replace it by α = (s∨∨∨β)∧∧∧t with β fresh.2 in all other constraints in replace every α by (s∨∨∨β)∧∧∧t3 repeat with another constraint

At the end we have a sets of equations {αi = ui | i ∈ [1..n]} that(with some care) are contractive. By Courcelle there exists asolution, ie, a substitution for α1, ..., αn into (possibly recursiveregular) types t1, ..., tn (in which the fresh β’s are free variables).

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 98/110

Page 487: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Step 1: Decompose constraints.Use the set-theoretic decomposition rules to transform C into a setof constraint sets whose constraints are of the form (α, t) or (t, α).

Step 2: Merge constraints on the same variable.

if (α, t1) and (α, t2) are in C , then replace them by (α, t1∧∧∧t2);if (s1, α) and (s2, α) are in C , then replace them by (s1∨∨∨s2, α);

Possibly decompose the new constraints generated by transitivity.

Step 3: Transform into a set of equations.After Step 2 we have constraint-sets of the form{si≤αi≤ti | i ∈ [1..n]} where αi are pairwise distinct.

1 select s ≤ α ≤ t and replace it by α = (s∨∨∨β)∧∧∧t with β fresh.2 in all other constraints in replace every α by (s∨∨∨β)∧∧∧t3 repeat with another constraint

At the end we have a sets of equations {αi = ui | i ∈ [1..n]} that(with some care) are contractive. By Courcelle there exists asolution, ie, a substitution for α1, ..., αn into (possibly recursiveregular) types t1, ..., tn (in which the fresh β’s are free variables).

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 98/110

Page 488: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Step 1: Decompose constraints.Use the set-theoretic decomposition rules to transform C into a setof constraint sets whose constraints are of the form (α, t) or (t, α).

Step 2: Merge constraints on the same variable.

if (α, t1) and (α, t2) are in C , then replace them by (α, t1∧∧∧t2);if (s1, α) and (s2, α) are in C , then replace them by (s1∨∨∨s2, α);

Possibly decompose the new constraints generated by transitivity.

Step 3: Transform into a set of equations.After Step 2 we have constraint-sets of the form{si≤αi≤ti | i ∈ [1..n]} where αi are pairwise distinct.

1 select s ≤ α ≤ t and replace it by α = (s∨∨∨β)∧∧∧t with β fresh.2 in all other constraints in replace every α by (s∨∨∨β)∧∧∧t3 repeat with another constraint

At the end we have a sets of equations {αi = ui | i ∈ [1..n]} that(with some care) are contractive. By Courcelle there exists asolution, ie, a substitution for α1, ..., αn into (possibly recursiveregular) types t1, ..., tn (in which the fresh β’s are free variables).

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 98/110

Page 489: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 490: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 491: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 492: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 493: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ fresh

if it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 494: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 495: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

The application problem

Definition (Inference application problem)

Given s and t types, find [σi ]i∈I and [σ′j ]j∈J such that:∧i∈I

tσi ≤ 0→1 and∧j∈J

sσj ≤ dom(∧i∈I

tσi )

1 Fix the cardinalities of I and J (at the beginning both 1);

2 Split each substitution σk (for k∈I∪J) in two: σk = ρk ◦ σ′kwhere ρk is a renaming substitution mapping each variable ofthe domain of σk into a fresh variable:(∧

i∈I (tρi )σ′i ≤ 0→1 and (

∧j∈J(sρj)σ

′j ≤ dom((

∧i∈I (tρi )σ

′i );

3 Solve the tallying problem for{(t1,0→1), (t1, t2→γγγ)}

with t1 =∧

i∈I tρi , t2 =∧

j∈Jsρj , and γγγ freshif it fails at Step 1, then fail.if it fails at Step 2, then change cardinalities (dove-tail)

Every solution for γγγ is a solution for the application.Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 99/110

Page 496: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example: map even

Start with the following tallying problem:{(α1→β1)→[α1]→[β1] ≤ t→γγγ}

where t = (Int→Bool)∧∧∧(α\\\Int→α\\\Int) is the type of even

At step 2 the algorithm generates 9 constraint-sets: one isunsatisfiable (t ≤ 0); four are implied by the others; remain{γγγ ≥ [α1]→[β1] , α1≤0} ,{γγγ ≥ [α1]→[β1] , α1≤Int , Bool≤β1},{γγγ ≥ [α1]→[β1] , α1≤α\\\Int , α\\\Int≤β1},{γγγ ≥ [α1]→[β1] , α1≤α∨∨∨Int , (α\\\Int)∨∨∨Bool≤β1};Four solutions for γγγ:{γγγ=[]→[]},{γγγ = [Int]→[Bool]},{γγγ = [α\\\Int]→[α\\\Int]},{γγγ = [α∨∨∨Int]→[(α\\\Int)∨∨∨Bool]}.The last two are minimal and we take their intersection:{γγγ = ([α\\\Int]→[α\\\Int])∧∧∧([α∨∨∨Int]→[(α\\\Int)∨∨∨Bool])}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 100/110

Page 497: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example: map even

Start with the following tallying problem:{(α1→β1)→[α1]→[β1] ≤ t→γγγ}

where t = (Int→Bool)∧∧∧(α\\\Int→α\\\Int) is the type of even

At step 2 the algorithm generates 9 constraint-sets: one isunsatisfiable (t ≤ 0); four are implied by the others; remain{γγγ ≥ [α1]→[β1] , α1≤0} ,{γγγ ≥ [α1]→[β1] , α1≤Int , Bool≤β1},{γγγ ≥ [α1]→[β1] , α1≤α\\\Int , α\\\Int≤β1},{γγγ ≥ [α1]→[β1] , α1≤α∨∨∨Int , (α\\\Int)∨∨∨Bool≤β1};

Four solutions for γγγ:{γγγ=[]→[]},{γγγ = [Int]→[Bool]},{γγγ = [α\\\Int]→[α\\\Int]},{γγγ = [α∨∨∨Int]→[(α\\\Int)∨∨∨Bool]}.The last two are minimal and we take their intersection:{γγγ = ([α\\\Int]→[α\\\Int])∧∧∧([α∨∨∨Int]→[(α\\\Int)∨∨∨Bool])}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 100/110

Page 498: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example: map even

Start with the following tallying problem:{(α1→β1)→[α1]→[β1] ≤ t→γγγ}

where t = (Int→Bool)∧∧∧(α\\\Int→α\\\Int) is the type of even

At step 2 the algorithm generates 9 constraint-sets: one isunsatisfiable (t ≤ 0); four are implied by the others; remain{γγγ ≥ [α1]→[β1] , α1≤0} ,{γγγ ≥ [α1]→[β1] , α1≤Int , Bool≤β1},{γγγ ≥ [α1]→[β1] , α1≤α\\\Int , α\\\Int≤β1},{γγγ ≥ [α1]→[β1] , α1≤α∨∨∨Int , (α\\\Int)∨∨∨Bool≤β1};Four solutions for γγγ:{γγγ=[]→[]},{γγγ = [Int]→[Bool]},{γγγ = [α\\\Int]→[α\\\Int]},{γγγ = [α∨∨∨Int]→[(α\\\Int)∨∨∨Bool]}.

The last two are minimal and we take their intersection:{γγγ = ([α\\\Int]→[α\\\Int])∧∧∧([α∨∨∨Int]→[(α\\\Int)∨∨∨Bool])}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 100/110

Page 499: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Example: map even

Start with the following tallying problem:{(α1→β1)→[α1]→[β1] ≤ t→γγγ}

where t = (Int→Bool)∧∧∧(α\\\Int→α\\\Int) is the type of even

At step 2 the algorithm generates 9 constraint-sets: one isunsatisfiable (t ≤ 0); four are implied by the others; remain{γγγ ≥ [α1]→[β1] , α1≤0} ,{γγγ ≥ [α1]→[β1] , α1≤Int , Bool≤β1},{γγγ ≥ [α1]→[β1] , α1≤α\\\Int , α\\\Int≤β1},{γγγ ≥ [α1]→[β1] , α1≤α∨∨∨Int , (α\\\Int)∨∨∨Bool≤β1};Four solutions for γγγ:{γγγ=[]→[]},{γγγ = [Int]→[Bool]},{γγγ = [α\\\Int]→[α\\\Int]},{γγγ = [α∨∨∨Int]→[(α\\\Int)∨∨∨Bool]}.The last two are minimal and we take their intersection:{γγγ = ([α\\\Int]→[α\\\Int])∧∧∧([α∨∨∨Int]→[(α\\\Int)∨∨∨Bool])}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 100/110

Page 500: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

On completeness and decidability

The algorithm produces a set of solutions that is sound (it findsonly correct solutions) and complete (any other solution can bederived from them).

Decidability: The algorithm is a semi-decision procedure. Weconjecture decidability (N.B.: the problem is unrelated to type-reconstruction for intersection types since we have recursive types).

Completeness: For every solution of the inference problem, ouralgorithm finds an equivalent or more general solution. However,this solution is not necessary the first solution found.

In a dully execution of the algorithm on map even the goodsolution is the second one.

Principality: This raises the problem of the existence of principaltypes: may an infinite sequence of increasingly general solutionsexist?

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 101/110

Page 501: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

On completeness and decidability

The algorithm produces a set of solutions that is sound (it findsonly correct solutions) and complete (any other solution can bederived from them).

Decidability: The algorithm is a semi-decision procedure. Weconjecture decidability (N.B.: the problem is unrelated to type-reconstruction for intersection types since we have recursive types).

Completeness: For every solution of the inference problem, ouralgorithm finds an equivalent or more general solution. However,this solution is not necessary the first solution found.

In a dully execution of the algorithm on map even the goodsolution is the second one.

Principality: This raises the problem of the existence of principaltypes: may an infinite sequence of increasingly general solutionsexist?

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 101/110

Page 502: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

On completeness and decidability

The algorithm produces a set of solutions that is sound (it findsonly correct solutions) and complete (any other solution can bederived from them).

Decidability: The algorithm is a semi-decision procedure. Weconjecture decidability (N.B.: the problem is unrelated to type-reconstruction for intersection types since we have recursive types).

Completeness: For every solution of the inference problem, ouralgorithm finds an equivalent or more general solution. However,this solution is not necessary the first solution found.

In a dully execution of the algorithm on map even the goodsolution is the second one.

Principality: This raises the problem of the existence of principaltypes: may an infinite sequence of increasingly general solutionsexist?

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 101/110

Page 503: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

On completeness and decidability

The algorithm produces a set of solutions that is sound (it findsonly correct solutions) and complete (any other solution can bederived from them).

Decidability: The algorithm is a semi-decision procedure. Weconjecture decidability (N.B.: the problem is unrelated to type-reconstruction for intersection types since we have recursive types).

Completeness: For every solution of the inference problem, ouralgorithm finds an equivalent or more general solution. However,this solution is not necessary the first solution found.

In a dully execution of the algorithm on map even the goodsolution is the second one.

Principality: This raises the problem of the existence of principaltypes: may an infinite sequence of increasingly general solutionsexist?

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 101/110

Page 504: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type reconstruction

Solve sets of contraint-sets by the tallying algorithm:

Γ `R x : Γ(x) ; {∅}Γ, x : α `R e : t ; S

Γ `R λx .e : α→ β ; S u {{(t ≤ β)}}

Γ `R e1 : t1 ; S1 Γ `R e2 : t2 ; S2

Γ `R e1e2 : α; S1 u S2 u {{(t1 ≤ t2 → α)}} + rule fortypecase

Sound. it’s a variant: fix interfaces and infer decorationsλ[?]α→βx .e

Not complete: reconstruction is undecidable

It types more than ML

λx .xx : µX .(α∧(X→β))→ β (≤ α∧(α→β))→β)

for functions typable in ML it deduces a type at least as good:

map : ((α→β)→ [α]→[β]) ∧ ((0→1)→ []→[])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 102/110

Page 505: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type reconstruction

Solve sets of contraint-sets by the tallying algorithm:

Γ `R x : Γ(x) ; {∅}Γ, x : α `R e : t ; S

Γ `R λx .e : α→ β ; S u {{(t ≤ β)}}

Γ `R e1 : t1 ; S1 Γ `R e2 : t2 ; S2

Γ `R e1e2 : α; S1 u S2 u {{(t1 ≤ t2 → α)}} + rule fortypecase

Sound. it’s a variant: fix interfaces and infer decorationsλ[?]α→βx .e

Not complete: reconstruction is undecidable

It types more than ML

λx .xx : µX .(α∧(X→β))→ β (≤ α∧(α→β))→β)

for functions typable in ML it deduces a type at least as good:

map : ((α→β)→ [α]→[β]) ∧ ((0→1)→ []→[])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 102/110

Page 506: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type reconstruction

Solve sets of contraint-sets by the tallying algorithm:

Γ `R x : Γ(x) ; {∅}Γ, x : α `R e : t ; S

Γ `R λx .e : α→ β ; S u {{(t ≤ β)}}

Γ `R e1 : t1 ; S1 Γ `R e2 : t2 ; S2

Γ `R e1e2 : α; S1 u S2 u {{(t1 ≤ t2 → α)}} + rule fortypecase

Sound. it’s a variant: fix interfaces and infer decorationsλ[?]α→βx .e

Not complete: reconstruction is undecidable

It types more than ML

λx .xx : µX .(α∧(X→β))→ β (≤ α∧(α→β))→β)

for functions typable in ML it deduces a type at least as good:

map : ((α→β)→ [α]→[β]) ∧ ((0→1)→ []→[])

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 102/110

Page 507: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Type Reconstruction Algorithm

Γ `R c : bc ; {∅}(R-const)Γ `R x : Γ(x) ; {∅}(R-var)

Γ `R m1 : t1 ; S1 Γ `R m2 : t2 ; S2

Γ `R m1m2 : α; S1 u S2 u {{(t1 ≤ t2 → α)}}(R-appl)

Γ, x : α `R m : t ; SΓ `R λx .m : α→ β ; S u {{(t ≤ β)}}(R-abstr)

(R-case)S = (S0 u {{(t0 ≤ 0)}})t (S0 u S1 u {{(t0 ≤ t), (t1 ≤ α)}})t (S0 u S2 u {{(t0 ≤ ¬t), (t2 ≤ α)}})t (S0 u S1 u S2 u {{(t1 ∨ t2 ≤ α)}})

Γ `R m0 : t0;S0 Γ `R m1 : t1;S1 Γ `R m2 : t2;S2

Γ `R (m0∈t ?m1 :m2) : α; Swhere α, αi and β in each rule are fresh type variables.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 103/110

Page 508: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Efficient evaluation

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 104/110

Page 509: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E `m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E `m e1 ⇓ 〈λtx .e, E ′〉 E `m e2 ⇓ v0 E ′, x 7→ v0 `m e ⇓ v

E `m e1e2 ⇓ v

(Typecase True)

E `m e1 ⇓ v0 v0 ∈m t E `m e2 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E `m e1 ⇓ v0 v0 6∈m t E `m e3 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

c ∈m tdef= {c} ≤ t

〈λsx .e, E〉 ∈m tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 105/110

Page 510: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E `m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E `m e1 ⇓ 〈λtx .e, E ′〉 E `m e2 ⇓ v0 E ′, x 7→ v0 `m e ⇓ v

E `m e1e2 ⇓ v

(Typecase True)

E `m e1 ⇓ v0 v0 ∈m t E `m e2 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E `m e1 ⇓ v0 v0 6∈m t E `m e3 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

c ∈m tdef= {c} ≤ t

〈λsx .e, E〉 ∈m tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 105/110

Page 511: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E `m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E `m e1 ⇓ 〈λtx .e, E ′〉 E `m e2 ⇓ v0 E ′, x 7→ v0 `m e ⇓ v

E `m e1e2 ⇓ v

(Typecase True)

E `m e1 ⇓ v0 v0 ∈m t E `m e2 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E `m e1 ⇓ v0 v0 6∈m t E `m e3 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

c ∈m tdef= {c} ≤ t

〈λsx .e, E〉 ∈m tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 105/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E ⊢m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E ⊢m e1 ⇓ 〈λtx .e, E ′〉 E ⊢m e2 ⇓ v0 E ′, x 7→ v0 ⊢m e ⇓ v

E ⊢m e1e2 ⇓ v

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 512: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E `m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E `m e1 ⇓ 〈λtx .e, E ′〉 E `m e2 ⇓ v0 E ′, x 7→ v0 `m e ⇓ v

E `m e1e2 ⇓ v

(Typecase True)

E `m e1 ⇓ v0 v0 ∈m t E `m e2 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E `m e1 ⇓ v0 v0 6∈m t E `m e3 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

c ∈m tdef= {c} ≤ t

〈λsx .e, E〉 ∈m tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 105/110

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E ⊢m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E ⊢m e1 ⇓ 〈λtx .e, E ′〉 E ⊢m e2 ⇓ v0 E ′, x 7→ v0 ⊢m e ⇓ v

E ⊢m e1e2 ⇓ v

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

Page 513: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Monomorphic language

e ::= c | x | λtx .e | ee | e ∈ t ? e : ev ::= c | 〈λtx .e, E〉

(Closure) E `m λtx .e ⇓ 〈λtx .e, E〉

(Apply)E `m e1 ⇓ 〈λtx .e, E ′〉 E `m e2 ⇓ v0 E ′, x 7→ v0 `m e ⇓ v

E `m e1e2 ⇓ v

(Typecase True)

E `m e1 ⇓ v0 v0 ∈m t E `m e2 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E `m e1 ⇓ v0 v0 6∈m t E `m e3 ⇓ vE `m e1 ∈ t ? e2 : e3 ⇓ v

c ∈m tdef= {c} ≤ t

〈λsx .e, E〉 ∈m tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 105/110

Page 514: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσI

v ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 515: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 516: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 517: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Polymorphic language: naive implementation

e ::= c | x | λtσI

x .e | ee | e ∈ t ? e : e | eσI

v ::= c | 〈λtσJ

x .e, E , σI 〉

(Closure)σI ; E ⊢p λt

σJx .e ⇓ 〈λt

σJx .e, E , σI 〉

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

(σI short for [σi ]i∈I )

Page 518: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Polymorphic language: naive implementation

e ::= c | x | λtσI

x .e | ee | e ∈ t ? e : e | eσI

v ::= c | 〈λtσJ

x .e, E , σI 〉

(Closure)σI ; E ⊢p λt

σJx .e ⇓ 〈λt

σJx .e, E , σI 〉

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

(σI short for [σi ]i∈I )

Page 519: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 520: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 521: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Polymorphic language: naive implementation

e ::= c | x | λtσI

x .e | ee | e ∈ t ? e : e | eσI

v ::= c | 〈λtσJ

x .e, E , σI 〉

(Closure)σI ; E ⊢p λt

σJx .e ⇓ 〈λt

σJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E ⊢p e ⇓ v

σI ; E ⊢p eσJ ⇓ v

(Apply)

σI ; E ⊢p e1 ⇓ 〈λ∧ℓ∈Lsℓ→tℓσK

x .e, E ′, σH〉 σI ; E ⊢p e2 ⇓ v0 σP ; E ′, x 7→ v0 ⊢p e ⇓ v

σI ; E ⊢p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃ℓ ∈ L : v0 ∈p sℓσj}

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

(σI short for [σi ]i∈I )

Page 522: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

logoP7

1. Motivations – 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – POPL ’14

Polymorphic language: naive implementation

e ::= c | x | λtσI

x .e | ee | e ∈ t ? e : e | eσI

v ::= c | 〈λtσJ

x .e, E , σI 〉

(Closure)σI ; E ⊢p λt

σJx .e ⇓ 〈λt

σJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E ⊢p e ⇓ v

σI ; E ⊢p eσJ ⇓ v

(Apply)

σI ; E ⊢p e1 ⇓ 〈λ∧ℓ∈Lsℓ→tℓσK

x .e, E ′, σH〉 σI ; E ⊢p e2 ⇓ v0 σP ; E ′, x 7→ v0 ⊢p e ⇓ v

σI ; E ⊢p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃ℓ ∈ L : v0 ∈p sℓσj}

Giuseppe Castagna Polymorphic Functions with Set-Theoretic Types

(σI short for [σi ]i∈I )

Page 523: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 524: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Problem:

At every application compute σP :

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 525: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Problem:

At every application compute σP :

1 compose of two sets of type-substitution

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 526: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Problem:

At every application compute σP :

1 compose of two sets of type-substitution

2 select the substitutions compatible with the argument v0

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 527: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Problem:

At every application compute σP :

1 compose of two sets of type-substitution

2 select the substitutions compatible with the argument v0

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 528: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Polymorphic language: naive implementation

e ::= c | x | λtσI x .e | ee | e ∈ t ? e : e | eσIv ::= c | 〈λtσJx .e, E , σI 〉

(Closure)σI ; E `p λ

tσJx .e ⇓ 〈λtσJx .e, E , σI 〉

(Instance)σI ◦ σJ ; E `p e ⇓ vσI ; E `p eσJ ⇓ v

(Apply)

σI ; E `p e1 ⇓ 〈λ∧`∈Ls`→t`σK

x .e, E ′, σH〉 σI ; E `p e2 ⇓ v0 σP ; E ′, x 7→ v0 `p e ⇓ vσI ; E `p e1e2 ⇓ v

where σJ = σH ◦ σK and P = {j ∈ J | ∃` ∈ L : v0 ∈p s`σj}

Solution:

Compute compositions and selections lazily.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 106/110

(σI short for [σi ]i∈I )

Page 529: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 530: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 531: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 532: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 533: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 534: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 535: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Intermediate language as compilation target

e ::= c | x | λtΣx .e | ee | e ∈ t ? e : ev ::= c | 〈λtΣx .e, E〉Σ ::= σI | comp(Σ,Σ′) | sel(x , t,Σ) symbolic substitutions

(Closure) E ` λtΣx .e ⇓ 〈λtΣx .e, E〉

(Apply)E ` e1 ⇓ 〈λtΣx .e, E ′〉 E ` e2 ⇓ v0 E ′, x 7→ v0 ` e ⇓ v

E ` e1e2 ⇓ v

(Typecase True)

E ` e1 ⇓ v0 v0 ∈ t E ` e2 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

(Typecase False)

E ` e1 ⇓ v0 v0 6∈ t E ` e3 ⇓ vE ` e1 ∈ t ? e2 : e3 ⇓ v

c ∈ tdef= {c} ≤ t

〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 107/110

Page 536: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Compilation

1 Compile into the intermediate language

JxKΣ = xJλtσI x .eKΣ = λtcomp(Σ,σI )

x .JeKsel(x,t,comp(Σ,σI ))

Je1e2KΣ = Je1KΣJe2KΣ

JeσI KΣ = JeKcomp(Σ,σI )

Je1 ∈ t ? e2 : e3KΣ = Je1KΣ ∈ t ? Je2KΣ : Je3KΣ

2 For 〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t we have

s(eval(E ,Σ)) 6= s only if λsΣx .e results from the partialapplication of a polymorphic function(ie, in s there occur free variables bound in the context).

Execution is slowed only when testing the type of theresult of a partial application of a polymorphic function.

3 This holds also with products (used to encode lists records andXML), whose testing accounts for most of the execution time.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 108/110

Page 537: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Compilation

1 Compile into the intermediate language

JxKΣ = xJλtσI x .eKΣ = λtcomp(Σ,σI )

x .JeKsel(x,t,comp(Σ,σI ))

Je1e2KΣ = Je1KΣJe2KΣ

JeσI KΣ = JeKcomp(Σ,σI )

Je1 ∈ t ? e2 : e3KΣ = Je1KΣ ∈ t ? Je2KΣ : Je3KΣ

2 For 〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t we have

s(eval(E ,Σ)) 6= s only if λsΣx .e results from the partialapplication of a polymorphic function(ie, in s there occur free variables bound in the context).

Execution is slowed only when testing the type of theresult of a partial application of a polymorphic function.

3 This holds also with products (used to encode lists records andXML), whose testing accounts for most of the execution time.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 108/110

Page 538: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Compilation

1 Compile into the intermediate language

JxKΣ = xJλtσI x .eKΣ = λtcomp(Σ,σI )

x .JeKsel(x,t,comp(Σ,σI ))

Je1e2KΣ = Je1KΣJe2KΣ

JeσI KΣ = JeKcomp(Σ,σI )

Je1 ∈ t ? e2 : e3KΣ = Je1KΣ ∈ t ? Je2KΣ : Je3KΣ

2 For 〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t we have

s(eval(E ,Σ)) 6= s only if λsΣx .e results from the partialapplication of a polymorphic function(ie, in s there occur free variables bound in the context).

Execution is slowed only when testing the type of theresult of a partial application of a polymorphic function.

3 This holds also with products (used to encode lists records andXML), whose testing accounts for most of the execution time.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 108/110

Page 539: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Compilation

1 Compile into the intermediate language

JxKΣ = xJλtσI x .eKΣ = λtcomp(Σ,σI )

x .JeKsel(x,t,comp(Σ,σI ))

Je1e2KΣ = Je1KΣJe2KΣ

JeσI KΣ = JeKcomp(Σ,σI )

Je1 ∈ t ? e2 : e3KΣ = Je1KΣ ∈ t ? Je2KΣ : Je3KΣ

2 For 〈λsΣx .e, E〉 ∈ tdef= s(eval(E ,Σ)) ≤ t we have

s(eval(E ,Σ)) 6= s only if λsΣx .e results from the partialapplication of a polymorphic function(ie, in s there occur free variables bound in the context).

Execution is slowed only when testing the type of theresult of a partial application of a polymorphic function.

3 This holds also with products (used to encode lists records andXML), whose testing accounts for most of the execution time.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 108/110

Page 540: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Conclusion

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 109/110

Page 541: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Theory: All the theoretical machinery necessary to design andimplement a programming language is there. The practicalrelevance of the open theoretical issues is negligible.

Languages: The polymorphic extension of CDuce is beingimplemented. Future applications: polymorphic extensions ofXQuery and embedding some of this type machinery in ML.

Runtime: Relabeling cannot be avoided but it is materialized onlyin case of partial polymorphic applications that end up intype-cases, that is, just when it is needed.

Implementation: Subtyping of polymorphic types require minimalmodifications to the implementation. Existing data structures(e.g., binary decision trees with lazy unions) and optimizationsmostly transpose smoothly.

Type reconstruction: Full usage needs more research, expeciallyabout the production of human readable types and helpful errormessages, but it is mature enough to use it to type local functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 110/110

Page 542: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Theory: All the theoretical machinery necessary to design andimplement a programming language is there. The practicalrelevance of the open theoretical issues is negligible.

Languages: The polymorphic extension of CDuce is beingimplemented. Future applications: polymorphic extensions ofXQuery and embedding some of this type machinery in ML.

Runtime: Relabeling cannot be avoided but it is materialized onlyin case of partial polymorphic applications that end up intype-cases, that is, just when it is needed.

Implementation: Subtyping of polymorphic types require minimalmodifications to the implementation. Existing data structures(e.g., binary decision trees with lazy unions) and optimizationsmostly transpose smoothly.

Type reconstruction: Full usage needs more research, expeciallyabout the production of human readable types and helpful errormessages, but it is mature enough to use it to type local functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 110/110

Page 543: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Theory: All the theoretical machinery necessary to design andimplement a programming language is there. The practicalrelevance of the open theoretical issues is negligible.

Languages: The polymorphic extension of CDuce is beingimplemented. Future applications: polymorphic extensions ofXQuery and embedding some of this type machinery in ML.

Runtime: Relabeling cannot be avoided but it is materialized onlyin case of partial polymorphic applications that end up intype-cases, that is, just when it is needed.

Implementation: Subtyping of polymorphic types require minimalmodifications to the implementation. Existing data structures(e.g., binary decision trees with lazy unions) and optimizationsmostly transpose smoothly.

Type reconstruction: Full usage needs more research, expeciallyabout the production of human readable types and helpful errormessages, but it is mature enough to use it to type local functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 110/110

Page 544: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Theory: All the theoretical machinery necessary to design andimplement a programming language is there. The practicalrelevance of the open theoretical issues is negligible.

Languages: The polymorphic extension of CDuce is beingimplemented. Future applications: polymorphic extensions ofXQuery and embedding some of this type machinery in ML.

Runtime: Relabeling cannot be avoided but it is materialized onlyin case of partial polymorphic applications that end up intype-cases, that is, just when it is needed.

Implementation: Subtyping of polymorphic types require minimalmodifications to the implementation. Existing data structures(e.g., binary decision trees with lazy unions) and optimizationsmostly transpose smoothly.

Type reconstruction: Full usage needs more research, expeciallyabout the production of human readable types and helpful errormessages, but it is mature enough to use it to type local functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 110/110

Page 545: Theory and practice of XML processing programming languagesgc/slides/semsubandxml.pdf · Theory and practice of XML processing programming languages ... Level 3: XML types taken

logoP7

1. Motivating example 2. Formal setting – 3. Explicit substitutions – 4. Inference system – 5. Evaluation – 6. Conclusion – MPRI

Theory: All the theoretical machinery necessary to design andimplement a programming language is there. The practicalrelevance of the open theoretical issues is negligible.

Languages: The polymorphic extension of CDuce is beingimplemented. Future applications: polymorphic extensions ofXQuery and embedding some of this type machinery in ML.

Runtime: Relabeling cannot be avoided but it is materialized onlyin case of partial polymorphic applications that end up intype-cases, that is, just when it is needed.

Implementation: Subtyping of polymorphic types require minimalmodifications to the implementation. Existing data structures(e.g., binary decision trees with lazy unions) and optimizationsmostly transpose smoothly.

Type reconstruction: Full usage needs more research, expeciallyabout the production of human readable types and helpful errormessages, but it is mature enough to use it to type local functions.

Part 4: Polymorphic Language G. Castagna: Theory and practice of XML processing languages 110/110