horatiu cirstea and claude kirchner and luigi liquori
TRANSCRIPT
![Page 1: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/1.jpg)
The rewriting calculus
Horatiu Cirstea and Claude Kirchner and Luigi Liquori
In close collaboration withClara Bertolissi, Germain Faure, Benjamin Wack
Thanks to the Protheo group@Nancy
ESSLLI Nancy August, 2004
![Page 2: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/2.jpg)
1– Introduction
Mathematics is frequently described as “the science of pattern,” a characterisationthat makes more sense than most, both of pure mathematics, but also of the
ability of mathematics to connect to the world teeming with patterns, symmetries,regularities, and uniformities
Jon BarwiseLawrence Moss
![Page 3: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/3.jpg)
3
A simple game
The rules of the game:•• → → • → •• → •
A starting point:• • • • • • • • • •
Who wins? (i.e. put the last white)
3– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 4: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/4.jpg)
4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••
4– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 5: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/5.jpg)
4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••
May I always win?
4– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 6: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/6.jpg)
4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••
May I always win? Do we get always the same result?
4– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 7: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/7.jpg)
4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••
May I always win? Do we get always the same result? Does the game terminate?
4– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 8: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/8.jpg)
5
What are the basic operations that have been used?
5– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 9: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/9.jpg)
5
What are the basic operations that have been used?
1– MatchingThe data: •• • • ••The rewrite rule: • → •
5– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 10: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/10.jpg)
5
What are the basic operations that have been used?
1– MatchingThe data: •• • • ••The rewrite rule: • → •
2– Compute what should be substitutedThe lefthand side: •
5– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 11: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/11.jpg)
5
What are the basic operations that have been used?
1– MatchingThe data: •• • • ••The rewrite rule: • → •
2– Compute what should be substitutedThe lefthand side: •
3– ReplacementThe new generated data: • • • • ••
5– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 12: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/12.jpg)
5
What are the basic operations that have been used?
1– MatchingThe data: •• • • ••The rewrite rule: • → •
2– Compute what should be substitutedThe lefthand side: •
3– ReplacementThe new generated data: • • • • ••
Note that, that last list is a NEW object
5– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 13: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/13.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 14: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/14.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 15: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/15.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 16: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/16.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some example
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 17: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/17.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some examples(s(s(0))) often denoted 3, s(s(s(s(s(s(s(s(s(s(0)))))))))) often denoted 11
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 18: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/18.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some examples(s(s(0))) often denoted 3, s(s(s(s(s(s(s(s(s(s(0)))))))))) often denoted 11
We can now define a binary operator +
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 19: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/19.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some examples(s(s(0))) often denoted 3, s(s(s(s(s(s(s(s(s(s(0)))))))))) often denoted 11
We can now define a binary operator +
For example we can write s(s(0)) + s(s(0)), 0 + s(s(s(s(s(s(s(s(s(s(0))))))))))
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 20: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/20.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some examples(s(s(0))) often denoted 3, s(s(s(s(s(s(s(s(s(s(0)))))))))) often denoted 11
We can now define a binary operator +
For example we can write s(s(0)) + s(s(0)), 0 + s(s(s(s(s(s(s(s(s(s(0))))))))))
how do we express the result ?
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 21: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/21.jpg)
6
Let us do simple math: just addition in Peano arithmetic (1)
How can we compute 2 + 2?
What are the natural?
Objects build from a constant called 0 and a unary operator s (successor).Some examples(s(s(0))) often denoted 3, s(s(s(s(s(s(s(s(s(s(0)))))))))) often denoted 11
We can now define a binary operator +
For example we can write s(s(0)) + s(s(0)), 0 + s(s(s(s(s(s(s(s(s(s(0))))))))))
how do we express the result ?
by the way . . . , what is the result ?
6– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 22: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/22.jpg)
7
Let us do simple math: just addition in Peano arithmetic (2)
Peano gives a meaning to addition by using the following axioms:
0 + x = xs(x) + y = s(x+ y)
7– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 23: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/23.jpg)
7
Let us do simple math: just addition in Peano arithmetic (2)
Peano gives a meaning to addition by using the following axioms:
0 + x = xs(x) + y = s(x+ y)
Thuss(s(0)) + s(s(0)) = s(s(0) + s(s(0))
= s(s(0 + s(s(0))))= s(s(s(s(0))))= s(0) + s(s(s(0)))= 0 + 0 + 0 + s(s(s(s(0))))= . . .
7– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 24: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/24.jpg)
7
Let us do simple math: just addition in Peano arithmetic (2)
Peano gives a meaning to addition by using the following axioms:
0 + x = xs(x) + y = s(x+ y)
Thuss(s(0)) + s(s(0)) = s(s(0) + s(s(0))
= s(s(0 + s(s(0))))= s(s(s(s(0))))= s(0) + s(s(s(0)))= 0 + 0 + 0 + s(s(s(s(0))))= . . .
is there a better result?
7– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 25: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/25.jpg)
8
Let us do simple math: just addition in Peano arithmetic (3)
Let us compute a result by turning the equalities into rewrite rules:
0 + x → xs(x) + y → s(x+ y)
8– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 26: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/26.jpg)
8
Let us do simple math: just addition in Peano arithmetic (3)
Let us compute a result by turning the equalities into rewrite rules:
0 + x → xs(x) + y → s(x+ y)
Thus s(s(0)) + s(s(0))→ s(s(0) + s(s(0))→ s(s(0 + s(s(0))))→ s(s(s(s(0))))
8– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 27: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/27.jpg)
8
Let us do simple math: just addition in Peano arithmetic (3)
Let us compute a result by turning the equalities into rewrite rules:
0 + x → xs(x) + y → s(x+ y)
Thus s(s(0)) + s(s(0))→ s(s(0) + s(s(0))→ s(s(0 + s(s(0))))→ s(s(s(s(0))))
Is this computation terminating ,
8– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 28: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/28.jpg)
8
Let us do simple math: just addition in Peano arithmetic (3)
Let us compute a result by turning the equalities into rewrite rules:
0 + x → xs(x) + y → s(x+ y)
Thus s(s(0)) + s(s(0))→ s(s(0) + s(s(0))→ s(s(0 + s(s(0))))→ s(s(s(s(0))))
Is this computation terminating ,
is there always a result (e.g. an expression without +)
8– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 29: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/29.jpg)
8
Let us do simple math: just addition in Peano arithmetic (3)
Let us compute a result by turning the equalities into rewrite rules:
0 + x → xs(x) + y → s(x+ y)
Thus s(s(0)) + s(s(0))→ s(s(0) + s(s(0))→ s(s(0 + s(s(0))))→ s(s(s(s(0))))
Is this computation terminating ,
is there always a result (e.g. an expression without +)
is such a result unique ? ? ?
8– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 30: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/30.jpg)
9
What are the basic operations that have been used? (2)
9– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 31: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/31.jpg)
9
What are the basic operations that have been used? (2)
1– Matching
The data: s( s(0) ) + s(s(0))
The rewrite rule: s( x ) + y → s(x+ y)
9– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 32: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/32.jpg)
9
What are the basic operations that have been used? (2)
1– Matching
The data: s( s(0) ) + s(s(0))
The rewrite rule: s( x ) + y → s(x+ y)
2– Compute what should be substituted
The instanciated lhs: s( s(0) + s(s(0)) )
9– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 33: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/33.jpg)
9
What are the basic operations that have been used? (2)
1– Matching
The data: s( s(0) ) + s(s(0))
The rewrite rule: s( x ) + y → s(x+ y)
2– Compute what should be substituted
The instanciated lhs: s( s(0) + s(s(0)) )
3– ReplacementThe new generated data: s(s(0)+s(s(0)))
9– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 34: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/34.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 )
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 35: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/35.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 36: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/36.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1)
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 37: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/37.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 38: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/38.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
fib( 2 ) + 1
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 39: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/39.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
fib( 2 ) + 1 → fib( 1 ) + fib( 0 ) + 1
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 40: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/40.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
fib( 2 ) + 1 → fib( 1 ) + fib( 0 ) + 1
fib(1) + fib(0) + 1
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 41: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/41.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
fib( 2 ) + 1 → fib( 1 ) + fib( 0 ) + 1
fib(1) + fib(0) + 1 → 1 + fib(0) + 1
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 42: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/42.jpg)
10
fibonacci
[α] fib(0) → 1[β] fib(1) → 1[γ] fib(n) → fib(n− 1) + fib(n− 2)
fib( 3 ) → fib( 2 ) + fib( 1 )
fib(2) + fib(1) → fib(2) + 1
fib( 2 ) + 1 → fib( 1 ) + fib( 0 ) + 1
fib(1) + fib(0) + 1 → 1 + fib(0) + 1
. . .
Finally fib(3) = 3, fib(4) = 5, ...
10– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 43: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/43.jpg)
11
Graphical Rewriting
F → F + F − F − FF + F + F − F
11– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 44: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/44.jpg)
11
Graphical Rewriting
F → F + F − F − FF + F + F − F
11– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 45: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/45.jpg)
11
Graphical Rewriting
F → F + F − F − FF + F + F − F
→
11– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 46: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/46.jpg)
11
Graphical Rewriting
F → F + F − F − FF + F + F − F
→
. .
. . . . .
. .
11– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 47: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/47.jpg)
11
Graphical Rewriting
F → F + F − F − FF + F + F − F
→
. .
. . . . .
. .
L-systems (Lindenmeier)
11– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 48: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/48.jpg)
12
Ecological Rewriting
http://www.cpsc.ucalgary.ca/Redirect/bmv/vmm-deluxe/Section-08.html
12– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 49: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/49.jpg)
13
/etc/sendmail.cf
##### @(#)nullrelay.m4 8.19 (Berkeley) 5/19/1998 #####
## This configuration applies only to relay-only hosts. They send# all mail to a hub without consideration of the address syntax# or semantics, except for adding the hub qualification to the# addresses.## This is based on a prototype done by Bryan Costales of ICSI.#
###################################################################################################################################################### REWRITING RULES#################################################################################################################################################
############################################## Ruleset 3 -- Name Canonicalization ###
13– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 50: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/50.jpg)
14
###########################################S3
# handle null inputR$@ $@ <@>
# strip group: syntax (not inside angle brackets!) and trailing semicolonR$* $: $1 <@> mark addressesR$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>R$* :: $* <@> $: $1 :: $2 unmark node::addrR:include: $* <@> $: :include: $1 unmark :include:...R$* : $* <@> $: $2 strip colon if marked........
##################################################### Ruleset 4 -- Final Output Post-rewriting ###
14– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 51: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/51.jpg)
15
##################################################S4
R$* <@> $@ handle <> and list:;
# strip trailing dot off before passing to nullclient relayR$* @ $+ . $1 @ $2
15– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 52: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/52.jpg)
16
Equational description of a sorting algorithm
sorts NeList List ; subsorts Nat < NeList < List ;operatorsnil : List ;@ @ : (List List) List [associative id: nil] ;@ @ : (NeList List) NeList [associative] ;hd @ : (NeList) Nat ;tl @ : (NeList) List ;sort @ : (List) List ;
endrules for ListX, Y : Nat ; L L’ L’’ : List;hd (X L) => X ; tl (X L) => L ;sort nil => nil .sort (L X L’ Y L’’) => sort (L Y L’ X L’’) if Y < X .
end
sort (6 5 4 3 2 1) => ...
16– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 53: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/53.jpg)
17
Back with the simple game
The rules of the game:
•• → → • → •• → •
A starting point:
• • • • • • • • • •
From a given start, is the result determinist?
17– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 54: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/54.jpg)
18
• • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • • • • • • • ••• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••
Analysing the different cases
18– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 55: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/55.jpg)
19
Disjoint redexes:· · · ⊗⊗ · · · ⊗ ⊗ · · ·· · · ⊗ · · · ⊗⊗ · · ·· · · ⊗ · · · ⊗ · · ·
is the same as:· · · ⊗ ⊗ · · · ⊗⊗ · · ·· · · ⊗⊗ · · · ⊗ · · ·· · · ⊗ · · · ⊗ · · ·
19– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 56: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/56.jpg)
20
No disjoint redexes (central black):
· · · • • · · · · · · •• • · · ·· · · •• · · · · · · • · · ·· · · · · · · · · • · · ·
but· · · •• · · · · · · • •• · · ·· · · · · · · · · • · · ·· · · · · · · · · • · · ·
or· · · • · · · · · · •• · · ·· · · • · · · · · · · · ·· · · • · · · · · · · · ·
but· · · • · · · · · · • • · · ·· · · • · · · · · · •• · · ·· · · • · · · · · · · · ·
20– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 57: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/57.jpg)
21
No disjoint redexes (central white):
· · · • · · · · · · • • · · ·· · · • · · · · · · •• · · ·· · · • · · · · · · · · ·
but· · · • · · · · · · • • · · ·· · · • · · · · · · •• · · ·· · · • · · · · · · · · ·
or· · · · · · · · · • · · ·· · · · · · · · · • · · ·· · · · · · · · · • · · ·
but· · · · · · · · · • · · ·· · · · · · · · · • · · ·· · · · · · · · · • · · ·
21– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 58: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/58.jpg)
22
Thus in all the cases:
t0
???
????
t1
??
??
t2
t3
but what about:
t0∗
∗?
????
??
t1
∗ ??
??
t2
∗
t3
22– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 59: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/59.jpg)
23
Alternative Rings
0 + x = x 0 ∗ x = 0x ∗ 0 = 0 i(x) + x = 0
i(x+ y) = i(x) + i(y) i(i(x)) = xx ∗ (y + z) = (x ∗ y) + (x ∗ z) (x+ y) ∗ z = (x ∗ z) + (y ∗ z)(x ∗ y) ∗ y = x ∗ (y ∗ y) (x ∗ x) ∗ y = x ∗ (x ∗ y)i(x) ∗ y = i(x ∗ y) x ∗ i(y) = i(x ∗ y)
i(0) = 0 (x+ y) + z = x+ (y + z)x+ y = y + x
23– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 60: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/60.jpg)
24
Can we prove by rewriting the Moufang Identities?
(x ∗ y) ∗ x = x ∗ (y ∗ x)x ∗ ((y ∗ z) ∗ x) = (x ∗ (y ∗ z)) ∗ xx ∗ (y ∗ (x ∗ z)) = ((x ∗ y) ∗ x)) ∗ z
((z ∗ x) ∗ y) ∗ x) = z ∗ (x ∗ (y ∗ x))(x ∗ y) ∗ (z ∗ x) = (x ∗ (y ∗ z)) ∗ x
(R.Moufang, 1933)(S.Anantharaman and J.Hsiang, JAR 6, 1990)
24– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 61: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/61.jpg)
25
An additive group G is defined by the set of equalities
x+ e = x
x+ (y + z) = (x+ y) + z
x+ i(x) = e
How to check that two elements of the group are the same?
i(x+ y) =? = i(y) + i(x)
25– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 62: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/62.jpg)
26
An equivalent deterministic term rewrite system
x+ e → x
e+ x → x
x+ (y + z) → (x+ y) + z
x+ i(x) → e
i(x) + x → e
i(e) → e
(y + i(x)) + x → y
(y + x) + i(x) → y
i(i(x)) → x
i(x+ y) → i(y) + i(x)
Then
i(x+ y) =? = i(y) + i(x) ⇔ i(x+ y)→ . . .→ • ← . . .← i(y) + i(x)
26– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 63: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/63.jpg)
27
XSLT
Note that XSLT is just a (special) kind of rewriting language,acting on XML documents
27– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 64: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/64.jpg)
28
XSLT: example 1/3
Document Example D.1 in the Appendix of XSLT specification<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:template match=doc><html>
<head><title> <xsl:value-of select=title /> </title>
</head><body> <xsl:apply-templates/> </body>
</html></xsl:template>
...
<xsl:template match=chapter/title><h2> <xsl:apply-templates/> </h2>
</xsl:template>
28– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 65: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/65.jpg)
29
XSLT: example 2/3
When applied to<doc>
<title>Document Title</title><chapter>
<title>Chapter Title</title><section>
<title>Section Title</title><para>This is a test.</para><note>This is a note.</note>
</section><section>
<title>Another Section Title</title><para>
This is<emph> another </emph>test.
</para><note> This is another note. </note>
</section></chapter> </doc>
29– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 66: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/66.jpg)
30
XSLT: example 3/3
we get as result the HTML document<html><head><title>Document Title</title></head><body><h1>Document Title</h1><h2>Chapter Title</h2><h3>Section Title</h3><p>This is a test.</p><p class=note><b>NOTE:</b>This is a note.</p><h3>Another SectionTitle</h3><p>This is <em>another</em> test.</p><p class=note>
<b>NOTE:</b>This is another note.</p></body></html>
Which we usualy prefer to see as
30– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 67: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/67.jpg)
31
The 4 basic ingredients of a rewriting step: 1- The rewrittenobjects
They can be:
• terms like 2 + i(3) or XML documents
• strings like “What is rewriting?” sed performs string rewriting
• graphs
• sets
• multisets
• higher-order terms
• . . .
31– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 68: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/68.jpg)
32
The 4 basic ingredients of a rewriting step: 2- Substitution
Graphting = First-order substitutionReplace all the instanciated variables by their values
Example: Apply σ = x 7→ b, y 7→ a on f(x, g(x, y))
Denoted either σ(g(x, g(x, y))) or (g(x, g(x, y)))σ
32– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 69: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/69.jpg)
33
The 4 basic ingredients of a rewriting step: 3- Matching
Finding a substitution σ such that
lσT= t
is called the matching problem from l to t, modulo the theory TWhen T = ∅, it is decidable in linear time in the size of tIt induces a relation on terms called subsumption
Example: f(x, g(x, y))∅f(b, g(b, a))
33– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 70: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/70.jpg)
34
The 4 basic ingredients of a rewriting step: 4- Replacement
At a given occurrence of a term, replace the existing subterm by another one
Example:Put f(x, a) at occurence 1.1 in g(g(a, x), f(b, b))
34– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 71: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/71.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 72: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/72.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 73: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/73.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
– find a subterm of t
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 74: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/74.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
– find a subterm of t
– that matches the left hand side of the rule
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 75: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/75.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
– find a subterm of t
– that matches the left hand side of the rule
– and replace that subterm by the right hand side of the rule instanciated by thematch
Denoted t =⇒R t′
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 76: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/76.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
– find a subterm of t
– that matches the left hand side of the rule
– and replace that subterm by the right hand side of the rule instanciated by thematch
Denoted t =⇒R t′
Simple?. . .
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 77: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/77.jpg)
35
How does (first-order) rewriting work?
It relies on the 4 notions:(first-order) terms, substitution, matching, replacementand, given a set of rules R and a term t to be rewritten, it consists to:
– find a rule in R
– find a subterm of t
– that matches the left hand side of the rule
– and replace that subterm by the right hand side of the rule instanciated by thematch
Denoted t =⇒R t′
Simple?. . . let’s sum-up
35– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 78: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/78.jpg)
36
What is rewriting? (1/2)
1- Discriminateto give the possibility to discriminate directly“one image is better than ten explanations”
36– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 79: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/79.jpg)
36
What is rewriting? (1/2)
1- Discriminateto give the possibility to discriminate directly“one image is better than ten explanations”
36– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 80: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/80.jpg)
36
What is rewriting? (1/2)
1- Discriminateto give the possibility to discriminate directly“one image is better than ten explanations”
lambda-calculus is not discriminating: one needs to encode matching
36– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 81: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/81.jpg)
37
What is rewriting? (2/2)
1- Discriminate2- Transform what has been discriminated
37– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 82: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/82.jpg)
37
What is rewriting? (2/2)
1- Discriminate2- Transform what has been discriminated
- • • → • discriminates the repetition of two black bullets
• • • • • is rewritten, for example, into • • • •
37– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 83: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/83.jpg)
37
What is rewriting? (2/2)
1- Discriminate2- Transform what has been discriminated
- • • → • discriminates the repetition of two black bullets
• • • • • is rewritten, for example, into • • • •
- x× 0 → 0 discriminates objects where x is arbitrary
3× 0 is rewritten into 0
37– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 84: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/84.jpg)
37
What is rewriting? (2/2)
1- Discriminate2- Transform what has been discriminated
- • • → • discriminates the repetition of two black bullets
• • • • • is rewritten, for example, into • • • •
- x× 0 → 0 discriminates objects where x is arbitrary
3× 0 is rewritten into 0
- x et x → x discriminates objects where x is repeated
x = 3 et x = 3 is rewritten into en x = 3
37– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 85: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/85.jpg)
38
Important: Rewriting is always in need of a strategy
• to chose the appropriate rule
• to find an appropriate occurrence
• to chose the appropriate result
38– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 86: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/86.jpg)
39
Examples using ELAN
ELAN, a system for clever rewriting: deduction modulo at work
ELAN= computation rules + (deduction rules + strategies)
Implements rewriting for
• computation Fibonacci
• proving Prop. Seq. Calculus
• solving 8 queens
39– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 87: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/87.jpg)
40
Example 1: Very simple ...
module fib_builtinimport global builtinInt;
end
operators globalfib(@) : (builtinInt) builtinInt ;
end
rules for builtinIntn : builtinInt ;
global[] fib(0) => 1 end[] fib(1) => 1 end[] fib(n) => fib(n - 1) + fib(n - 2) if greater_builtinInt(n,1) end
endend
fib(33) = 5702887 11405773 rewrite steps in 0.695 s 16.411.184 rewrite/sDigital 500/500, 128Mo
40– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 88: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/88.jpg)
41
Example 2: propositional sequent calculus
H,P ` QH ` ¬P,Q neg − r
rules for SeqP, Q, R : Pred; H : Pred; S1, S2 : Seq;
global[negd] H |- ^P : Q => S1
where S1 := (dedstrat) H : P |- Qend
...
41– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 89: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/89.jpg)
42
The true code
Built (for later use) the proof term:
[negr] H |- ^P : Q => [#negd,H |- ^P : Q] <> S1where S1 := (dedstrat) H : P |- Q
end
42– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 90: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/90.jpg)
43
Strategies
strategies for Seqimplicit
[] SetRules => first one(axio,negd ,disjd,impd ,negg ,conjg,disjg ,conjd ,impg)
endend
strategies for Seqimplicit
[] dedstrat => first one( Start );repeat*( SetRules )
endend
43– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 91: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/91.jpg)
44
The resulting proof term
[dedstrat](A |=> B |- ^(B) |=> ^(A))
evaluates to:#infer[#impd]<(A#to B)#vdash(#neg(B)#to#neg(A))><#infer[#negd]<(A#to B),#neg(B)#vdash#neg(A)><#infer[#negg]<A,(A#to B),#neg(B)#vdash EmptyP><#infer[#impg]<A,(A#to B)#vdash B><#infer[#axiom]<A,B#vdash B><#mbox<>>&#infer[#axiom]<A#vdash A,B><#mbox<>>>>>>end
44– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 92: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/92.jpg)
45
Example 3: 8 queens
••
••
is represented by the list (3,1,0,2)
45– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 93: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/93.jpg)
46
Module nqueensAC
operatorsglobal
queensAC(@) : (int) list[int] ;local
queens(@,@) : (set list[int]) list[int] ;ok(@,@,@) : ( int int list[int] ) bool;@ U @ : (set set) set (AC);(@) : (int) set ;[@ U @] : (int set) set ;Set(@) : (int) set ;Empty : set ;
end
46– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 94: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/94.jpg)
47
rules for list[int]n:int;
global[] queensAC(n) => queens(Set(n-1),nil)
rules for list[int]p1: int; s,s1:set ; l,l1: list[int];
local[final] queens(Empty,l) => l end
[queensrule] queens(s,l) => queens(s1,p1.l)where (set) [p1 U s1] :=(extractPos) sif ok(1,p1,l)
strategies for list[int]implicit[] queens => repeat*(dk(queensrule)); first(final)
47– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 95: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/95.jpg)
48
Related systems
• TOM (tom.loria.fr)
• ASF+SDF
• OBJ, MAUDE
• STRATEGO
• LPG
• . . .
48– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 96: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/96.jpg)
49
Some applications
• XML and XSLT
• Program transformation (e.g. compilation)
• Simplification (e.g. computer algebra)
• Computation
• Production rules
• Model checking
• Proof search —Cariboo—
• Chemistry
. . .
49– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 97: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/97.jpg)
50
Syntactic Matching: A rule based description
Delete t≺≺t ∧ P→ P
Decomposition f(t1, . . . , tn)≺≺f(t′1, . . . , t′n) ∧ P
→∧
i=1,...,n ti≺≺t′i ∧ P
SymbolClash f(t1, . . . , tn)≺≺g(t′1, . . . , t′m) ∧ P→ fail if f 6= g
MergingClash x≺≺t ∧ x≺≺t′ ∧ P→ fail if t 6= t′
SymbolVariableClash f(t1, . . . , tn)≺≺x ∧ P→ fail if x ∈ X
50– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 98: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/98.jpg)
51
Find a match
x+(y∗y)≺≺1+(4∗3)
⇒Decomposition x≺≺1 ∧ y ∗ y = 4 ∗ 3
⇒Decomposition x≺≺1 ∧ y≺≺4 ∧ y≺≺3
⇒MergingClash fail
51– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 99: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/99.jpg)
51
Find a match
x+(y∗y)≺≺1+(4∗3)
⇒Decomposition x≺≺1 ∧ y ∗ y = 4 ∗ 3
⇒Decomposition x≺≺1 ∧ y≺≺4 ∧ y≺≺3
⇒MergingClash fail
x+(y∗3)≺≺1+(4∗3)
⇒Decomposition x≺≺1 ∧ y ∗ 3 = 4 ∗ 3
⇒Decomposition x≺≺1 ∧ y≺≺4 ∧ 3≺≺3
⇒Delete x≺≺1 ∧ y≺≺4
51– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 100: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/100.jpg)
52
Theorem
The normal form by the rules in Match, of any matching problem t≺≺t′ such thatVar(t) ∩ Var(t′) = ∅, exists and is unique.
1. If it is fail, then there is no match from t to t′.
2. If it is of the form∧
i∈I xi≺≺ti with I 6= ∅, the substitution σ = xi 7→ tii∈I isthe unique match from t to t′.
3. If it is empty then t and t′ are identical: t = t′.
52– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 101: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/101.jpg)
53
Aims of the ρ-calculus
• To define at the same level
rewrite rules rewriting strategies applications of rules and strategies results
53– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 102: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/102.jpg)
53
Aims of the ρ-calculus
• To define at the same level
rewrite rules rewriting strategies applications of rules and strategies results
• To unify:
first-order rewriting (ELAN, Maude . . . ) λ-calculus
53– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 103: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/103.jpg)
54
For the rewriting RELATION
f(x, y)→ x
OOOO
54– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 104: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/104.jpg)
54
For the rewriting RELATION
f(x, y)→ x
OOOO
f(a, b)
54– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 105: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/105.jpg)
54
For the rewriting RELATION
f(x, y)→ x
OOOO
f(a, b) =⇒R a
54– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 106: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/106.jpg)
54
For the rewriting CALCULUS
f(X,Y ) _ X
Abstraction Operator
54– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 107: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/107.jpg)
55
For the rewriting calculus
f(X,Y ) _ X f(a, b)
55– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 108: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/108.jpg)
55
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
_ x]] Application Operator
55– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 109: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/109.jpg)
55
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
_ x]] Application Operator
Rule to evaluate such a term: (ρ)
55– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 110: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/110.jpg)
56
For the rewriting calculus
(
f(X,Y )
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d
_ X)•
f(a, b)
w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7 w7
σ
56– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 111: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/111.jpg)
56
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
σ= X 7→ a, Y 7→ b
56– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 112: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/112.jpg)
56
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
σ
OO
= X 7→ a, Y 7→ b
56– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 113: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/113.jpg)
56
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
7→ρ σ(X)
56– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 114: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/114.jpg)
56
For the rewriting calculus
(f(X,Y ) _ X
)• f(a, b)
7→ρ σ(X) i.e. a
56– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 115: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/115.jpg)
57
For the rewriting relation
f(x, y)→ x
OOOO
57– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 116: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/116.jpg)
57
For the rewriting relation
f(x, y)→ x
OOOO
g(a, b)
57– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 117: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/117.jpg)
57
For the rewriting relation
f(x, y)→ x
OOOO
g(a, b) =⇒R
57– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 118: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/118.jpg)
58
For the rewriting calculus
(f(X,Y ) _ X
)g(a, b)
58– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 119: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/119.jpg)
58
For the rewriting calculus
(
f(X,Y )
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d$d
$d
_ X)
g(a, b)
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
y9y9
F
58– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 120: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/120.jpg)
59
Related topics and works
• pattern lambda calculus (Peyton-Jones, Van Oostrom, Colson)
• pattern calculus (Jay)
• combination of rewriting and HO features
? CRS (Klop)? lambda calculus and rewriting (Breazu Tannen & Gallier, Okada)? CC and rewriting (Blanqui, Jouannaud, Okada)? HO rewriting (Nipkow)
• ML, Haskel, Rogue
59– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 121: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/121.jpg)
60
(Some) Recommended Readings
• The Rewriting Calculus Home pagehttp://www.loria.fr/~faure/TheRhoCalculusHomePage/
• Repository of Lectures on Rewriting and Related Topicswww.loria.fr/~ckirchne/
• Online book on rewriting www.loria.fr/~ckirchne/rsp.ps.gz
• L’intelligence et le calcul (may be translated to English?)Jean-Paul DelahayeLook also at his web page
• Term Rewriting SystemsTerese (M. Bezem, J. W. Klop and R. de Vrijer, eds.)Cambridge Univerty press, 2002
• Term Rewriting and all ThatFranz Baader and Tobias NipkowCambridge Univerty press, 1998
60– ESSLLI-2004, Nancy The rewriting calculus Introduction
![Page 122: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/122.jpg)
The syntax and semantics of the untyped rewriting calculus
![Page 123: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/123.jpg)
62
The Untyped Syntax
P ::= T Patterns
T ::= X | K | P _ T | T T | [P T ]T | T , T Terms
1. T1 _ T2 denotes a rule abstraction with pattern T1 and body T2
... the free variables of T1 are bound in T2
2. [T1 T2]T3 denotes a delayed matching constraint... the free variables of T1 are bound in T3 but not in T2
3. The terms can be also structures built using the symbol “,”
4. We work modulo the α-convention and the hygiene-convention
62– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 124: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/124.jpg)
63
Some ρ-terms
(X _ X ) a similar to the λ-term (λx.x) a
(X _ X X ) (X _ X X ) the well-known λ-term (ωω)
63– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 125: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/125.jpg)
63
Some ρ-terms
(X _ X ) a similar to the λ-term (λx.x) a
(X _ X X ) (X _ X X ) the well-known λ-term (ωω)
(a _ b) a the application of the rule a _ b to the term a
(f(X ,Y) _ g(X ,Y)) f(a, b) a classical rewrite rule application
63– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 126: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/126.jpg)
63
Some ρ-terms
(X _ X ) a similar to the λ-term (λx.x) a
(X _ X X ) (X _ X X ) the well-known λ-term (ωω)
(a _ b) a the application of the rule a _ b to the term a
(f(X ,Y) _ g(X ,Y)) f(a, b) a classical rewrite rule application
(a _ b, a _ c) a “non-deterministic” application
63– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 127: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/127.jpg)
64
Some abbreviations
(Ti)i=1...n 4= T1, . . . , Tn structure/object (n ∈ Nat)
T1.T24= T1 T2 T1 Kamin’s self-application
Operator Associate Priority
Left >
[ ] Right >
_ Right >
, Right >
64– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 128: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/128.jpg)
65
Matching Equations and Solutions
1. A match equation is a formula of the form T1≺≺T2.
2. A matching system T4= ∧
i=0...nTi≺≺T ′i is a conjunction of match equations,
where ∧ is associative, commutative, and idempotent.
3. A matching system T is successful if it is empty or:
(a) has the shape ∧i=0...n
Xi≺≺Ti ∧j=0...m
Kj≺≺Kj;
(b) for all h, k = 0 . . . n, such that h 6= k, we have Xh 6= Xk;
4. A substitution σT = T1/X1 · · ·Tn/Xn is the solution of a successful matchingsystem T. The set of solutions of T is denoted by Sol(T).
65– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 129: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/129.jpg)
66
Reduction relies on matching power
Matching is parametrized over a theory T and an order ≺ on substitutions
Sol(T1≺≺TT2) = σ1, . . . , σn, . . .
σ ∈ Sol(T1≺≺TT2) ⇔ |=T σ(T1) = T2
σ1 ≺ . . . ≺ σn (n ≤ ∞)
THEORIES ALGORITHM
66– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 130: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/130.jpg)
67
The Small-step Reduction Semantics
(P _ A) B →ρ [P B]A
[P B]A →σ Aθ(P≺≺B) if ∃θ. Pθ =T B
(A,B) C →δ A C,B C
67– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 131: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/131.jpg)
68
The Small-step Reduction Semantics
(P _ A) B →ρ [P B]A
[P B]A →σ Aθ1, . . . , Aθn, . . .
with θ1, . . . , θn, . . . = Sol(P≺≺TB)
(A,B) C →δ A C,B C
68– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 132: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/132.jpg)
69
Intuition on the small-step Semantics
(P _ A) B →ρ [P B]A→σ Aθ
if ∃θ. Pθ =T B
(P _ A) B →ρ [P B]ASTOP!
if 6 ∃θ. Pθ =T B
69– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 133: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/133.jpg)
70
Some ρ-reductions
(X _ X ) a
(X _ (X X )) (X _ (X X ))
(a _ b) a
(f(X ,Y) _ g(X ,Y)) (f(a, b))
(f(X ,Y) _ g(X ,Y)) (g(a, b))
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 134: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/134.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X ))
(a _ b) a
(f(X ,Y) _ g(X ,Y)) (f(a, b))
(f(X ,Y) _ g(X ,Y)) (g(a, b))
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 135: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/135.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X )) 7→→ρσδ ω ω 7→→ρσδ . . .
(a _ b) a
(f(X ,Y) _ g(X ,Y)) (f(a, b))
(f(X ,Y) _ g(X ,Y)) (g(a, b))
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 136: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/136.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X )) 7→→ρσδ ω ω 7→→ρσδ . . .
(a _ b) a 7→→ρσδ b
(f(X ,Y) _ g(X ,Y)) (f(a, b))
(f(X ,Y) _ g(X ,Y)) (g(a, b))
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 137: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/137.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X )) 7→→ρσδ ω ω 7→→ρσδ . . .
(a _ b) a 7→→ρσδ b
(f(X ,Y) _ g(X ,Y)) (f(a, b)) 7→→ρσδ [f(X ,Y) f(a, b)]g(X ,Y) 7→→ρσδ g(a, b)
(f(X ,Y) _ g(X ,Y)) (g(a, b))
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 138: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/138.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X )) 7→→ρσδ ω ω 7→→ρσδ . . .
(a _ b) a 7→→ρσδ b
(f(X ,Y) _ g(X ,Y)) (f(a, b))7→→ρσδ [f(X ,Y) f(a, b)]g(X ,Y) 7→→ρσδ g(a, b)
(f(X ,Y) _ g(X ,Y)) (g(a, b)) 7→→ρσδ [f(X ,Y) g(a, b)]g(X ,Y)
(a _ b, a _ c) a
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 139: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/139.jpg)
70
Some ρ-reductions
(X _ X ) a 7→→ρσδ a
(X _ (X X )) (X _ (X X )) 7→→ρσδ ω ω 7→→ρσδ . . .
(a _ b) a 7→→ρσδ b
(f(X ,Y) _ g(X ,Y)) (f(a, b))7→→ρσδ [f(X ,Y) f(a, b)]g(X ,Y) 7→→ρσδ g(a, b)
(f(X ,Y) _ g(X ,Y)) (g(a, b)) 7→→ρσδ [f(X ,Y) g(a, b)]g(X ,Y)
(a _ b, a _ c) a 7→→ρσδ (a _ b) a, (a _ c) a 7→→ρσδ b, c
70– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 140: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/140.jpg)
71
Simple Success Reduction
(f(X ) _ (3 _ 3)X ) f(3) 7→ρ [f(X ) f(3)]((3 _ 3) X )
7→σ (3 _ 3) 3
7→ρ [3 3]3
7→σ 3
71– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 141: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/141.jpg)
71
Simple Success Reduction
(f(X ) _ (3 _ 3)X ) f(3) 7→ρ [f(X ) f(3)]((3 _ 3) X )
7→σ (3 _ 3) 3
7→ρ [3 3]3
7→σ 3
(f(X ) _ (3 _ 3)X ) f(3) 7→ρ (f(X ) _ [3 X ]3) f(3)
7→ρ [f(X ) f(3)]([3 X ]3)
7→σ [3 3]3
7→σ 3
71– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 142: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/142.jpg)
72
Simple Failure Reduction
(f(X ) _ (3 _ 3)X ) f(4) 7→ρ [f(X ) f(4)]((3 _ 3) X )
7→σ (3 _ 3) 4
7→ρ [3 4]3
72– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 143: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/143.jpg)
72
Simple Failure Reduction
(f(X ) _ (3 _ 3)X ) f(4) 7→ρ [f(X ) f(4)]((3 _ 3) X )
7→σ (3 _ 3) 4
7→ρ [3 4]3
(f(X ) _ (3 _ 3)X ) f(4) 7→ρ (f(X ) _ [3 X ]3) f(4)
7→ρ [f(X ) f(4)]([3 X ]3)
7→σ [3 4]3
72– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 144: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/144.jpg)
73
On the (non-)confluence
Variables in applicative position
(X Y _ X )((Z _ Z)a)ρσδ
ow ggggggggggggggggggg
ggggggggggggggggggg ρσδ
'/WWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWW
[X Y (Z _ Z)a]Xρσδ
(X Y _ X )([Z a]Z)ρσδ
Z _ Z (X Y _ X )a
73– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 145: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/145.jpg)
74
On the (non-)confluence
Non-linear patterns
C 4= rec _ S _ X _ (d(Y, Y ) _ e) d(X,S.rec X)
A 4= rec′ _ S′ _ C.rec S′.rec′
74– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 146: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/146.jpg)
74
On the (non-)confluence
Non-linear patterns
C 4= rec _ S _ X _ (d(Y, Y ) _ e) d(X,S.rec X)
A 4= rec′ _ S′ _ C.rec S′.rec′
A.rec′ A.rec′7→→ρσδ C.rec A.rec′ 7→→ρσδ C.rec A.rec′7→→ρσδ(d(Y, Y ) _ e) d(A.rec′, C.rec A.rec′) 7→→ρσδ C.rec e7→→ρσδ(d(Y, Y ) _ e) d(C.rec A.rec′, C.rec A.rec′)7→→ρσδ e
74– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 147: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/147.jpg)
74
On the (non-)confluence
Non-linear patterns
C 4= rec _ S _ X _ (d(Y, Y ) _ e) d(X,S.rec X)
A 4= rec′ _ S′ _ C.rec S′.rec′
A.rec′ A.rec′7→→ρσδ C.rec A.rec′ 7→→ρσδ C.rec A.rec′7→→ρσδ(d(Y, Y ) _ e) d(A.rec′, C.rec A.rec′) 7→→ρσδ C.rec e7→→ρσδ(d(Y, Y ) _ e) d(C.rec A.rec′, C.rec A.rec′)7→→ρσδ e
andC.rec e 7→ (d(Y, Y ) _ e) d(e, C.rec e)
74– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 148: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/148.jpg)
74
On the (non-)confluence
Non-linear patterns
C 4= rec _ S _ X _ (d(Y, Y ) _ e) d(X,S.rec X)
A 4= rec′ _ S′ _ C.rec S′.rec′
A.rec′ A.rec′7→→ρσδ C.rec A.rec′ 7→→ρσδ C.rec A.rec′7→→ρσδ(d(Y, Y ) _ e) d(A.rec′, C.rec A.rec′) 7→→ρσδ C.rec e7→→ρσδ(d(Y, Y ) _ e) d(C.rec A.rec′, C.rec A.rec′)7→→ρσδ e
andC.rec e 7→ (d(Y, Y ) _ e) d(e, C.rec e)
and e and C.rec e have no common reduction (by induction on the supposedlength of a reduction from C.rec e to e).
74– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 149: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/149.jpg)
74
On the (non-)confluence
Non-linear patterns
C 4= rec _ S _ X _ (d(Y, Y ) _ e) d(X,S.rec X)
A 4= rec′ _ S′ _ C.rec S′.rec′
A.rec′ A.rec′7→→ρσδ C.rec A.rec′ 7→→ρσδ C.rec A.rec′7→→ρσδ(d(Y, Y ) _ e) d(A.rec′, C.rec A.rec′) 7→→ρσδ C.rec e7→→ρσδ(d(Y, Y ) _ e) d(C.rec A.rec′, C.rec A.rec′)7→→ρσδ e
andC.rec e 7→ (d(Y, Y ) _ e) d(e, C.rec e)
and e and C.rec e have no common reduction (by induction on the supposedlength of a reduction from C.rec e to e).
Rigid Pattern Condition (RPC) [van Oostrom 90]
P 4= T ∈ NF (ρσδ) | T is “linear” with no “active” variables
74– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 150: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/150.jpg)
75
Big-step Operational Semantics
• Natural proof deduction system a la Kahn
• Map every closed expression into a term in weak head normal form
• We present a lazy call-by-name strategy
75– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 151: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/151.jpg)
75
Big-step Operational Semantics
• Natural proof deduction system a la Kahn
• Map every closed expression into a term in weak head normal form
• We present a lazy call-by-name strategy
V ::= K | T _ T | K T | T , T
O ::= V | wrong | O,O
75– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 152: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/152.jpg)
75
Big-step Operational Semantics
• Natural proof deduction system a la Kahn
• Map every closed expression into a term in weak head normal form
• We present a lazy call-by-name strategy
V ::= K | T _ T | K T | T , T
O ::= V | wrong | O,O
• The special output wrong represents the result obtained by a computationinvolving a “matching equation failure”
75– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 153: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/153.jpg)
75
Big-step Operational Semantics
• Natural proof deduction system a la Kahn
• Map every closed expression into a term in weak head normal form
• We present a lazy call-by-name strategy
V ::= K | T _ T | K T | T , T
O ::= V | wrong | O,O
• The special output wrong represents the result obtained by a computationinvolving a “matching equation failure”
• The semantics is defined via a judgment of the shape T ⇓ O
75– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 154: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/154.jpg)
75
Big-step Operational Semantics
• Natural proof deduction system a la Kahn
• Map every closed expression into a term in weak head normal form
• We present a lazy call-by-name strategy
V ::= K | T _ T | K T | T , T
O ::= V | wrong | O,O
• The special output wrong represents the result obtained by a computationinvolving a “matching equation failure”
• The semantics is defined via a judgment of the shape T ⇓ O
• The big-step is deterministic, and immediately suggests how to build aninterpreter for the calculus;
75– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 155: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/155.jpg)
76
Big-step Natural Semantics I
V ⇓ V (Red−V al)
76– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 156: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/156.jpg)
76
Big-step Natural Semantics I
V ⇓ V (Red−V al)
T1 ⇓ T3 _ T4 [T3 T2]T4 ⇓ OT1 T2 ⇓ O (Red−ρ1)
76– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 157: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/157.jpg)
76
Big-step Natural Semantics I
V ⇓ V (Red−V al)
T1 ⇓ T3 _ T4 [T3 T2]T4 ⇓ OT1 T2 ⇓ O (Red−ρ1)
T1 ⇓ T3, T4 T3 T2 ⇓ O1 T4 T2 ⇓ O2T1 T2 ⇓ O1,O2
(Red−δ)
76– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 158: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/158.jpg)
77
Big-step Natural Semantics II
∃σ. σ(T1) ≡ T2 σ(T3) ⇓ O[T1 T2]T3 ⇓ O
(Red−σ1)
77– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 159: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/159.jpg)
77
Big-step Natural Semantics II
∃σ. σ(T1) ≡ T2 σ(T3) ⇓ O[T1 T2]T3 ⇓ O
(Red−σ1)
@σ. σ(T1) ≡ T2[T1 T2]T3 ⇓ wrong
(Red−σ2)
77– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 160: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/160.jpg)
77
Big-step Natural Semantics II
∃σ. σ(T1) ≡ T2 σ(T3) ⇓ O[T1 T2]T3 ⇓ O
(Red−σ1)
@σ. σ(T1) ≡ T2[T1 T2]T3 ⇓ wrong
(Red−σ2)
T1 ⇓ wrongT1, T2 ⇓ wrong
(Red−ρ2)
77– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 161: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/161.jpg)
78
ρ-ample: Two Natural Deductions
Take the term (f(X ) _ (3 _ 3)X ) f(3)
∗σ ≡ 3/X
...(3 _ 3)3 ⇓ 3
[f(X ) f(3)](3 _ 3)X ⇓ 3(f(X ) _ (3 _ 3)X ) f(3) ⇓ 3
with ∗ ≡ (f(X ) _ (3 _ 3)X ) ⇓ (f(X ) _ (3 _ 3)X ).
78– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 162: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/162.jpg)
78
ρ-ample: Two Natural Deductions
Take the term (f(X ) _ (3 _ 3)X ) f(4)
∗σ ≡ 4/X
@σ. σ(3) ≡ 4(3 _ 3)4 ⇓ wrong
[f(X ) f(4)](3 _ 3)X ⇓ wrong(f(X ) _ (3 _ 3)X ) f(4) ⇓ wrong
with ∗ ≡ (f(X ) _ (3 _ 3)X ) ⇓ (f(X ) _ (3 _ 3)X ).
78– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 163: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/163.jpg)
79
The Rationale of Optimistic and Pessimistic Machines
Optimistic machine tracks the fact that one computation goes wrong.
...(3 _ 3, 4 _ 4) 4 ⇓ wrong, 4
79– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 164: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/164.jpg)
79
The Rationale of Optimistic and Pessimistic Machines
Optimistic machine tracks the fact that one computation goes wrong.
...(3 _ 3, 4 _ 4) 4 ⇓ wrong, 4
• Pessimistic machine “kills” the computation once a wrong value is produced
...(3 _ 3, 4 _ 4) 4 ⇓ wrong
79– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 165: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/165.jpg)
79
The Rationale of Optimistic and Pessimistic Machines
Optimistic machine tracks the fact that one computation goes wrong.
...(3 _ 3, 4 _ 4) 4 ⇓ wrong, 4
• Pessimistic machine “kills” the computation once a wrong value is produced
...(3 _ 3, 4 _ 4) 4 ⇓ wrong
• Optimistic machine (at least one computation does not go wrong), vs.Pessimistic machine (the machine stops if at least one wrong occurs).
79– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 166: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/166.jpg)
80
Why a new calculus?
Rewriting is nice, but
• the rewrite relation or the rewriting logic are difficult to control
• non-reducibility is impossible to express
80– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 167: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/167.jpg)
80
Why a new calculus?
Rewriting is nice, but
• the rewrite relation or the rewriting logic are difficult to control
• non-reducibility is impossible to express
Lambda-calculus is great, but
• lacks of discrimination capabilities
• difficult to control
80– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 168: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/168.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 169: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/169.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 170: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/170.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 171: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/171.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 172: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/172.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 173: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/173.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
• matching is a main explicit parameter
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 174: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/174.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
• matching is a main explicit parameter
• results are first class
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 175: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/175.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
• matching is a main explicit parameter
• results are first class
This allows for advanced calculi,
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 176: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/176.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
• matching is a main explicit parameter
• results are first class
This allows for advanced calculi,
• with explicit constraints (and substitutions),
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 177: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/177.jpg)
81
A calculus with more explicit features
Like for explicit substitution calculi, explicitation of all the ingredients is useful.
In “basic” rewriting calculus,
• rules are first class object
• application is explicit
• decision of redex reduction is explicit
• matching is a main explicit parameter
• results are first class
This allows for advanced calculi,
• with explicit constraints (and substitutions),
• that can dissociate binding from matching when abstracting
81– ESSLLI-2004, Nancy The rewriting calculus The untyped rewriting calculus
![Page 178: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/178.jpg)
Comparing the untypedrewriting calculus to other
formalisms
![Page 179: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/179.jpg)
83
Target formalisms
Rewriting
λ-calculus
Higher-order term rewriting (CRS)
The Lambda Calculus of Objects λObj
The Object Calculus ςObj
83– ESSLLI-2004, Nancy The rewriting calculus Expressiveness of the rewriting calculus
![Page 180: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/180.jpg)
84
Compiling the λ-calculus into the ρ-calculus
1. ϕ(X) = X
2. ϕ(λX.M) = X _ ϕ(M)
3. ϕ(M N) = ϕ(M) ϕ(N)
Theorem: If M 7→β N , then ϕ(M) 7→→ρσδ ϕ(N).
84– ESSLLI-2004, Nancy The rewriting calculus Comparing to λ-calculus
![Page 181: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/181.jpg)
84
Compiling the λ-calculus into the ρ-calculus
1. ϕ(X) = X
2. ϕ(λX.M) = X _ ϕ(M)
3. ϕ(M N) = ϕ(M) ϕ(N)
Theorem: If M 7→β N , then ϕ(M) 7→→ρσδ ϕ(N).
Example: for Turing’s fixpoint combinator [Turing37]
Θλ = (Aλ Aλ) where Aλ = λxy.y(xxy)
we have ϕ(Aλ) = x _ (y _ y (x x y)) and thus, to the λ-reduction
Θλ G −→β G(Θλ G)
corresponds the following reduction in the rewriting calculus
Θ G4= (x _ (y _ y (x x y))) A G 7→→ρσδ(y _ y (A A y)) G 7→→ρσδG (A A G)
84– ESSLLI-2004, Nancy The rewriting calculus Comparing to λ-calculus
![Page 182: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/182.jpg)
85
Rewriting: The relation, the logic and the calculus
Given a set R of rewrite rules (li _ ri), we can define:
85– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 183: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/183.jpg)
85
Rewriting: The relation, the logic and the calculus
Given a set R of rewrite rules (li _ ri), we can define:
The rewrite relation :
t −→R t′
i.e. the smallest relation containing the rewrite rules and stable by context etsubstitution.
85– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 184: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/184.jpg)
86
Rewriting: The relation, the logic and the calculus
Given a set R of labeled rewrite rules ([`i] li _ ri), we can define:
86– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 185: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/185.jpg)
86
Rewriting: The relation, the logic and the calculus
Given a set R of labeled rewrite rules ([`i] li _ ri), we can define:
The rewriting logic [Jose Meseguer, TCS1992]:
R ` t⇒ t′
86– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 186: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/186.jpg)
86
Rewriting: The relation, the logic and the calculus
Given a set R of labeled rewrite rules ([`i] li _ ri), we can define:
The rewriting logic [Jose Meseguer, TCS1992]:
R ` t⇒ t′
Formulas are sequents of the form
π : t⇒ t′
where π is a proof term, built on F ∪ L ∪ ; recording the proof of the sequent.
86– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 187: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/187.jpg)
87
Rewriting: The relation, the logic and the calculus
R ` π : t⇒ t′
if π : t⇒ t′ can be obtained by finite application of the following rules:
Reflexivity For any t ∈ T (F):t : t⇒ t
Transitivityπ1 : t1 ⇒ t2 π2 : t2 ⇒ t3
π1;π2 : t1 ⇒ t3
87– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 188: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/188.jpg)
88
Congruence For any f ∈ F with arity(f) = n:
π1 : t1 ⇒ t′1 . . . πn : tn ⇒ t′n
f(π1, . . . , πn) : f(t1, . . . , tn)⇒ f(t′1, . . . , t′n)
Replacement For any ` : l(x1, . . . , xn)⇒ r(x1, . . . , xn) ∈ R,
π1 : t1 ⇒ t′1 . . . πn : tn ⇒ t′n
`(π1, . . . , πn) : l(t1, . . . , tn)⇒ r(t′1, . . . , t′n)
88– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 189: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/189.jpg)
89
Rewriting: The relation, the logic and the calculus
Given a set R of rewrite rules (li _ ri), we can define:
89– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 190: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/190.jpg)
89
Rewriting: The relation, the logic and the calculus
Given a set R of rewrite rules (li _ ri), we can define:
The rewriting calculus :
(lmim(R) t) 7→→ρσδ t′
89– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 191: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/191.jpg)
90
Going from rewrite rule to rewriting system:For the rewriting reduction
f(x, y)→ xf(x, b)→ b
f(x, y)→ x
OOOO
f(a, b) =⇒R a
Non Determinism
f(a, b) =⇒R b
f(x, b)→ b
OOOOOO
90– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 192: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/192.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
f(X,Y ) _ X f(X, b) _ b
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 193: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/193.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
f(X,Y ) _ X, f(X, b) _ b
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 194: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/194.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
f(X,Y ) _ X, f(X, b) _ b f(a, b)
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 195: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/195.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
(f(X,Y ) _ X, f(X, b) _ b
)f(a, b)
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 196: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/196.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
(f(X,Y ) _ X, f(X, b) _ b
)f(a, b)
(f(X,Y ) _ X) f(a, b), (f(X, b) _ b) f(a, b)
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 197: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/197.jpg)
91
Going from rewrite rule to rewriting system:In the ρ-calculus
(f(X,Y ) _ X, f(X, b) _ b
)f(a, b)
(f(X,Y ) _ X) f(a, b), (f(X, b) _ b) f(a, b)
(a, b)Encoding Rewriting
91– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 198: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/198.jpg)
92
Encoding Rewriting
Starting from the proof term, a corresponding ρ-term is obtained:
Theorem: If T1 7→R T2, then ∃ TR such that TR T1 7→→ρσδ T2.
92– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 199: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/199.jpg)
92
Encoding Rewriting
Starting from the proof term, a corresponding ρ-term is obtained:
Theorem: If T1 7→R T2, then ∃ TR such that TR T1 7→→ρσδ T2.
Example:Given R = `1 : a⇒ b, `2 : c⇒ d, `3 : f(x, h(y))⇒ f(y, h(x)) we have:
`3(g(`1), `2) : f(g(a), h(c))⇒ f(d, h(g(b)))
and in rewriting calculus
(f(x, h(y)) _ f((c _ d) y, h((g(z) _ (a _ b) z) x)))) f(g(a), h(c)) 7→→ρσδ f(d, h(g(b)))
Staring from a given system of rewrite rules reduction strategies can be encoded(using ρ_)
Encoding Rewriting
92– ESSLLI-2004, Nancy The rewriting calculus Comparing to rewriting
![Page 200: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/200.jpg)
93
Representation of Higher-order term rewriting (CRS)
Higher-order term rewriting = Term rewriting+Lambda calculus[Breazu-Tannen,Gallier88],[Okada89],[Klop80],[Nipkow91]
CRS versus TRS: abstraction and metavariables.
93– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 201: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/201.jpg)
93
Representation of Higher-order term rewriting (CRS)
Higher-order term rewriting = Term rewriting+Lambda calculus[Breazu-Tannen,Gallier88],[Okada89],[Klop80],[Nipkow91]
CRS versus TRS: abstraction and metavariables.
App([x]Z(x), Z ′)⇒ Z(Z ′) (λx.t)u⇒β tx/u
App([x]f(x), a) (λx.f) a
93– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 202: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/202.jpg)
93
Representation of Higher-order term rewriting (CRS)
Higher-order term rewriting = Term rewriting+Lambda calculus[Breazu-Tannen,Gallier88],[Okada89],[Klop80],[Nipkow91]
CRS versus TRS: abstraction and metavariables.
App([x]Z(x), Z ′)⇒ Z(Z ′) (λx.t)u⇒β tx/u
App([x]f(x), a) (λx.f) a
Reduction : σL −→CRS σR
93– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 203: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/203.jpg)
93
Representation of Higher-order term rewriting (CRS)
Higher-order term rewriting = Term rewriting+Lambda calculus[Breazu-Tannen,Gallier88],[Okada89],[Klop80],[Nipkow91]
CRS versus TRS: abstraction and metavariables.
App([x]Z(x), Z ′)⇒ Z(Z ′) (λx.t)u⇒β tx/u
App([x]f(x), a) (λx.f) a
Reduction : σL −→CRS σR
σ = (Z, λy.fy), (Z ′, a)σL = σ(App([x]Z(x), Z ′)) = App([x](λy.fy)(x), a) ↓β= App([x]f(x), a)
σR = σ(Z(Z ′)) = (λy.fy)(a) ↓β= f(a)
93– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 204: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/204.jpg)
93
Representation of Higher-order term rewriting (CRS)
Higher-order term rewriting = Term rewriting+Lambda calculus[Breazu-Tannen,Gallier88],[Okada89],[Klop80],[Nipkow91]
CRS versus TRS: abstraction and metavariables.
App([x]Z(x), Z ′)⇒ Z(Z ′) (λx.t)u⇒β tx/u
App([x]f(x), a) (λx.f) a
Reduction : σL −→CRS σR
σ = (Z, λy.fy), (Z ′, a)σL = σ(App([x]Z(x), Z ′)) = App([x](λy.fy)(x), a) ↓β= App([x]f(x), a)
σR = σ(Z(Z ′)) = (λy.fy)(a) ↓β= f(a)
App([x]f(x), a) −→CRS f(a) (λx.f) a −→β fx/a
93– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 205: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/205.jpg)
94
Translation of CRS in the ρ-calculus
• Metaterms :
? [[x]] = x
? [[f(t1, . . . , tn)]] = f([[t1]], . . . , [[tn]])
? [[[x]t]] = x _ [[t]]
? [[Z(t1, . . . , tn)]] = Z [[t1]] . . . [[tn]]
Example
94– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 206: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/206.jpg)
94
Translation of CRS in the ρ-calculus
• Metaterms :
? [[x]] = x
? [[f(t1, . . . , tn)]] = f([[t1]], . . . , [[tn]])
? [[[x]t]] = x _ [[t]]
? [[Z(t1, . . . , tn)]] = Z [[t1]] . . . [[tn]]
• Rewriting rules : [[L ⇒ R]] = [[L]] _ [[R]]
• Assignment : [[. . . , (Zi, ξi), . . .]] = . . . , Zi/[[ξi]], . . .
• Substitute : [[λx1 . . . xn.u]] = x1_(x2_(. . . (xn _ [[u]]) . . .))
Example
94– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 207: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/207.jpg)
95
Representation of Higher-order term rewriting (CRS)
• Definition of the ρ¶-calculus (HO matching theory)
[P B]A →σ Aθ(P≺≺B) if ∃θ. Pθ =ρλ B
• Translation of CRS-components into RHO-terms
• Correction and completeness of the translation
Theorem: If T1 7→R T2 . . . 7→R Tn, then ∃ Un . . . U1 such that everycorrespondent RHO-derivation terminates and converges to Tn
. . .∗
((RRRRRRRRRRRRRRRRRR
...
...
...
...
...
Un(. . . (U1 T1))
∗ 44hhhhhhhhhhhhhhhhhh
∗**VVVVVVVVVVVVVVVVVV
... Tn
. . .
∗ 66llllllllllllllllll
95– ESSLLI-2004, Nancy The rewriting calculus Comparing to higher-order rewriting
![Page 208: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/208.jpg)
96
ρ-calculus and records
Record = structure composed of rewriting rules, i.e.:
(Ti)i=1...n 4= T1, . . . , Tn (n ∈ Nat)
[mi = Ti]i∈I 4= (mi _ Ti)i∈I
[cx = 0, cy = 0] 4= (cx _ 0, cy _ 0)
96– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 209: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/209.jpg)
96
ρ-calculus and records
Record = structure composed of rewriting rules, i.e.:
(Ti)i=1...n 4= T1, . . . , Tn (n ∈ Nat)
[mi = Ti]i∈I 4= (mi _ Ti)i∈I
[cx = 0, cy = 0] 4= (cx _ 0, cy _ 0)
Record selection = the application of the record to the label, i.e. T1.T2 as T1 T2.
(cx _ 0, cy _ 0) cx 7→δ (cx _ 0) cx, (cy _ 0) cx7→→ρσδ 0, [cy cx]0=T (0, stk) =T 0 (TςObj) . . . the matching theory
96– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 210: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/210.jpg)
97
ρ-calculus and objects
Object = record with an explicit account of self, i.e.
[mi = ς(Xi)Ti]i∈I 4= (mi _ Xi _ Ti)i∈I
97– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 211: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/211.jpg)
97
ρ-calculus and objects
Object = record with an explicit account of self, i.e.
[mi = ς(Xi)Ti]i∈I 4= (mi _ Xi _ Ti)i∈I
Self-application = the application of an object to the object itself, i.e.
T1.T24= T1 T2 T1
97– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 212: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/212.jpg)
97
ρ-calculus and objects
Object = record with an explicit account of self, i.e.
[mi = ς(Xi)Ti]i∈I 4= (mi _ Xi _ Ti)i∈I
Self-application = the application of an object to the object itself, i.e.
T1.T24= T1 T2 T1
Ex: T4= a _ S _ b. Then: T.a
4=T a T 7→→ρσδ (S _ b) T 7→→ρσδ b
97– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 213: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/213.jpg)
97
ρ-calculus and objects
Object = record with an explicit account of self, i.e.
[mi = ς(Xi)Ti]i∈I 4= (mi _ Xi _ Ti)i∈I
Self-application = the application of an object to the object itself, i.e.
T1.T24= T1 T2 T1
Ex: T4= a _ S _ b. Then: T.a
4=T a T 7→→ρσδ (S _ b) T 7→→ρσδ b
Ex: T4=ω _ S _ S.ω. Then: T.ω 7→→ρσδ (S _ S.ω) T 7→→ρσδ T.ω 7→→ρσδ . . .
97– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 214: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/214.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 215: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/215.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 216: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/216.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
7→→ρσδ ((S _ S.pong), stk) T
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 217: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/217.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
7→→ρσδ ((S _ S.pong), stk) T7→→ρσδ (S _ S.pong) T, stk T
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 218: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/218.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
7→→ρσδ ((S _ S.pong), stk) T7→→ρσδ (S _ S.pong) T, stk T7→→ρσδ (S _ S.pong) T, stk
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 219: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/219.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
7→→ρσδ ((S _ S.pong), stk) T7→→ρσδ (S _ S.pong) T, stk T7→→ρσδ (S _ S.pong) T, stk=T (S _ S.pong) T (TςObj)
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 220: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/220.jpg)
98
A “ping-pong” object
Let T4= (ping _ S _ S.pong, pong _ S _ S.ping)
Then:T.ping
4= T ping T
7→→ρσδ ((ping _ S _ S.pong) ping,(pong _ S _ S.ping) ping) T
7→→ρσδ ((S _ S.pong), stk) T7→→ρσδ (S _ S.pong) T, stk T7→→ρσδ (S _ S.pong) T, stk=T (S _ S.pong) T (TςObj)7→→ρσδ T.pong
7→→ρσδ T.ping
7→→ρσδ . . .
98– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 221: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/221.jpg)
99
Functional object update
Update (a.m := b) 4= (a,m _ b)
99– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 222: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/222.jpg)
99
Functional object update
Update (a.m := b) 4= (a,m _ b)
Point4= val _ S _ v(1, 1),
get _ S _ S.val,
set _ S _ v(X,Y ) _ (S.val := S′ _ v(X,Y ))
99– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 223: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/223.jpg)
99
Functional object update
Update (a.m := b) 4= (a,m _ b)
Point4= val _ S _ v(1, 1),
get _ S _ S.val,
set _ S _ v(X,Y ) _ (S.val := S′ _ v(X,Y ))
Then:
Point.get 7→→ρσδ v(1, 1)
99– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 224: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/224.jpg)
99
Functional object update
Update (a.m := b) 4= (a,m _ b)
Point4= val _ S _ v(1, 1),
get _ S _ S.val,
set _ S _ v(X,Y ) _ (S.val := S′ _ v(X,Y ))
Then:
Point.get 7→→ρσδ v(1, 1)
Point.set(v(2, 2)) 7→→ρσδ Point, (val _ S′ _ v(2, 2))
99– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 225: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/225.jpg)
99
Functional object update
Update (a.m := b) 4= (a,m _ b)
Point4= val _ S _ v(1, 1),
get _ S _ S.val,
set _ S _ v(X,Y ) _ (S.val := S′ _ v(X,Y ))
Then:
Point.get 7→→ρσδ v(1, 1)
Point.set(v(2, 2)) 7→→ρσδ Point, (val _ S′ _ v(2, 2))
Point.set(v(2, 2)).get 7→→ρσδ v(1, 1), v(2, 2)
99– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 226: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/226.jpg)
100
Imperative object update
Killm rule:
killm4= (m _ X,Y ) _ Y (in TςObj)
100– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 227: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/227.jpg)
100
Imperative object update
Killm rule:
killm4= (m _ X,Y ) _ Y (in TςObj)
Update (a.m := b) 4= (killm(a),m _ b)
100– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 228: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/228.jpg)
100
Imperative object update
Killm rule:
killm4= (m _ X,Y ) _ Y (in TςObj)
Update (a.m := b) 4= (killm(a),m _ b)
Then:
PointI.get 7→→ρσδ v(1, 1)
100– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 229: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/229.jpg)
100
Imperative object update
Killm rule:
killm4= (m _ X,Y ) _ Y (in TςObj)
Update (a.m := b) 4= (killm(a),m _ b)
Then:
PointI.get 7→→ρσδ v(1, 1)
PointI.set(v(2, 2)) 7→→ρσδ val _ S′ _ v(2, 2), get _ . . . , set _ . . .
100– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 230: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/230.jpg)
100
Imperative object update
Killm rule:
killm4= (m _ X,Y ) _ Y (in TςObj)
Update (a.m := b) 4= (killm(a),m _ b)
Then:
PointI.get 7→→ρσδ v(1, 1)
PointI.set(v(2, 2)) 7→→ρσδ val _ S′ _ v(2, 2), get _ . . . , set _ . . .
PointI.set(v(2, 2)).get 7→→ρσδ v(2, 2)
The Object Calculus ςObjThe Lambda Calculus of Objects λObj
100– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 231: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/231.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 232: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/232.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 233: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/233.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
4= t2 n t2
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 234: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/234.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
4= t2 n t2
7→→ρσδ ((addn _ . . .) n, (n _ S′ _ 1) n) t2
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 235: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/235.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
4= t2 n t2
7→→ρσδ ((addn _ . . .) n, (n _ S′ _ 1) n) t2
7→→ρσδ stk, (S′ _ 1) t2
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 236: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/236.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
4= t2 n t2
7→→ρσδ ((addn _ . . .) n, (n _ S′ _ 1) n) t2
7→→ρσδ stk, (S′ _ 1) t2
=T (S′ _ 1) t2 (TςObj)
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 237: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/237.jpg)
101
An object with “self-extension”
Let t14= addn _ S _ (S, n _ S′ _ 1)
(t1.addn).n 7→→ρσδ ((S _ (S, n _ S′ _ 1)) t1).n
7→→ρσδ (t1, n _ S′ _ 1)︸ ︷︷ ︸t2
.n
4= t2 n t2
7→→ρσδ ((addn _ . . .) n, (n _ S′ _ 1) n) t2
7→→ρσδ stk, (S′ _ 1) t2
=T (S′ _ 1) t2 (TςObj)
7→→ρσδ 1
101– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 238: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/238.jpg)
102
Inheritance in the ρ-calculus(Abadi & Cardelli encoding of classes-as-objects)
PClass4= new _ S _ (val _ S′ _ (S.preval) S′,
get _ S′ _ (S.preget) S′,
set _ S′ _ (S.preset) S′),
preval _ S _ S′ _ v(1, 1),
preget _ S _ S′ _ S′.val,
preset _ S _ S′ _ v(X,Y ) _ (S′.val := S′′ _ v(X,Y ))
102– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 239: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/239.jpg)
102
Inheritance in the ρ-calculus(Abadi & Cardelli encoding of classes-as-objects)
PClass4= new _ S _ (val _ S′ _ (S.preval) S′,
get _ S′ _ (S.preget) S′,
set _ S′ _ (S.preset) S′),
preval _ S _ S′ _ v(1, 1),
preget _ S _ S′ _ S′.val,
preset _ S _ S′ _ v(X,Y ) _ (S′.val := S′′ _ v(X,Y ))
Then:PClass.new 7→→ρσδ Point
102– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 240: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/240.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 241: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/241.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 242: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/242.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para7→→ρσδ ((ten _ S _ 10) (par(ten)),
(par(X) _ S _ S.X) (par(ten))) Para
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 243: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/243.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para7→→ρσδ ((ten _ S _ 10) (par(ten)),
(par(X) _ S _ S.X) (par(ten))) Para7→→ρσδ stk, (S _ S.ten) Para
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 244: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/244.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para7→→ρσδ ((ten _ S _ 10) (par(ten)),
(par(X) _ S _ S.X) (par(ten))) Para7→→ρσδ stk, (S _ S.ten) Para=T (S _ S.ten) Para (TςObj)
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 245: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/245.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para7→→ρσδ ((ten _ S _ 10) (par(ten)),
(par(X) _ S _ S.X) (par(ten))) Para7→→ρσδ stk, (S _ S.ten) Para=T (S _ S.ten) Para (TςObj)7→→ρσδ Para.ten
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 246: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/246.jpg)
103
The Para object: labels as first-class entities
Para4= (ten _ S _ 10, par(X) _ S _ S.X)
This object has a method par(X) which seeks for a method name that is assignedto the variable X and then sends this method to the object itself.
Para.(par(ten)) 4= Para (par(ten)) Para7→→ρσδ ((ten _ S _ 10) (par(ten)),
(par(X) _ S _ S.X) (par(ten))) Para7→→ρσδ stk, (S _ S.ten) Para=T (S _ S.ten) Para (TςObj)7→→ρσδ Para.ten
7→→ρσδ 10
103– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 247: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/247.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 248: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/248.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
Daemon.set(x _ S _ 3)4= Daemon set Daemon (x _ S _ 3)
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 249: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/249.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
Daemon.set(x _ S _ 3)4= Daemon set Daemon (x _ S _ 3)
7→→ρσδ (S _ X _ (X, set _ S′ _ Y _ (Y, S′))) Daemon (x _ S _ 3)
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 250: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/250.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
Daemon.set(x _ S _ 3)4= Daemon set Daemon (x _ S _ 3)
7→→ρσδ (S _ X _ (X, set _ S′ _ Y _ (Y, S′))) Daemon (x _ S _ 3)
7→→ρσδ (X _ (X, set _ S′ _ Y _ (Y, S′))) (x _ S _ 3)
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 251: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/251.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
Daemon.set(x _ S _ 3)4= Daemon set Daemon (x _ S _ 3)
7→→ρσδ (S _ X _ (X, set _ S′ _ Y _ (Y, S′))) Daemon (x _ S _ 3)
7→→ρσδ (X _ (X, set _ S′ _ Y _ (Y, S′))) (x _ S _ 3)
7→→ρσδ x _ S _ 3, set _ S′ _ Y _ (Y, S′)︸ ︷︷ ︸obj
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 252: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/252.jpg)
104
The object Daemon: methods as first-class entities
Daemon4= set _ S _ X _ (X, set _ S′ _ Y _ (Y, S′))
Daemon.set(x _ S _ 3)4= Daemon set Daemon (x _ S _ 3)
7→→ρσδ (S _ X _ (X, set _ S′ _ Y _ (Y, S′))) Daemon (x _ S _ 3)
7→→ρσδ (X _ (X, set _ S′ _ Y _ (Y, S′))) (x _ S _ 3)
7→→ρσδ x _ S _ 3, set _ S′ _ Y _ (Y, S′)︸ ︷︷ ︸obj
obj.set(y _ S _ 4) 7→→ρσδ (y _ S _ 4, x _ S _ 3, set _ S′ _ Y _ (Y, S′))
104– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 253: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/253.jpg)
105
The Object Calculus ςObj
Abstract syntax
a, b ::= X | [mi = ς(X)bi]i∈I | a.m | a.m := ς(X)bSmall-step semantics
Let a4= [mi = ς(X)bi]i∈I
(Select) a.mj ; X/abj (j ∈ I)
(Update) a.mj := ς(X)b ; [mi = ς(X)bi,mj = ς(X)b]i∈I\j (j ∈ I)
(Extend) a.mj := ς(X)b ; [mi = ς(X)bi,mj = ς(X)b]i∈I (j 6∈ I)
105– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 254: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/254.jpg)
106
Compiling ςObj in ρ-calculus
[[X]] 4= X
[[a.mj]]4= [[a]].mj
[[ [mi = ς(X)bi]i∈I ]] 4= (mi _ X _ [[bi]])i∈I
[[a.m := ς(X)b]] 4= [[a]].m := X _ [[b]]
Theorem:If a ;ςObj b, then [[a]] 7→→ρσδTςObj
[[b]].
Example with object update
106– ESSLLI-2004, Nancy The rewriting calculus Comparing to object calculi
![Page 255: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/255.jpg)
Typed rewriting calculi
![Page 256: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/256.jpg)
108
The new syntax - contexts, etc
τ ::= ι | τ _ τ Types
∆ ::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= X | stk | K P (variables occur only once in any P) Patterns
T ::= K | stk | X | P _∆ T | [P ∆ T ]T | T T | T , T Terms
108– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 257: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/257.jpg)
109
The Type System
X :σ ∈ ΓΓ ` X : σ (Start)
109– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 258: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/258.jpg)
109
The Type System
X :σ ∈ ΓΓ ` X : σ (Start)
Γ ` T1 : σ Γ ` T2 : σΓ ` T1, T2 : σ (Struct)
109– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 259: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/259.jpg)
109
The Type System
X :σ ∈ ΓΓ ` X : σ (Start)
Γ ` T1 : σ Γ ` T2 : σΓ ` T1, T2 : σ (Struct)
Γ ` T1 : σ _ τ Γ ` T2 : σΓ ` T1 T2 : τ (Appl)
109– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 260: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/260.jpg)
109
The Type System
X :σ ∈ ΓΓ ` X : σ (Start)
Γ ` T1 : σ Γ ` T2 : σΓ ` T1, T2 : σ (Struct)
Γ ` T1 : σ _ τ Γ ` T2 : σΓ ` T1 T2 : τ (Appl)
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 _∆ T2 : σ _ τ
(Abs)
109– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 261: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/261.jpg)
109
The Type System
X :σ ∈ ΓΓ ` X : σ (Start)
Γ ` T1 : σ Γ ` T2 : σΓ ` T1, T2 : σ (Struct)
Γ ` T1 : σ _ τ Γ ` T2 : σΓ ` T1 T2 : τ (Appl)
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 _∆ T2 : σ _ τ
(Abs)
Γ,∆ ` T1 : σ Γ ` T2 : σ Γ,∆ ` T3 : τΓ ` [T1∆T2]T3 : τ (Match)
109– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 262: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/262.jpg)
110
Typing properties
Well-typed matching:If Sol(P≺≺T ) = θ, then ∀X ∈ P, Γ ` X : σ ⇒ Γ ` Xθ : σ.
Subject Reduction:If Γ ` T1 : σ and T1 7→→ρσδ T2, then Γ ` T2 : σ.
Uniqueness:If Γ ` T : ϕ and Γ ` T : ψ, then ϕ =α ψ.
Decidability:(typechecking) Γ ` T : ϕ ?(type inference) Γ ` T : ?
are decidable.
110– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 263: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/263.jpg)
111
Normalization failure
f : (α _ α) _ α and Γ = X : α _ α, ω 4= f X _ X (f X)
ω (f ω) ≡ (f X _ X (f X)) (f ω)7→ρ [f X f ω](X (f X))7→→ρσδ ω (f ω)7→ρ . . .
111– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 264: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/264.jpg)
112
Normalization failure (cont’d)
f : (α _ α) _ α and Γ = X : α _ α, ω 4= f X _ X (f X)
Γ ` f : (α _ α) _ α Γ ` X : α _ α(b) Γ ` f X : α
Γ ` X : α _ α(b)
Γ ` f X : αΓ ` X (f X) : α
(a) ` ω ≡ f X _ X (f X) : α _ α
(a)` ω : α _ α
` f : (α _ α) _ α(a)
` ω : α _ α` f ω : α
` ω (f ω) : α
112– ESSLLI-2004, Nancy The rewriting calculus Typed rewriting calculi
![Page 265: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/265.jpg)
113
(Well-typed) Encoding of Rewriting in the ρ-calculus
rewrite rules and their application,
ρ-abstractions and applications (Simple Encoding)
113– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 266: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/266.jpg)
113
(Well-typed) Encoding of Rewriting in the ρ-calculus
rewrite rules and their application,
ρ-abstractions and applications (Simple Encoding)
an iteration operator that applies repeatedly a set of rewrite rules,
ω (f ω)
113– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 267: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/267.jpg)
113
(Well-typed) Encoding of Rewriting in the ρ-calculus
rewrite rules and their application,
ρ-abstractions and applications (Simple Encoding)
an iteration operator that applies repeatedly a set of rewrite rules,
ω (f ω)
a construction grouping together a set of rewrite rules,
structures and objects
113– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 268: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/268.jpg)
113
(Well-typed) Encoding of Rewriting in the ρ-calculus
rewrite rules and their application,
ρ-abstractions and applications (Simple Encoding)
an iteration operator that applies repeatedly a set of rewrite rules,
ω (f ω)
a construction grouping together a set of rewrite rules,
structures and objects
an operator testing if a set of rewrite rules is applicable to a term.
the symbol stk
113– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 269: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/269.jpg)
114
ρ-calculus and objects
• Object = record with an explicit account of self, i.e.
[mi = ς(Xi)ti]i∈I 4= (mi(Xi) _ ti)i∈I
114– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 270: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/270.jpg)
114
ρ-calculus and objects
• Object = record with an explicit account of self, i.e.
[mi = ς(Xi)ti]i∈I 4= (mi(Xi) _ ti)i∈I
• Self-application = the application of an object to the object itself, i.e.
t1.t24= t1 t2(t1)
114– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 271: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/271.jpg)
114
ρ-calculus and objects
• Object = record with an explicit account of self, i.e.
[mi = ς(Xi)ti]i∈I 4= (mi(Xi) _ ti)i∈I
• Self-application = the application of an object to the object itself, i.e.
t1.t24= t1 t2(t1)
• Ex: t4= a(S) _ b. Then: t.a
4= t a(t) 7→ρ [a(S) a(t)]b 7→σ b
114– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 272: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/272.jpg)
115
Typed objects
• An object has type:
S : lab _ φ ` meth : (lab _ φ) _ lab` meth(S) : lab (Appl) ` Tmeth : φ
` meth(S) _ Tmeth : lab _ φ(Abst)
115– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 273: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/273.jpg)
115
Typed objects
• An object has type:
S : lab _ φ ` meth : (lab _ φ) _ lab` meth(S) : lab (Appl) ` Tmeth : φ
` meth(S) _ Tmeth : lab _ φ(Abst)
• obj.meth 4= obj meth(obj) can be typed as follows:
` obj : lab _ φ` meth : (lab _ φ) _ lab ` obj : lab _ φ
` meth(obj) : lab` obj meth(obj) : φ
115– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 274: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/274.jpg)
116
Detecting matching failures: the symbol stk
1. The relation P 6v A detects (some) definitive matching failures:
f 6v g
f(An) 6v B if (B ≡ g(Bm), f 6= g ) ∨ (B ≡ f(Bn),∃i, Ai 6v Bi)P 6v A if A ≡ ([Q A1]A2 ∧Q 6v A1 ∨ P 6v A2)
116– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 275: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/275.jpg)
116
Detecting matching failures: the symbol stk
1. The relation P 6v A detects (some) definitive matching failures:
f 6v g
f(An) 6v B if (B ≡ g(Bm), f 6= g ) ∨ (B ≡ f(Bn),∃i, Ai 6v Bi)P 6v A if A ≡ ([Q A1]A2 ∧Q 6v A1 ∨ P 6v A2)
2. The relation →stk treats matching failures uniformly:
[P A]B →stk stk if P 6v A
stk, A →stk A
A, stk →stk A
stk A →stk stk
Theory of Stuck Tstk Encoding Rewriting
116– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 276: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/276.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 277: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/277.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
(plus plus) add(N,M)7→→ρσδ [0 N ]M, [0 N − 1](M+1) · · · [0 0](M+N), [suc x 0] . . .7→→ρσδ stk, stk · · · [0 0](M+N), stk . . .
7→stk M +N
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 278: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/278.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
(plus plus) add(N,M)7→→ρσδ [0 N ]M, [0 N − 1](M+1) · · · [0 0](M+N), [suc x 0] . . .7→→ρσδ stk, stk · · · [0 0](M+N), stk . . .
7→stk M +N
Fill in the blanks with your favorite rewrite system...
func4=
[S _ ,S _ (S S)
]
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 279: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/279.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
(plus plus) add(N,M)7→→ρσδ [0 N ]M, [0 N − 1](M+1) · · · [0 0](M+N), [suc x 0] . . .7→→ρσδ stk, stk · · · [0 0](M+N), stk . . .
7→stk M +N
Fill in the blanks with your favorite rewrite system...
func4=
[S _ len([ ]) _ 0 ,S _ len(Cons(x, l)) _ suc
((S S) len(l)
) ]
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 280: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/280.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
(plus plus) add(N,M)7→→ρσδ [0 N ]M, [0 N − 1](M+1) · · · [0 0](M+N), [suc x 0] . . .7→→ρσδ stk, stk · · · [0 0](M+N), stk . . .
7→stk M +N
Fill in the blanks with your favorite rewrite system... provided it is convergent andground reducible if you want completeness.
func4=
[S _ len([ ]) _ 0 ,S _ len(Cons(x, l)) _ suc
((S S) len(l)
) ]
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 281: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/281.jpg)
117
Encoding rewriting - Addition over Peano integers
plus4=
[S _ add(0, y) _ y,S _ add(suc(x), y) _ suc
((S S) add(x, y)
) ]
(plus plus) add(N,M)7→→ρσδ [0 N ]M, [0 N − 1](M+1) · · · [0 0](M+N), [suc x 0] . . .7→→ρσδ stk, stk · · · [0 0](M+N), stk . . .
7→stk M +N
Fill in the blanks with your favorite rewrite system... provided it is convergent andground reducible if you want completeness.
func4=
[S _ len([ ]) _ 0 ,S _ len(Cons(x, l)) _ suc
((S S) len(l)
) ]
117– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 282: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/282.jpg)
118
Encoding rewriting in the ρ-calculus
1. The following operator selects the first applicable rule of a set:
first(A1, A2, . . . , An)4= X _ ((stk _ An X, I) (. . . (stk _ A2 X, I) (A1X)))
first(A1, A2, . . . , An) B 7→→ρσδ Aj+1 B if ∀i ≤ j, Ai B 7→→ρσδ stk and Aj+1 B 6 7→→ρσδ stk
118– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 283: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/283.jpg)
118
Encoding rewriting in the ρ-calculus
1. The following operator selects the first applicable rule of a set:
first(A1, A2, . . . , An)4= X _ ((stk _ An X, I) (. . . (stk _ A2 X, I) (A1X)))
first(A1, A2, . . . , An) B 7→→ρσδ Aj+1 B if ∀i ≤ j, Ai B 7→→ρσδ stk and Aj+1 B 6 7→→ρσδ stk
2. The Term Rewrite System R = ti → si with signature aj is encoded by:
R (rec S) _ first
0BBB@t1 _ S (rec S) s1,
· · · ,
a1 X _ S (Rec S) (a1 S(rec S) X),
· · · ,
1CCCA ,
(Rec S) _ first
0@ t1 _ S (rec S) s1,
· · · ,
I
1A
118– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 284: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/284.jpg)
119
Example - A simple calculator
calc4= rec(S) _ first
0BBBBBBBBB@
add 0 Y _ Y,
add (suc X) Y _ S.rec (suc (add X Y )),
mult 0 Y _ 0,
mult (suc X) Y _ S.rec (add (mult X Y ) X),
add X Y _ S.Rec (add (S.rec X) (S.rec Y )),
mult X Y _ S.Rec (mult (S.rec X) (S.rec Y )),
suc X _ S.Rec (suc (S.rec X))
1CCCCCCCCCA,
Rec(S) _ first
0BBBBB@add 0 Y _ Y,
add (suc X) Y _ S.rec (suc (add X Y )),
mult 0 Y _ 0,
mult (suc X) Y _ S.rec (add (mult X Y ) X),
Y _ Y
1CCCCCAComputing (3 + 5)× 4
calc.rec (mult (add 3 5) 4) 7→→ρσδ 32.
119– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 285: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/285.jpg)
120
Example - Computing the length of a list
length4= rec S _ first
0@ len nil _ 0 ,
len (cons X L) _ S.rec (suc (len L)) ,
suc X _ S.Rec suc (S.rec X)
1A ,
Rec S _ first
0@ len nil _ 0 ,
len (cons X L) _ S.rec (suc (len L)),
Y _ Y
1A
120– ESSLLI-2004, Nancy The rewriting calculus Encoding Rewriting
![Page 286: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/286.jpg)
121
Logical inconsistency
• As is, the Curry-Howard isomorphism is not valid:
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 _∆ T2 : σ _ τ
(Abs) Γ,∆ ` σ Γ,∆ ` τΓ ` σ _ τ
(_ I)
121– ESSLLI-2004, Nancy The rewriting calculus Type systems
![Page 287: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/287.jpg)
121
Logical inconsistency
• As is, the Curry-Howard isomorphism is not valid:
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 _∆ T2 : σ _ τ
(Abs) Γ,∆ ` σ Γ,∆ ` τΓ ` σ _ τ
(_ I)
• Thus, for instance,
` (h⊥_α_α(X⊥) _ X⊥) : α _ α _⊥` (h⊥_α_α(X⊥) _ X⊥) (Y α _ Y α) : ⊥
121– ESSLLI-2004, Nancy The rewriting calculus Type systems
![Page 288: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/288.jpg)
121
Logical inconsistency
• As is, the Curry-Howard isomorphism is not valid:
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 _∆ T2 : σ _ τ
(Abs) Γ,∆ ` σ Γ,∆ ` τΓ ` σ _ τ
(_ I)
• Thus, for instance,
` (h⊥_α_α(X⊥) _ X⊥) : α _ α _⊥` (h⊥_α_α(X⊥) _ X⊥) (Y α _ Y α) : ⊥
• How to fix it ?
Γ, Xi : ϕi ` B : ψΓ ` A _ B : (
∧ϕi) _ ψ
(Abs) , FV (A) = Xϕii
121– ESSLLI-2004, Nancy The rewriting calculus Type systems
![Page 289: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/289.jpg)
122
Dependent type discipline
Γ,∆ ` T1 : σ Γ,∆ ` T2 : τΓ ` T1 : ∆ _ T2 : σ _ τ
(Abs)
Γ ` T1 : σ _ τ Γ ` T2 : σΓ ` T1 T2 : τ (Appl)
Γ,∆ ` T2 : τΓ ` (T1 : ∆) _ T2 : (T1 : ∆) _ τ
(Abs)
Γ ` T1 : (T11 : ∆) _ τ Γ ` T2 : σ Γ,∆ ` T11 : σΓ ` T1 T2 : [T11 ∆ T2]τ
(Appl)
122– ESSLLI-2004, Nancy The rewriting calculus Type systems
![Page 290: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/290.jpg)
Pure Pattern Type Systems
POPL-03
![Page 291: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/291.jpg)
124
P2TS
Motivations and Contributions
Small “λ-Digression”
124– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 292: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/292.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
(λX.X) 3
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 293: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/293.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 294: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/294.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
• Lambda-calculus with patterns builds upon pattern abstraction:
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 295: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/295.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
• Lambda-calculus with patterns builds upon pattern abstraction:
(λ〈f(X),g(Y)〉.〈X,Y〉)〈3,4〉
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 296: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/296.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
• Lambda-calculus with patterns builds upon pattern abstraction:
(λ 〈sqr(X), trl(X)〉︸ ︷︷ ︸pattern
.headof(X)) 〈sqr(wood), trl(wood)〉︸ ︷︷ ︸argument
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 297: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/297.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
• Lambda-calculus with patterns builds upon pattern abstraction:
(λ 〈sqr(X), trl(X)〉︸ ︷︷ ︸pattern
.headof(X)) 〈sqr(wood), trl(wood)〉︸ ︷︷ ︸argument
• Rewriting-calculus builds upon generalised abstraction:
(λ (λP.Q)︸ ︷︷ ︸pattern
.M) N︸︷︷︸arg
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 298: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/298.jpg)
125
From Lambda-calculus to Rewriting-calculus
• Lambda-calculus builds upon lambda abstraction:
3
• Lambda-calculus with patterns builds upon pattern abstraction:
(λ 〈sqr(X), trl(X)〉︸ ︷︷ ︸pattern
.headof(X)) 〈sqr(wood), trl(wood)〉︸ ︷︷ ︸argument
• Rewriting-calculus builds upon generalised abstraction:
(λ (λX.Y)︸ ︷︷ ︸pattern
.Y 3) (λZ.Z)︸ ︷︷ ︸arg
125– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 299: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/299.jpg)
126
PATTERNS
We Want More Patterns!
Pattern Power!
126– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 300: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/300.jpg)
127
The Uncle Pat
127– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 301: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/301.jpg)
128
MATCHING
We Want More Matching!
Matching Power!
128– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 302: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/302.jpg)
129
The Lady Match
129– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 303: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/303.jpg)
130
P2TS: Notational Convention
• Capital letters, like A,B,C, . . . range over general terms (metavariables)
• Capital letters, like X,Y, Z, . . . range over variables
• Small letter, like a, b, . . . , f, . . . and strings like car, cons, nil, int, . . . rangeover constants
• The application of a constant function, say f , to a term A will be usuallydenoted by f(A), following the algebraic “folklore”
• We can “curryfy” in order to denote a function taking multiple arguments, e.g.f(A1 · · ·An) 4
= f A1 · · ·An
• Fact: Mixing term rewriting and lambda calculus is a longstanding “shambles”:many proposals, many solutions, many problems, ...
130– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 304: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/304.jpg)
131
P2TS: Tricky !
• Quiz: . . . the below term can have free variables ?
λ cons(T X nil(T ))︸ ︷︷ ︸pattern
.cons(T X cons(T X nil(T )))
131– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 305: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/305.jpg)
131
P2TS: Tricky !
• Quiz: . . . the below term can have free variables ?
λ cons(T X nil(T))︸ ︷︷ ︸pattern
.cons(TX cons(TX nil(T)))
• yes, and we can even abstract over the variable T
λT .λcons(T X nil(T )).cons(T X cons(T X nil(T )))
131– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 306: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/306.jpg)
132
P2TS: Tricky !
• ... we will explain why we cannot reduce
(λ cons(T X nil(T ))︸ ︷︷ ︸pattern
.cons(T X cons(T X nil(T ))))
cons(int 3 nil(int))︸ ︷︷ ︸argument
132– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 307: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/307.jpg)
132
P2TS: Tricky !
• ... we will explain why we cannot reduce
(λ cons(T X nil(T ))︸ ︷︷ ︸pattern
.cons(T X cons(T X nil(T ))))
cons(int 3 nil(int))︸ ︷︷ ︸argument
• ... but we can reduce
λ T︸︷︷︸patt1
.λ cons(T X nil(T ))︸ ︷︷ ︸patt2
.cons(T X cons(T X nil(T )))
int︸︷︷︸arg1
cons(int 3 nil(int))︸ ︷︷ ︸arg2
132– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 308: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/308.jpg)
133
TYPES
We Need to Plug Types!
133– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 309: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/309.jpg)
134
Thanks to TAL’s Group (Cornell)
134– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 310: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/310.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 311: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/311.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
• As an intermediate goal, we develop a dependent type theory for theRewriting-calculus
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 312: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/312.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
• As an intermediate goal, we develop a dependent type theory for theRewriting-calculus
• We do so by extending the framework of Pure Type Systems (PTS)
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 313: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/313.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
• As an intermediate goal, we develop a dependent type theory for theRewriting-calculus
• We do so by extending the framework of Pure Type Systems (PTS)
• We develop the basic theory of the resulting framework which we call
Pure Pattern Type Systems
(P2TS)
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 314: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/314.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
• As an intermediate goal, we develop a dependent type theory for theRewriting-calculus
• We do so by extending the framework of Pure Type Systems (PTS)
• We develop the basic theory of the resulting framework which we call
Pure Pattern Type Systems
(P2TS)
• This is not as straightforward as one may imagine
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 315: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/315.jpg)
135
Typed Rho
• Our goal is to use the Rewriting-calculus as a foundation for proof assistantsbased on Curry-Howard isomorphism a la Coq, Twelf, Lego, . . .
• As an intermediate goal, we develop a dependent type theory for theRewriting-calculus
• We do so by extending the framework of Pure Type Systems (PTS)
• We develop the basic theory of the resulting framework which we call
Pure Pattern Type Systems
(P2TS)
• This is not as straightforward as one may imagine :-)
135– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 316: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/316.jpg)
136
P2TS
Free Unrestricted Patterns
Plætora of Serious Problems
136– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 317: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/317.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 318: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/318.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→(λZ.Z)
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 319: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/319.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→(λ(X Y).X) a
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 320: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/320.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→(λ(X Y).X) a
• Subject Reduction can fails for bad patterns
` (λ (Xσ1_τ1 Yσ1
1 )︸ ︷︷ ︸bad patt
. Zσ1_τ Yσ11 ) (Xσ2_τ
2 Yσ22 )︸ ︷︷ ︸
badarg
: τ
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 321: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/321.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→(λ(X Y).X) a
• Subject Reduction can fails for bad patterns
6` Zσ1_τ Yσ22 : τ
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 322: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/322.jpg)
137
P2TS: Some Problems
• Confluence can fails for bad patterns
(λ (X Y)︸ ︷︷ ︸bad!
.X)((λZ.Z) a) 7→→(λ(X Y).X) a
• Subject Reduction can fails for bad patterns
6` Zσ1_τ Yσ22 : τ
• Shapes of good patterns must be synchronized with a sound static type system!
137– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 323: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/323.jpg)
138
A Good Recipes for ... Good Patterns
• Good Patterns are in Normal form (no redexes), i.e. the bad pattern
(λP.A) B
138– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 324: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/324.jpg)
138
A Good Recipes for ... Good Patterns
• Good Patterns are in Normal form (no redexes), i.e. the bad pattern
(λP.A) B
• Good Patterns are not occurrence of “active” variables, i.e. the bad pattern
(X A)
138– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 325: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/325.jpg)
138
A Good Recipes for ... Good Patterns
• Good Patterns are in Normal form (no redexes), i.e. the bad pattern
(λP.A) B
• Good Patterns are not occurrence of “active” variables, i.e. the bad pattern
(X A)
• Good Patterns are linear, i.e. variables occurs only once, i.e. the bad pattern
f(X,X)
138– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 326: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/326.jpg)
138
A Good Recipes for ... Good Patterns
• Good Patterns are in Normal form (no redexes), i.e. the bad pattern
(λP.A) B
• Good Patterns are not occurrence of “active” variables, i.e. the bad pattern
(X A)
• Good Patterns are linear, i.e. variables occurs only once, i.e. the bad pattern
f(X,X)
• All those recipes can be formalized, enforced by the syntax, checked at run timeor statically, or by any reasonable mathematical technique....
138– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 327: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/327.jpg)
139
The main contribution of this (ongoing) work are ...
• to provide adequate notions of patterns, substitutions and syntactic matchingin a typed setting.We introduce delayed matching constraint, and the possibility for patterns inabstractions to evolve (by reduction or substitution) during execution
139– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 328: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/328.jpg)
139
The main contribution of this (ongoing) work are ...
• to provide adequate notions of patterns, substitutions and syntactic matchingin a typed setting.We introduce delayed matching constraint, and the possibility for patterns inabstractions to evolve (by reduction or substitution) during execution
• to propose an extension of PTSs supporting abstraction over patterns, andenjoying
? confluence? subject reduction? conservativity over PTSs? consistency for normalizing P2TSs
139– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 329: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/329.jpg)
139
The main contribution of this (ongoing) work are ...
• to provide adequate notions of patterns, substitutions and syntactic matchingin a typed setting.We introduce delayed matching constraint, and the possibility for patterns inabstractions to evolve (by reduction or substitution) during execution
• to propose an extension of PTSs supporting abstraction over patterns, andenjoying
? confluence? subject reduction? conservativity over PTSs? consistency for normalizing P2TSs
• Strong normalization for all P2TS is an open problem . . . but it is ok for simpleP2TS-types (see Benjamin Wack SN-paper) and it “seems” ok for the simplestdependent-type discipline (; Pattern Logical Framework)
139– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 330: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/330.jpg)
140
P2TS
The Syntax
140– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 331: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/331.jpg)
141
P2TS
its time to be uniform!
λA.B ∼ A→ B
141– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 332: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/332.jpg)
142
The Typed Syntax
Γ ::= ∅ | Γ, X:A | Γ, f :A
A ::= X | f | P _∆ B | A A | [P ∆ B]C | A,B |
ΠP :∆.B
142– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 333: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/333.jpg)
142
The Typed Syntax
Γ ::= ∅ | Γ, X:A | Γ, f :A
A ::= X | f | P _∆ B | A A | [P ∆ B]C | A,B |
ΠP :∆.B
1. Term A _∆ B is an abstraction (resp. product abstraction i.e. ΠA:∆.B)
142– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 334: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/334.jpg)
142
The Typed Syntax
Γ ::= ∅ | Γ, X:A | Γ, f :A
A ::= X | f | P _∆ B | A A | [P ∆ B]C | A,B |
ΠP :∆.B
1. Term A _∆ B is an abstraction (resp. product abstraction i.e. ΠA:∆.B)
2. Term [A∆ B]C is a delayed matching constraint
142– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 335: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/335.jpg)
142
The Typed Syntax
Γ ::= ∅ | Γ, X:A | Γ, f :A
A ::= X | f | P _∆ B | A A | [P ∆ B]C | A,B |
ΠP :∆.B
1. Term A _∆ B is an abstraction (resp. product abstraction i.e. ΠA:∆.B)
2. Term [A∆ B]C is a delayed matching constraint
3. Term of the form A,B is called a structure
142– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 336: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/336.jpg)
142
The Typed Syntax
Γ ::= ∅ | Γ, X:A | Γ, f :A
A ::= X | f | P _∆ B | A A | [P ∆ B]C | A,B |
ΠP :∆.B
1. Term A _∆ B is an abstraction (resp. product abstraction i.e. ΠA:∆.B)
2. Term [A∆ B]C is a delayed matching constraint
3. Term of the form A,B is called a structure
4. Term of the form ΠP:∆.B is called a product type
142– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 337: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/337.jpg)
143
Untyped Rho vs. Typed P2TS
Rho
T ::= V | K | P _ T | T T | [P T ].T | T , T
P2TS
C ::= ∅ | C,V:T | C,K:T X∈ λ Π
T ::= V | K | XP:C.T | T T | [P C T ].T | T , T
143– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 338: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/338.jpg)
143
Untyped Rho vs. Typed P2TS
Rho
T ::= V | K | P _ T | T T | [P T ].T | T , T
P2TS
C ::= ∅ | C,V:T | C,K:T X∈ λ Π
T ::= V | K | XP:C.T | T T | [P C T ].T | T , T
143– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 339: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/339.jpg)
143
Untyped Rho vs. Typed P2TS
Rho
T ::= V | K | P _ T | T T | [P T ].T | T , T
P2TS
C ::= ∅ | C,V:T | C,K:T X∈ λ Π
T ::= V | K | XP:C.T | T T | [P C T ].T | T , T
143– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 340: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/340.jpg)
143
Untyped Rho vs. Typed P2TS
Rho
T ::= V | K | P _ T | T T | [P T ].T | T , T
P2TS
C ::= ∅ | C,V:T | C,K:T X∈ λ Π
T ::= V | K | XP:C.T | T T | [P C T ].T | T , T
143– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 341: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/341.jpg)
144
P2TS
Small-step Semantics
144– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 342: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/342.jpg)
145
Reduction@glance
(P _∆ B)C
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 343: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/343.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 344: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/344.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 345: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/345.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
if ∃σ.Aσ ≡ C
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 346: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/346.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
if ∃σ.Aσ ≡ C
(P _∆ B)C
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 347: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/347.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
if ∃σ.Aσ ≡ C
(P _∆ B)C 7→ρ [P ∆ C].B
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 348: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/348.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
if ∃σ.Aσ ≡ C
(P _∆ B)C 7→ρ [P ∆ C].BSTOP!
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 349: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/349.jpg)
145
Reduction@glance
(P _∆ B)C 7→ρ [P ∆ C].B7→σ Bσ
if ∃σ.Aσ ≡ C
(P _∆ B)C 7→ρ [P ∆ C].BSTOP!if 6 ∃σ.Pσ ≡ C
145– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 350: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/350.jpg)
146
The Small-step Reduction Semantics
(ρ) (P _∆ B) C 7→ρ [P ∆ C].B
(σ) [P ∆ C].B 7→σ Bσ(P≺≺∆∅ C)
(δ) (A,B)C 7→δ A C,B C
146– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 351: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/351.jpg)
146
The Small-step Reduction Semantics
(ρ) (P _∆ B) C 7→ρ [P ∆ C].B
(σ) [P ∆ C].B 7→σ Bσ(P≺≺∆∅ C)
(δ) (A,B)C 7→δ A C,B C
• (ρ): applying P _∆ B to C reduces to the delayed matching constraint
[P∆ C].B
146– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 352: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/352.jpg)
146
The Small-step Reduction Semantics
(ρ) (P _∆ B) C 7→ρ [P ∆ C].B
(σ) [P ∆ C].B 7→σ Bσ(P≺≺∆∅ C)
(δ) (A,B)C 7→δ A C,B C
• (ρ): applying P _∆ B to C reduces to the delayed matching constraint
[P∆ C].B
• (σ): run successfully Alg(P≺≺∆∅ C), and applying the result σ to the term B
146– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 353: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/353.jpg)
146
The Small-step Reduction Semantics
(ρ) (P _∆ B) C 7→ρ [P ∆ C].B
(σ) [P ∆ C].B 7→σ Bσ(P≺≺∆∅ C)
(δ) (A,B)C 7→δ A C,B C
• (ρ): applying P _∆ B to C reduces to the delayed matching constraint
[P∆ C].B
• (σ): run successfully Alg(P≺≺∆∅ C), and applying the result σ to the term B
• (δ): deals with the distributivity of the application on the structures built withthe “,” constructor One-Many-Congruence-As-Usual
146– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 354: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/354.jpg)
147
P2TS
Galleria & Glance
147– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 355: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/355.jpg)
148
Galleria I: The Pattern Abstraction A _∆ B
• Generalisation of the λ-abstraction in PTSs. The rationale is:
X _(X:σ)︸ ︷︷ ︸∆
A ∼ λX:σ.A
148– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 356: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/356.jpg)
148
Galleria I: The Pattern Abstraction A _∆ B
• Generalisation of the λ-abstraction in PTSs. The rationale is:
f(XY) _(X:σ,Y:τ)︸ ︷︷ ︸∆
A ∼ λf(XY):(X:σ,Y:τ).A
148– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 357: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/357.jpg)
148
Galleria I: The Pattern Abstraction A _∆ B
• Generalisation of the λ-abstraction in PTSs. The rationale is:
f(XY) _(X:σ,Y:τ)︸ ︷︷ ︸∆
A ∼ λf(XY):(X:σ,Y:τ).A
• Instead of simple variables we abstract over sophisticated patterns
• The free variables of A (bound in B) are declared in the context ∆, i.e.
FVar(A _∆ B) 4= (FVar(A)∪FVar(B)∪FVar(∆))\Dom(∆)
148– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 358: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/358.jpg)
148
Galleria I: The Pattern Abstraction A _∆ B
• Generalisation of the λ-abstraction in PTSs. The rationale is:
f(XY) _(X:σ,Y:τ)︸ ︷︷ ︸∆
A ∼ λf(XY):(X:σ,Y:τ).A
• Instead of simple variables we abstract over sophisticated patterns
• The free variables of A (bound in B) are declared in the context ∆, i.e.
FVar(A _∆ B) 4= (FVar(A)∪FVar(B)∪FVar(∆))\Dom(∆)
• ∆ discriminates on which FVar(A) will be bound in B and which not
cons(T X nil(T)) _(X:T) cons(T X cons(T X nil(T)))
148– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 359: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/359.jpg)
148
Galleria I: The Pattern Abstraction A _∆ B
• Generalisation of the λ-abstraction in PTSs. The rationale is:
f(XY) _(X:σ,Y:τ)︸ ︷︷ ︸∆
A ∼ λf(XY):(X:σ,Y:τ).A
• Instead of simple variables we abstract over sophisticated patterns
• The free variables of A (bound in B) are declared in the context ∆, i.e.
FVar(A _∆ B) 4= (FVar(A)∪FVar(B)∪FVar(∆))\Dom(∆)
• ∆ discriminates on which FVar(A) will be bound in B and which not
cons(T X nil(T)) _(X:T) cons(T X cons(T X nil(T)))
148– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 360: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/360.jpg)
149
Galleria II: The Matching Constraint [A∆ B]C
• In the term
[A∆ B]C
the matching equation [A∆ B] is put on the stack, hence constraints and“de facto” blocks the evaluation of C
• The body C will be evaluated (in case a matching solution exists) or delayed(in case no solution exists at this stage of the evaluation)
• If a solution exists, the delayed matching constraint self-evaluates to Cσ,otherwise the evaluation is delayed to a later stage
• The free variables of A declared in ∆ are bound in B but not in C, i.e.
FVar([A∆ B]C) 4=FVar((A _∆ C)B)
149– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 361: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/361.jpg)
150
P2TS
Matching Algorithm
∃σ.Alg(P≺≺∆∅ A) ?
INSIDE ALGO HARD RUN EASY RUN SKIP
150– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 362: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/362.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 363: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/363.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
2. A matching system T is solved by the substitution σ ifDom(σ) ⊆ Dom(Σ) \ Dom(∆) and for all i = 0 . . . n, Piσ ≡ Bi
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 364: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/364.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
2. A matching system T is solved by the substitution σ ifDom(σ) ⊆ Dom(Σ) \ Dom(∆) and for all i = 0 . . . n, Piσ ≡ Bi
3. A matching system T is in normal form when it satisfies the followingconditions:
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 365: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/365.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
2. A matching system T is solved by the substitution σ ifDom(σ) ⊆ Dom(Σ) \ Dom(∆) and for all i = 0 . . . n, Piσ ≡ Bi
3. A matching system T is in normal form when it satisfies the followingconditions:
(a) T 4= ∧i=0...n
Xi≺≺Σ∆iCi ∧
j=0...mfj≺≺Σ
∆jfj
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 366: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/366.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
2. A matching system T is solved by the substitution σ ifDom(σ) ⊆ Dom(Σ) \ Dom(∆) and for all i = 0 . . . n, Piσ ≡ Bi
3. A matching system T is in normal form when it satisfies the followingconditions:
(a) T 4= ∧i=0...n
Xi≺≺Σ∆iCi ∧
j=0...mfj≺≺Σ
∆jfj
(b) for all h, k = 0 . . . n, Xh ≡ Xk implies Ch ≡ Ck
(c) for all i = 0 . . . n, Xi ∈ Dom(∆i) or Xi 6∈ Dom(Σ) implies Xi ≡ Ci
(d) for all i = 0 . . . n, FVar(Ci) ∩ Dom(∆i) 6= ∅ implies Xi ≡ Ci
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 367: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/367.jpg)
151
Matching Systems
1. A matching system T 4= ∧i=0...n
Pi≺≺∆ΓiAi is a conjunction of match
equations, where ∧ is idempotent, associative and commutative.
2. A matching system T is solved by the substitution σ ifDom(σ) ⊆ Dom(Σ) \ Dom(∆) and for all i = 0 . . . n, Piσ ≡ Bi
3. A matching system T is in normal form when it satisfies the followingconditions:
(a) T 4= ∧i=0...n
Xi≺≺Σ∆iCi ∧
j=0...mfj≺≺Σ
∆jfj
(b) for all h, k = 0 . . . n, Xh ≡ Xk implies Ch ≡ Ck
(c) for all i = 0 . . . n, Xi ∈ Dom(∆i) or Xi 6∈ Dom(Σ) implies Xi ≡ Ci
(d) for all i = 0 . . . n, FVar(Ci) ∩ Dom(∆i) 6= ∅ implies Xi ≡ Ci
4. if condition 3 is satisfied the matching system T produces the substitutionC1/X1 · · ·Cn/Xn, otherwise the matching fails
151– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 368: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/368.jpg)
152
The Algorithm Alg
(Lbd/Prod) (P1 _∆ B1)≺≺ΣΓ(P2 _∆ B2)
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2
152– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 369: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/369.jpg)
152
The Algorithm Alg
(Lbd/Prod) (P1 _∆ B1)≺≺ΣΓ(P2 _∆ B2)
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2
(Delay) [P1∆ C1].B1≺≺ΣΓ [P2∆ C2].B2
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2 ∧ C1≺≺ΣΓC2
152– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 370: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/370.jpg)
152
The Algorithm Alg
(Lbd/Prod) (P1 _∆ B1)≺≺ΣΓ(P2 _∆ B2)
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2
(Delay) [P1∆ C1].B1≺≺ΣΓ [P2∆ C2].B2
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2 ∧ C1≺≺ΣΓC2
(Appl/Struct) (A1 #B1)≺≺ΣΓ(A2 #B2)
A1≺≺ΣΓA2 ∧B1≺≺Σ
ΓB2
152– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 371: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/371.jpg)
152
The Algorithm Alg
(Lbd/Prod) (P1 _∆ B1)≺≺ΣΓ(P2 _∆ B2)
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2
(Delay) [P1∆ C1].B1≺≺ΣΓ [P2∆ C2].B2
P1≺≺ΣΓ,∆P2 ∧B1≺≺Σ
Γ,∆B2 ∧ C1≺≺ΣΓC2
(Appl/Struct) (A1 #B1)≺≺ΣΓ(A2 #B2)
A1≺≺ΣΓA2 ∧B1≺≺Σ
ΓB2
recall the reduction rule [PΘ C].B 7→σ Bσ(P≺≺Θ∅ C)
152– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 372: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/372.jpg)
153
Termination of Alg
• The relation is defined as the reflexive, transitive and compatible closure of
• If T T′, with T′ a matching system in solved form then, we say that thematching algorithm Alg (taking as input the system T) succeeds
• The matching algorithm is clearly terminating (since all rules decrease the sizeof terms) and deterministic (no critical pairs), and of course, it works moduloα-conversion and Barendregt’s hygiene-convention
• Starting form a given solved matching system of the form
T 4= ∧
i=0...nXi≺≺Σ
∆iAi ∧
j=0...maj≺≺Σ
∆jaj
the corresponding substitution A1/X1 · · ·An/Xn is exhibited.
153– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 373: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/373.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 374: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/374.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 375: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/375.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 376: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/376.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y X≺≺?
XX ∧X≺≺?XY KO!!
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 377: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/377.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y X≺≺?
XX ∧X≺≺?XY KO!!
• X _(X:i) f(X Y )≺≺Y∅X _(X:i) f(X 3)
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 378: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/378.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y X≺≺?
XX ∧X≺≺?XY KO!!
• X _(X:i) f(X Y )≺≺Y∅X _(X:i) f(X 3)
X≺≺YXX ∧ f≺≺YXf ∧X≺≺YXX ∧ Y≺≺YX3 OK!!
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 379: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/379.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y X≺≺?
XX ∧X≺≺?XY KO!!
• X _(X:i) f(X Y )≺≺Y∅X _(X:i) f(X 3)
X≺≺YXX ∧ f≺≺YXf ∧X≺≺YXX ∧ Y≺≺YX3 OK!!
• [f(X)(X:i) f(Y )]X≺≺Y∅ [f(X)(X:i) f(3)].X
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 380: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/380.jpg)
154
Less Easy Running
• X _(X:i) X≺≺?∅X _(X:i) X X≺≺?
XX OK!!
• X _(X:i) X≺≺?∅X _(X:i) Y X≺≺?
XX ∧X≺≺?XY KO!!
• X _(X:i) f(X Y )≺≺Y∅X _(X:i) f(X 3)
X≺≺YXX ∧ f≺≺YXf ∧X≺≺YXX ∧ Y≺≺YX3 OK!!
• [f(X)(X:i) f(Y )]X≺≺Y∅ [f(X)(X:i) f(3)].X
f≺≺YXf ∧X≺≺YXX ∧X≺≺YXX ∧ f≺≺Y∅ f ∧ Y≺≺Y∅ 3 OK!!
154– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 381: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/381.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 382: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/382.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
Solve cons(T X nil(T)) ≺≺X∅ cons(T 3 nil(T))
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 383: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/383.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
Solve cons(T X nil(T)) ≺≺X∅ cons(T 3 nil(T))
X ≺≺X∅ 3 ∧T≺≺X
∅ T OK!! with σ = 3/X
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 384: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/384.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
Solve cons(T X nil(T)) ≺≺X∅ cons(T 3 nil(T))
X ≺≺X∅ 3 ∧T≺≺X
∅ T OK!! with σ = 3/X
• (cons(T X nil(T)) _(X:i) X) cons(i 3 nil(i))
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 385: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/385.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
Solve cons(T X nil(T)) ≺≺X∅ cons(T 3 nil(T))
X ≺≺X∅ 3 ∧T≺≺X
∅ T OK!! with σ = 3/X
• (cons(T X nil(T)) _(X:i) X) cons(i 3 nil(i))
Solve cons(T X nil(T)) ≺≺X∅ cons(i 3 nil(i))
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 386: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/386.jpg)
155
Two Easy Running
• (cons(T X nil(T)) _(X:i) X) cons(T 3 nil(T))
Solve cons(T X nil(T)) ≺≺X∅ cons(T 3 nil(T))
X ≺≺X∅ 3 ∧T≺≺X
∅ T OK!! with σ = 3/X
• (cons(T X nil(T)) _(X:i) X) cons(i 3 nil(i))
Solve cons(T X nil(T)) ≺≺X∅ cons(i 3 nil(i))
X≺≺X∅ 3 ∧T≺≺X
∅ i KO!!
155– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 387: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/387.jpg)
156
P2TS
Type System
156– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 388: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/388.jpg)
157
The Type System I
(s1, s2) ∈〉A∅ ` s1 : s2
(Axioms)
157– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 389: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/389.jpg)
157
The Type System I
(s1, s2) ∈〉A∅ ` s1 : s2
(Axioms)
Γ ` A : C Γ ` B : CΓ ` A,B : C (Struct)
157– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 390: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/390.jpg)
157
The Type System I
(s1, s2) ∈〉A∅ ` s1 : s2
(Axioms)
Γ ` A : C Γ ` B : CΓ ` A,B : C (Struct)
Γ ` A : s α 6∈ Dom(Γ)Γ, α:A ` α : A (Start)
157– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 391: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/391.jpg)
157
The Type System I
(s1, s2) ∈〉A∅ ` s1 : s2
(Axioms)
Γ ` A : C Γ ` B : CΓ ` A,B : C (Struct)
Γ ` A : s α 6∈ Dom(Γ)Γ, α:A ` α : A (Start)
Γ ` A : B Γ ` C : s α 6∈ Dom(Γ)Γ, α:C ` A : B (Weak)
157– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 392: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/392.jpg)
157
The Type System I
(s1, s2) ∈〉A∅ ` s1 : s2
(Axioms)
Γ ` A : C Γ ` B : CΓ ` A,B : C (Struct)
Γ ` A : s α 6∈ Dom(Γ)Γ, α:A ` α : A (Start)
Γ ` A : B Γ ` C : s α 6∈ Dom(Γ)Γ, α:C ` A : B (Weak)
Γ ` A : B Γ ` C : D B=ρσδCΓ ` A : C (Conv)
157– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 393: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/393.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 394: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/394.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 395: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/395.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C ∆ B]D (Appl)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 396: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/396.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C ∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 397: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/397.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C ∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 398: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/398.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C ∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 399: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/399.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C ∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 400: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/400.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 401: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/401.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 402: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/402.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 403: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/403.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C ∆ B]A : [C ∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 404: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/404.jpg)
158
The Type System II
Γ,∆ ` B : C Γ ` ΠA:∆.C : sΓ ` A _∆ B : ΠA:∆.C (Abs)
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
Γ ` A : ΠC:∆.D Γ,∆ ` C : E Γ ` B : EΓ ` A B : [C∆ B]D (Appl)
Γ,∆ ` A : E Γ,∆ ` C : D Γ ` B : DΓ ` [C∆ B]A : [C∆ B]>E
(Subst)
158– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 405: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/405.jpg)
159
Fetch Your System
Γ ` C : s1 (s1, s2, s3) ∈ RΓ,∆ ` A : C Γ,∆ ` B : s2
Γ ` ΠA:∆.B : s3(Prod)
System Rules
ρ_ (∗, ∗, ∗)ρ2 (∗, ∗, ∗) (2, ∗, ∗)ρω (∗, ∗, ∗) (2,2,2)ρω (∗, ∗, ∗) (∗,2,2) (2,2,2)ρLF (∗, ∗, ∗) (∗,2,2)ρP2 (∗, ∗, ∗) (2, ∗, ∗) (∗,2,2)ρPω (∗, ∗, ∗) (∗,2,2) (2,2,2)ρPω (∗, ∗, ∗) (2, ∗, ∗) (∗,2,2) (2,2,2)
159– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 406: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/406.jpg)
160
P2TS
Typed Examples
160– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 407: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/407.jpg)
161
Example: Simple Type Derivation
Let Γ 4= i:∗, f :ΠZ:Σ.i, 3:i, 4:i, and ∆ 4
=X:i, and Σ 4=Z:i,
...Γ,∆ ` (λ3:∅.3) : Π3:∅.i 5 6
Γ,∆ ` (λ3:∅.3)X : [3∅ X].i
3 (∗, ∗, ∗) ∈ RΓ ` [Z Σ X].i : ∗Γ,∆ ` [3∅ X].i : ∗
Γ ` Πf(X):∆.[3∅ X].i : ∗Γ ` λf(X):∆.(λ3:∅.3)X : Πf(X):∆.[3∅ X].i 3 4
Γ ` (λf(X):∆.(λ3:∅.3)X) f(3) : [f(X)∆ f(3)].[3∅ X].i 1 2
Γ ` (λf(X):∆.(λ3:∅.3)X) f(3) : i
where 14= [f(X)∆ f(3)].[3∅ X].i=ρσδ i, and 2
4= Γ ` i : ∗, and
34= Γ,∆ ` f(X) : [Z Σ X].i, and 4
4= Γ ` f(3) : [Z Σ 3].i, and
54= Γ,∆ ` X : i, and 6
4= Γ,∆ ` 3 : i.
161– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 408: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/408.jpg)
161
Example: Simple Type Derivation
Let Γ 4= i:∗, f :ΠZ:Σ.i, 3:i, 4:i, and ∆ 4
=X:i, and Σ 4=Z:i,
...Γ,∆ ` (λ3:∅.3) : Π3:∅.i 5 6
Γ,∆ ` (λ3:∅.3)X : [3∅ X].i
3 (∗, ∗, ∗) ∈ RΓ ` [Z Σ X].i : ∗Γ,∆ ` [3∅ X].i : ∗
Γ ` Πf(X):∆.[3∅ X].i : ∗Γ ` λf(X):∆.(λ3:∅.3)X : Πf(X):∆.[3∅ X].i 3 4
Γ ` (λf(X):∆.(λ3:∅.3)X) f(3) : [f(X)∆ f(3)].[3∅ X].i 1 2
Γ ` (λf(X):∆.(λ3:∅.3)X) f(3) : i
where 14= [f(X)∆ f(3)].[3∅ X].i=ρσδ i, and 2
4= Γ ` i : ∗, and
34= Γ,∆ ` f(X) : [Z Σ X].i, and 4
4= Γ ` f(3) : [Z Σ 3].i, and
54= Γ,∆ ` X : i, and 6
4= Γ,∆ ` 3 : i.
161– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 409: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/409.jpg)
162
Playing with the Rho-cube: ρLF
• Let Γ 4= i:∗, f :ΠX:(X:i).∗, 3:i
Γ, X:i ` X : i Γ ` i : ∗ Γ, X:i ` ∗ : 2
Γ ` ΠX:(X:i).∗ : 2
Γ ` f : ΠX:(X:i).∗ Γ, X:i ` X : i Γ ` 3 : iΓ ` f(3) : [X (X:i) 3]>∗ ≡ ∗
• Γ ` ΠX:(X:i).∗ : 2 can be derived thanks to the specific rule (∗,2,2)
162– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 410: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/410.jpg)
163
Playing with the Rho-cube: ρ2
• In this system the following polymorphic identity with pattern f” can bederived (where f denotes fX∗_X∗
):
` ∗ : 2` X∗ : ∗
` Y X∗: X∗
(Conv+Appl)...
` f(Y X∗) : X∗
` ∗ : 2` X∗ : ∗
` ∗ : 2` X∗ : ∗
X:∗, Y :X ` f(Y X∗) _ X : ∗
` f(Y X∗) _ Y X∗
: f(Y X∗) _ X∗
` ∗ : 2` X∗ : ∗ ` ∗ : 2
ok!...
` f(Y X∗) _ X∗ : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ Y X∗
: X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
163– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 411: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/411.jpg)
163
Playing with the Rho-cube: ρ2
• In this system the following polymorphic identity with pattern f” can bederived (where f denotes fX∗_X∗
):
` ∗ : 2` X∗ : ∗
` Y X∗: X∗
(Conv+Appl)...
` f(Y X∗) : X∗
` ∗ : 2` X∗ : ∗
` ∗ : 2` X∗ : ∗
X:∗, Y :X ` f(Y X∗) _ X : ∗
` f(Y X∗) _ Y X∗
: f(Y X∗) _ X∗
` ∗ : 2` X∗ : ∗ ` ∗ : 2
ok!...
` f(Y X∗) _ X∗ : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ Y X∗
: X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
• X:∗, Y :X ` f(Y X∗) _ X : ∗ can be derived thanks to (∗, ∗, ∗)
163– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 412: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/412.jpg)
163
Playing with the Rho-cube: ρ2
• In this system the following polymorphic identity with pattern f” can bederived (where f denotes fX∗_X∗
):
` ∗ : 2` X∗ : ∗
` Y X∗: X∗
(Conv+Appl)...
` f(Y X∗) : X∗
` ∗ : 2` X∗ : ∗
` ∗ : 2` X∗ : ∗
X:∗, Y :X ` f(Y X∗) _ X : ∗
` f(Y X∗) _ Y X∗
: f(Y X∗) _ X∗
` ∗ : 2` X∗ : ∗ ` ∗ : 2
ok!...
` f(Y X∗) _ X∗ : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
X:∗, Y :X ` X∗ _ f(Y X∗) _ Y X∗
: X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗
• X:∗, Y :X ` f(Y X∗) _ X : ∗ can be derived thanks to (∗, ∗, ∗)
• X:∗, Y :X ` X∗ _ f(Y X∗) _ X : ∗ can be derived thanks to (2, ∗, ∗)
163– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 413: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/413.jpg)
164
P2TS
MetatheoryCONCLUSIONS
164– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 414: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/414.jpg)
165
P2TS: Some Results
• Confluence The relation 7→ρσδ is confluent
• Subject Reduction. If Γ ` A : B, and A 7→ρσδ C, then Γ ` C : B
165– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 415: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/415.jpg)
165
P2TS: Some Results
• Confluence The relation 7→ρσδ is confluent
• Subject Reduction. If Γ ` A : B, and A 7→ρσδ C, then Γ ` C : B
• Consistency. Any normalizing P2TS is logically consistent, i.e.for every sort s ∈ S, X:s 6` A : X
• Conservativity. P2TSs are a conservative extension of PTSs:
Γ `PTS A : B ⇐⇒ Γ† `P2T S A† : B†
165– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 416: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/416.jpg)
166
Open Tracks
• strong normalization, we conjecture that standard model constructiontechniques can be used to prove strong normalization of the λ
-cube;
• type checking/inference, we conjecture that existing algorithms for PTSs adaptreadily to P2TSs;
• it would be interesting to study P2TSs with a limited form of decidablehigher-order unification, in the style of λ-Prolog;
• encoding dependent case analysis, dependent sum types (records) a laCoquand-Pollack-Luo;
• explicit substitutions. The extension is not trivial, because of delayed matchingconstraints, but the resulting formalism could serve as the core engine of alittle type-checker underneath of a powerful proof assistant;
166– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 417: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/417.jpg)
167
Challenge ... Extending the Curry-Howard Isomorphism
• The extension can be considered from the point of view of sequent calculi,deduction modulo, and natural deduction respectively;
• From the point of view of sequent calculi, it remains to investigate how P2TSscan be used to extend previous results on term calculi for sequent calculi, andhow their extension with matching theories can be used to provide suitableterm calculi for deduction modulo;
• From the point of view of natural deduction, P2TSs correspond to an extensionof natural deduction where parts of proof trees are discharged instead ofassumptions;
• To our best knowledge, such an extended form of natural deduction has notbeen considered previously, but it seems interesting to investigate whether suchan extended natural deduction could find some applications in proof assistants,e.g. for transforming and optimizing proofs.
167– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 418: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/418.jpg)
168
Logics and Rho a la Church
The relation with (intuitionistic) logic through the so-called Curry-Howardisomorphism, or ‘formulae-as-types’ principle, has been profoundly studied forLambda. However, for Rho a laChurch, this relation is less clear, as demonstratedby the authors. The principle could be adapted as follows:
Given a typed term A, if we can derive for A a type τ in the typed systemRho, with a derivation DerT, then the term A can be seen as the codingof a logical proof, proving the formula ϕ that can be interpreted as thetype τ assigned to A.
168– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 419: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/419.jpg)
169
Curry from Church
For those systems, if DerT is a typed derivation, and L−M is the above meant
erasing function, then by applying L−M to the “subject” of every judgment in
DerT, we obtain a valid type assignment derivation DerU with the same structure
of the typed one. Vice versa, every type assignment derivation can be viewed as
the result of an application of L−M to a typed one. In particular, the erasing
function L−M induces an isomorphism between every typed system and the
corresponding type assignment system.
LfM 4= f
LXM 4= X
LA τM 4= LAM
L[P ∆ A].BM 4= [P LAM].LBM
LP _∆ AM 4= P _ LAM
LA BM 4= LAM LBM
LA,BM 4= LAM, LBM
169– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 420: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/420.jpg)
170
Logics and Rho a la Curry
For the type assignment system Rho the relation with logic is less clear even forthe corresponding type assignments for the Lambda. The ‘formulae-as-types’principle of Curry and Howard could be extended to the above type assignmentsystems as follows:
Given an untyped term U , if we can assign a type τ in the type assignmentsystem Rho, with a derivation DerU, then:
• DerU can be interpreted as the coding of a proof for the logic formulasϕ which corresponds to the interpretation of the type τ assigned to U ;
• U can be interpreted as the coding of a “logical proof schema”, whoseinstances (of the schema) prove, respectively, all the logic formulasϕi’s that can be interpreted as the types τi’s that can be assignedto U .
170– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 421: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/421.jpg)
171
Typed and Untyped Judgments and Derivations
DerT DerULDerUM−1
Γ `U LAM : τΓ `T A : τ-
L·M
L·M−1
LDerM
-
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LLL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LL
LLL
171– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 422: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/422.jpg)
172
Thanks for youρ attention ...
λ_
6
-
>λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
172– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 423: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/423.jpg)
172
Thanks for youρ attention ...
λ_
6
-
>λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
172– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 424: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/424.jpg)
172
Thanks for youρ attention ...
λ_
6
-
>λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
172– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 425: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/425.jpg)
173
The Uncle Pat and the Lady Match
+ = P2TS
173– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems
![Page 426: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/426.jpg)
Imperative Rewriting Calculus
PPDP-04
![Page 427: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/427.jpg)
175
iRho
Motivations
175– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 428: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/428.jpg)
176
Multiparadigm
• Rewriting-based languages (like, e.g. ELAN, Maude) try to unify the logicparadigm with the functional paradigm.
176– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 429: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/429.jpg)
176
Multiparadigm
• Rewriting-based languages (like, e.g. ELAN, Maude) try to unify the logicparadigm with the functional paradigm.
• Although these languages are less used in common practice than e.g.object-oriented languages (like, e.g., Java, C#, O’Caml, . . . ), they can beused also as (formal) common intermediate languages for implementingcompilers for rewriting-based, functional, object-oriented, logic, and others“high-level” modern languages and meta languages.
176– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 430: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/430.jpg)
177
Main Atout: Pattern Matching.
• Pattern-matching allows to discriminate between alternatives. Once a patternis recognized, a pattern is associated to an action. The corresponding patternis thus rewritten in an appropriate instance of a new one
• Ability to handle a collection of results: pattern matching need not to beexclusive, i.e. multiple branches can be “fired” simultaneously
• An empty collection of results represents an application failure, a singletonrepresents a deterministic result, and a collection with more than one elementrepresents a non-deterministic choice between the elements of the collection
177– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 431: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/431.jpg)
177
Main Atout: Pattern Matching.
• Pattern-matching allows to discriminate between alternatives. Once a patternis recognized, a pattern is associated to an action. The corresponding patternis thus rewritten in an appropriate instance of a new one
• Ability to handle a collection of results: pattern matching need not to beexclusive, i.e. multiple branches can be “fired” simultaneously
• An empty collection of results represents an application failure, a singletonrepresents a deterministic result, and a collection with more than one elementrepresents a non-deterministic choice between the elements of the collection
• Applications: pattern recognition, strings or trees manipulation, etc
• Pattern-matching present in ML, Haskell, Scheme, or Prolog; considered aconvenient mechanism for expressing complex requirements about thefunction’s argument, rather than a basis for an ad hoc paradigm of computation
177– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 432: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/432.jpg)
178
Rho’s Goodies
• One of the main features of the Rewriting-calculus is its capacity to deal with(de)structuring structures like e.g. lists: we record only the names of theconstructor and we discard those of the accessors
• Since structures are built-in the calculus, it follows that the encoding ofconstructor/accessors is simpler w.r.t. the standard encoding in theLambda-calculus. The table below (informally) compares the (untyped)encoding of accessors in both formalisms
ops/form Rewriting-calculus Lambda-calculus
cons X _ Y _ (cons X Y ) λXYZ. ZXY
car (cons X Y ) _ X λZ. Z(λXY.X)cdr (cons X Y ) _ Y λZ. Z(λXY.Y )
178– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 433: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/433.jpg)
179
iRho vs. Programming
• iRho is an extension of Rho with references, memory allocation, andassignment. It features, all the “idiosyncrasies” of functional/rewriting-basedlanguages with imperative features and modern pattern matching facilities
179– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 434: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/434.jpg)
179
iRho vs. Programming
• iRho is an extension of Rho with references, memory allocation, andassignment. It features, all the “idiosyncrasies” of functional/rewriting-basedlanguages with imperative features and modern pattern matching facilities
• The controlled and conscious use of references, gives to the user theprogramming comfort and a good expressiveness which we could not a prioriexpect from a so simple calculus
179– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 435: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/435.jpg)
179
iRho vs. Programming
• iRho is an extension of Rho with references, memory allocation, andassignment. It features, all the “idiosyncrasies” of functional/rewriting-basedlanguages with imperative features and modern pattern matching facilities
• The controlled and conscious use of references, gives to the user theprogramming comfort and a good expressiveness which we could not a prioriexpect from a so simple calculus
• The “magic ingredients” of iRho are the combination of modern and safeimperative features (full control over internal data-structure reprs), and of the“matching power” (full Lisp-like operations, like cons/car/cdr)
179– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 436: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/436.jpg)
179
iRho vs. Programming
• iRho is an extension of Rho with references, memory allocation, andassignment. It features, all the “idiosyncrasies” of functional/rewriting-basedlanguages with imperative features and modern pattern matching facilities
• The controlled and conscious use of references, gives to the user theprogramming comfort and a good expressiveness which we could not a prioriexpect from a so simple calculus
• The “magic ingredients” of iRho are the combination of modern and safeimperative features (full control over internal data-structure reprs), and of the“matching power” (full Lisp-like operations, like cons/car/cdr)
• insumma, iRho as theoretical engine for an family of ad hoc languagescombining functions, patterns, objects with semi-structured XML-data(XDUCE, CDUCE, HYDROJ, TOM) (“...O-O pattern matching focuses on theessential information in a msg and is insensitive to inessential information...”)
179– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 437: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/437.jpg)
180
A “Fresh” Approach to Rewriting
• We present an imperative fully typed (e.g. a la Church) version of the Rho, apattern-matching based calculus with side-effects, which we call iRho
• We formulate the static and dynamic semantics of iRho
• A call-by-value deterministic Natural Semantics a la Kahn: it immediatelysuggests how to build an interpreter for the calculus
• The static semantics is given via a first-order type system based on a form ofproduct-types reflecting the (non-commutative) structure of the term
180– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 438: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/438.jpg)
180
A “Fresh” Approach to Rewriting
• We present an imperative fully typed (e.g. a la Church) version of the Rho, apattern-matching based calculus with side-effects, which we call iRho
• We formulate the static and dynamic semantics of iRho
• A call-by-value deterministic Natural Semantics a la Kahn: it immediatelysuggests how to build an interpreter for the calculus
• The static semantics is given via a first-order type system based on a form ofproduct-types reflecting the (non-commutative) structure of the term
• Access and modify a (monomorphic) typed store, and define fixpoints, controlstructures, ...
• iRho enjoys determinism of the interpreter, subject reduction, and decidabilityof type-checking (completely checked by a machine assisted approach, usingthe Coq proof assistant). Progress and decidability of type-checking are provedby pen and paper
180– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 439: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/439.jpg)
181
Special Emphasis (iRho)
• A special emphasis has been put in our work on the design of thestatic/dynamic semantics. We always had in mind the main objectives of aconscious implementor
181– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 440: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/440.jpg)
181
Special Emphasis (iRho)
• A special emphasis has been put in our work on the design of thestatic/dynamic semantics. We always had in mind the main objectives of aconscious implementor
? a “sound” machine (the interpreter)? a “sound” type system (the type checker), such that
“well typed programs do not go wrong” [Milner],? both semantics being suitable to be specified with nice mathematics,? to be implemented with high-level programming languages,? and to be certified with modern and semi-automatic theorem provers, like
Coq
181– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 441: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/441.jpg)
181
Special Emphasis (iRho)
• A special emphasis has been put in our work on the design of thestatic/dynamic semantics. We always had in mind the main objectives of aconscious implementor
? a “sound” machine (the interpreter)? a “sound” type system (the type checker), such that
“well typed programs do not go wrong” [Milner],? both semantics being suitable to be specified with nice mathematics,? to be implemented with high-level programming languages,? and to be certified with modern and semi-automatic theorem provers, like
Coq
• Thus, we have encoded in Coq the static and dynamic semantics of iRho
181– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 442: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/442.jpg)
181
Special Emphasis (iRho)
• A special emphasis has been put in our work on the design of thestatic/dynamic semantics. We always had in mind the main objectives of aconscious implementor
? a “sound” machine (the interpreter)? a “sound” type system (the type checker), such that
“well typed programs do not go wrong” [Milner],? both semantics being suitable to be specified with nice mathematics,? to be implemented with high-level programming languages,? and to be certified with modern and semi-automatic theorem provers, like
Coq
• Thus, we have encoded in Coq the static and dynamic semantics of iRho
• All subtle aspects, (usually “swept under the rug”) on the paper, are hereenlightened by the rigid discipline imposed by the Logical Framework of Coq
181– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 443: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/443.jpg)
182
• Often, this process may had a bearing on the design of the static and dynamicsemantics
182– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 444: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/444.jpg)
182
• Often, this process may had a bearing on the design of the static and dynamicsemantics
• This (positive) continuous cycle between mathematics, manual(i.e. pen-and-paper) and mechanical proofs, and “toy”implementations using high-level languages such Scheme (and back) has beenfruitful since the very beginning of our project
182– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 445: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/445.jpg)
182
• Often, this process may had a bearing on the design of the static and dynamicsemantics
• This (positive) continuous cycle between mathematics, manual(i.e. pen-and-paper) and mechanical proofs, and “toy”implementations using high-level languages such Scheme (and back) has beenfruitful since the very beginning of our project
182– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 446: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/446.jpg)
182
• Often, this process may had a bearing on the design of the static and dynamicsemantics
• This (positive) continuous cycle between mathematics, manual(i.e. pen-and-paper) and mechanical proofs, and “toy”implementations using high-level languages such Scheme (and back) has beenfruitful since the very beginning of our project
• Although our calculus is rather simple, it is not impossible, in a near future, toscale-up to larger projects, such as the certified implementation of compilers fora “real” programming language of the C family (Cminor ⊂ C)(Action Recherche Coordonnee INRIA, Concert)
182– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 447: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/447.jpg)
183
iRho
The Syntax
183– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 448: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/448.jpg)
184
First step: Functional fRho
The symbol τ ranges over types, Γ,∆ range over contexts, P ranges over the set
P of pseudo-patterns, (V ⊆ P ⊆ T ), and A,B, . . . range over terms
τ ::= b | τ _ τ | τ ∧ τ Types
∆::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= f | X | f P | P, P Patterns
A ::= f | X | P _∆ A | A A | A,A Terms
184– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 449: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/449.jpg)
184
First step: Functional fRho
The symbol τ ranges over types, Γ,∆ range over contexts, P ranges over the set
P of pseudo-patterns, (V ⊆ P ⊆ T ), and A,B, . . . range over terms
τ ::= b | τ _ τ | τ ∧ τ Types
∆::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= f | X | f P | P, P Patterns
A ::= f | X | P _∆ A | A A | A,A Terms
184– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 450: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/450.jpg)
184
First step: Functional fRho
The symbol τ ranges over types, Γ,∆ range over contexts, P ranges over the set
P of pseudo-patterns, (V ⊆ P ⊆ T ), and A,B, . . . range over terms
τ ::= b | τ _ τ | τ ∧ τ Types
∆::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= f | X | f P | P, P Patterns
A ::= f | X | P _∆ A | A A | A,A Terms
184– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 451: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/451.jpg)
184
First step: Functional fRho
The symbol τ ranges over types, Γ,∆ range over contexts, P ranges over the set
P of pseudo-patterns, (V ⊆ P ⊆ T ), and A,B, . . . range over terms
τ ::= b | τ _ τ | τ ∧ τ Types
∆::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= f | X | f P | P, P Patterns
A ::= f | X | P _∆ A | A A | A,A Terms
184– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 452: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/452.jpg)
184
First step: Functional fRho
The symbol τ ranges over types, Γ,∆ range over contexts, P ranges over the set
P of pseudo-patterns, (V ⊆ P ⊆ T ), and A,B, . . . range over terms
τ ::= b | τ _ τ | τ ∧ τ Types
∆::= ∅ | ∆, X:τ | ∆, f :τ Contexts
P ::= f | X | f P | P, P Patterns
A ::= f | X | P _∆ A | A A | A,A Terms
184– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 453: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/453.jpg)
185
Second step: Imperative iRho
The symbol P ranges over the set P of pseudo-patterns, (V ⊆ P ⊆ T ).
τ ::= . . . as in fRho . . . | τ ref Types
∆::= . . . as in fRho . . . Contexts
P ::= . . . as in fRho . . . | ref P Patterns
A ::= . . . as in fRho . . . | ref A | !A | A := A Terms
185– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 454: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/454.jpg)
185
Second step: Imperative iRho
The symbol P ranges over the set P of pseudo-patterns, (V ⊆ P ⊆ T ).
τ ::= . . . as in fRho . . . | τ ref Types
∆::= . . . as in fRho . . . Contexts
P ::= . . . as in fRho . . . | ref P Patterns
A ::= . . . as in fRho . . . | ref A | !A | A := A Terms
185– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 455: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/455.jpg)
185
Second step: Imperative iRho
The symbol P ranges over the set P of pseudo-patterns, (V ⊆ P ⊆ T ).
τ ::= . . . as in fRho . . . | τ ref Types
∆::= . . . as in fRho . . . Contexts
P ::= . . . as in fRho . . . | ref P Patterns
A ::= . . . as in fRho . . . | ref A | !A | A := A Terms
185– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 456: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/456.jpg)
185
Second step: Imperative iRho
The symbol P ranges over the set P of pseudo-patterns, (V ⊆ P ⊆ T ).
τ ::= . . . as in fRho . . . | τ ref Types
∆::= . . . as in fRho . . . Contexts
P ::= . . . as in fRho . . . | ref P Patterns
A ::= . . . as in fRho . . . | ref A | !A | A := A Terms
185– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 457: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/457.jpg)
185
Second step: Imperative iRho
The symbol P ranges over the set P of pseudo-patterns, (V ⊆ P ⊆ T ).
τ ::= . . . as in fRho . . . | τ ref Types
∆::= . . . as in fRho . . . Contexts
P ::= . . . as in fRho . . . | ref P Patterns
A ::= . . . as in fRho . . . | ref A | !A | A := A Terms
185– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 458: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/458.jpg)
186
iRho in a glance
Intuitively iRho deals with references a la Caml i.e.:
• (Deref-types) The type τ ref is the type of “refs” containing a value of type τ
• (Deref-op) The operator ! is a “dereferencing” operator (goto memory)
• (Ref-op) The operator ref is a “referencing” operator (malloc)
• (Assign) The term A := B is an “assignment” operator, which returns asresult the value obtained by evaluating B.
We have not (yet) modeled garbage collection: new locations created duringreduction will remain in the store forever
186– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 459: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/459.jpg)
187
Simple, Naıve GC (by Talcott, Mason, Morrissett, et al.)
for i < nletrec x_1 = ref V_1
and ...and x_n = ref V_nin A
-->letrec x_1 = ref V_1
and ...and x_i = ref V_iin A
if FV(V_1, ..., V_i)/\ x_(i+1), ..., x_n = 0
187– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 460: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/460.jpg)
188
Let-like and conditionals (in a call-by value setting)
As usual, let-like constructs can be generalized with pattern and becomes simple
syntactic sugar for applications (types are omitted), i.e.
let P A in B 4= (P _ B) A
Conditional too can be easily encoded using pair, applications, and constants, i.e.
⇐⇒ A thenB else C 4= (true _ B, false _ C) A
and
neg 4= (true _ false, false _ true)
188– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 461: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/461.jpg)
189
Values and Environments in fRho
• We introduce the set Val of values and the set of environments Env
Av ::= f | f Av | Av, Av | 〈P _∆ A · ρ〉︸ ︷︷ ︸fun closures
| 〈[P ∆ Av].B · ρ〉︸ ︷︷ ︸fail closures
Functional Values
• Environments are partial functions from the set of variables to the set of values
ρ[X 7→ Av](Y ) 4=
Av if X ≡ Yρ(Y ) otherwise
• “Failure-values” 〈[P ∆ Av].B · ρ〉 denote failure occurring when we cannotfound a correct substitution θ on the free variables of P such that θ(P ) ≡ Av;Failure-values are obtained during the computation when a matching failureoccurs. It could (in principle) be caught by a suitable exception handler
189– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 462: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/462.jpg)
189
Values and Environments in fRho
• We introduce the set Val of values and the set of environments Env
Av ::= f | f Av | Av, Av | 〈P _∆ A · ρ〉︸ ︷︷ ︸fun closures
| 〈[P ∆ Av].B · ρ〉︸ ︷︷ ︸fail closures
Functional Values
• Environments are partial functions from the set of variables to the set of values
ρ[X 7→ Av](Y ) 4=
Av if X ≡ Yρ(Y ) otherwise
• “Failure-values” 〈[P ∆ Av].B · ρ〉 denote failure occurring when we cannotfound a correct substitution θ on the free variables of P such that θ(P ) ≡ Av;Failure-values are obtained during the computation when a matching failureoccurs. It could (in principle) be caught by a suitable exception handler
189– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 463: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/463.jpg)
189
Values and Environments in fRho
• We introduce the set Val of values and the set of environments Env
Av ::= f | f Av | Av, Av | 〈P _∆ A · ρ〉︸ ︷︷ ︸fun closures
| 〈[P ∆ Av].B · ρ〉︸ ︷︷ ︸fail closures
Functional Values
• Environments are partial functions from the set of variables to the set of values
ρ[X 7→ Av](Y ) 4=
Av if X ≡ Yρ(Y ) otherwise
• “Failure-values” 〈[P ∆ Av].B · ρ〉 denote failure occurring when we cannotfound a correct substitution θ on the free variables of P such that θ(P ) ≡ Av;Failure-values are obtained during the computation when a matching failureoccurs. It could (in principle) be caught by a suitable exception handler
189– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 464: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/464.jpg)
190
Values and Stores in iRho
• The new set of values is enriched by locations. Moreover we define the set of
global stores Store (the symbol σ ranges over stores)
Av ::= . . . as in fRho . . . | ι︸︷︷︸locations
Imperative Values
• Stores are partial functions from the set L of locations to the set of values
σ[ι1 7→ Av](ι2) 4=
Av if ι1 ≡ ι2σ(ι2) otherwise
190– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 465: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/465.jpg)
190
Values and Stores in iRho
• The new set of values is enriched by locations. Moreover we define the set of
global stores Store (the symbol σ ranges over stores)
Av ::= . . . as in fRho . . . | ι︸︷︷︸locations
Imperative Values
• Stores are partial functions from the set L of locations to the set of values
σ[ι1 7→ Av](ι2) 4=
Av if ι1 ≡ ι2σ(ι2) otherwise
190– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 466: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/466.jpg)
190
Values and Stores in iRho
• The new set of values is enriched by locations. Moreover we define the set of
global stores Store (the symbol σ ranges over stores)
Av ::= . . . as in fRho . . . | ι︸︷︷︸locations
Imperative Values
• Stores are partial functions from the set L of locations to the set of values
σ[ι1 7→ Av](ι2) 4=
Av if ι1 ≡ ι2σ(ι2) otherwise
190– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 467: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/467.jpg)
191
Natural Semantics for fRho
• We define a call-by-value optimistic operational semantics via a natural proofdeduction system a la Gilles Kahn (induces quasi directly an “interpretermachine”)
• The purpose of the deduction system is to map every expression into a normalform, i.e. an irreducible term in weak head normal form. The present strategyis call-by-value since it does not work under plain abstractions (i.e. P _∆ A)
• The present interpreter machine is optimistic since it gives a result if at leastone computation does not produce a failure-value: of course other choices arepossible, like e.g. a “pessimistic” machine which stops if at least onefailure-value occurs
191– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 468: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/468.jpg)
192
Natural Semantics (NS) in a Nutshell
• Variant of Plotkin’s Structured Operational Semantics (SOS)
• The semantics induces quasi directly an Interpreter. Judgments are:
premisesi i ≥ 0store · env ` expr ⇓val value · store′
(expr·rule)
premisesi i ≥ 0store ` 〈Av ·Av〉 ⇓call value · store′
(appl·case)
premisesi i ≥ 0store · env ` 〈A ·Av〉 ⇓match env′
(patt·case)
192– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 469: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/469.jpg)
193
Optimistic- vs. Pessimistic-machinesOur machine is optimistic, i.e. it does not abort computations if a matching
failure occurs, recording that one computation goes wrong, and hoping that at
least one computation succeeds. The choice of killing the computation once a
failure-value is produced leads to a pessimistic machine
· · ·· · · ` (3 _ 3, 4 _ 4) 4 ⇓val 〈[3 4].3 · ∅〉, 4︸ ︷︷ ︸
fail+4
· · · (Opt)
· · ·· · · ` (3 _ 3, 4 _ 4) 4 ⇓val 〈[3 4].3 · ∅〉︸ ︷︷ ︸
just fail
· · · (Pex)
A pessimistic-machine can be quite easily produced “trucking” an optimistic oneby propagating failure-values
193– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 470: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/470.jpg)
194
Just try before I tell you the full story ...
• Take the imperative term (types omitted)
A 4= (f(X,Y )︸ ︷︷ ︸
pattern
_ (3 _ (X := !Y )) !X) f(ref 3, ref 4)︸ ︷︷ ︸argument
• We evaluate this term in the empty store ∅ and the empty environment ∅
• The result would be?
∅ · ∅ ` A ⇓val
194– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 471: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/471.jpg)
194
Just try before I tell you the full story ...
• Take the imperative term (types omitted)
A 4= (f(X,Y )︸ ︷︷ ︸
pattern
_ (3 _ (X := !Y )) !X) f(ref 3, ref 4)︸ ︷︷ ︸argument
• We evaluate this term in the empty store ∅ and the empty environment ∅
• The result would be?
∅ · ∅ ` A ⇓val
194– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 472: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/472.jpg)
194
Just try before I tell you the full story ...
• Take the imperative term (types omitted)
A 4= (f(X,Y )︸ ︷︷ ︸
pattern
_ (3 _ (X := !Y )) !X) f(ref 3, ref 4)︸ ︷︷ ︸argument
• We evaluate this term in the empty store ∅ and the empty environment ∅
• The result would be?
∅ · ∅ ` A ⇓val 4 ·
194– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 473: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/473.jpg)
194
Just try before I tell you the full story ...
• Take the imperative term (types omitted)
A 4= (f(X,Y )︸ ︷︷ ︸
pattern
_ (3 _ (X := !Y )) !X) f(ref 3, ref 4)︸ ︷︷ ︸argument
• We evaluate this term in the empty store ∅ and the empty environment ∅
• The result would be?
∅ · ∅ ` A ⇓val 4 · [ι0 7→ 4,
194– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 474: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/474.jpg)
194
Just try before I tell you the full story ...
• Take the imperative term (types omitted)
A 4= (f(X,Y )︸ ︷︷ ︸
pattern
_ (3 _ (X := !Y )) !X) f(ref 3, ref 4)︸ ︷︷ ︸argument
• We evaluate this term in the empty store ∅ and the empty environment ∅
• The result would be?
∅ · ∅ ` A ⇓val 4 · [ι0 7→ 4, ι1 7→ 4]
194– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 475: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/475.jpg)
195
iRho
Natural Semantics
195– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 476: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/476.jpg)
196
Natural Judgments in iRho
• The semantics is given in terms of three judgments
σ · ρ ` A ⇓val Av · σ′
σ ` 〈Av ·Bv〉 ⇓call Cv · σ′
σ · ρ ` 〈A ·Av〉 ⇓match ρ′
• The first judgment evaluates a term in iRho, the second apply one value toanother producing a result value and a new store, and the last judgmentupdates a correct environment obtained by matching a term against a value
196– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 477: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/477.jpg)
197
iRho:
⇓val
197– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 478: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/478.jpg)
198
⇓val: Application and Structures
σ0 · ρ ` A ⇓val Av · σ1
σ1 · ρ ` B ⇓val Bv · σ2
σ2 ` 〈Av ·Bv〉 ⇓call Cv · σ3
σ0 · ρ ` A B ⇓val Cv · σ3(Red−ρv)
198– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 479: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/479.jpg)
198
⇓val: Application and Structures
σ0 · ρ ` A ⇓val Av · σ1
σ1 · ρ ` B ⇓val Bv · σ2
σ2 ` 〈Av ·Bv〉 ⇓call Cv · σ3
σ0 · ρ ` A B ⇓val Cv · σ3(Red−ρv)
σ0 · ρ ` A ⇓val Av · σ1
σ1 · ρ ` B ⇓val Bv · σ2
σ0 · ρ ` A,B ⇓val Av, Bv · σ2(Red−Struct)
198– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 480: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/480.jpg)
199
⇓val: Functions, Values, Variables
σ · ρ ` P _∆ A ⇓val 〈P _∆ A · ρ〉 · σ (Red−Fun)
199– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 481: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/481.jpg)
199
⇓val: Functions, Values, Variables
σ · ρ ` P _∆ A ⇓val 〈P _∆ A · ρ〉 · σ (Red−Fun)
σ · ρ ` f ⇓val f · σ (Red−v)
199– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 482: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/482.jpg)
199
⇓val: Functions, Values, Variables
σ · ρ ` P _∆ A ⇓val 〈P _∆ A · ρ〉 · σ (Red−Fun)
σ · ρ ` f ⇓val f · σ (Red−v)
X ∈ Dom(ρ)σ · ρ ` X ⇓val ρ(X) · σ (Red−Var)
199– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 483: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/483.jpg)
200
⇓val: Referencing, Dereferencing, Assignment
σ0 · ρ ` A ⇓val Av · σ1 ι /∈ Dom(σ1)σ0 · ρ ` ref A ⇓val ι · σ1[ι 7→ Av]
(Red−ref )
200– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 484: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/484.jpg)
200
⇓val: Referencing, Dereferencing, Assignment
σ0 · ρ ` A ⇓val Av · σ1 ι /∈ Dom(σ1)σ0 · ρ ` ref A ⇓val ι · σ1[ι 7→ Av]
(Red−ref )
σ0 · ρ ` A ⇓val ι · σ1 ι ∈ Dom(σ1)σ0 · ρ ` !A ⇓val σ1(ι) · σ1
(Red−!)
200– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 485: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/485.jpg)
200
⇓val: Referencing, Dereferencing, Assignment
σ0 · ρ ` A ⇓val Av · σ1 ι /∈ Dom(σ1)σ0 · ρ ` ref A ⇓val ι · σ1[ι 7→ Av]
(Red−ref )
σ0 · ρ ` A ⇓val ι · σ1 ι ∈ Dom(σ1)σ0 · ρ ` !A ⇓val σ1(ι) · σ1
(Red−!)
ι ∈ Dom(σ1)σ0 · ρ ` A ⇓val ι · σ1 σ1 · ρ ` B ⇓val Bv · σ2
σ0 · ρ ` A := B ⇓val Bv · σ2[ι 7→ Bv](Red−:=)
200– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 486: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/486.jpg)
201
iRho:
⇓call
201– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 487: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/487.jpg)
202
⇓call: FunOk, FunKO
σ0 · ρ0 ` 〈P ·Bv〉 ⇓match ρ1
σ0 · ρ1 ` A ⇓val Av · σ1
σ0 ` 〈〈P :∆ _ A · ρ〉 ·Bv〉 ⇓call Av · σ1(Call−FunOk)
202– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 488: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/488.jpg)
202
⇓call: FunOk, FunKO
σ0 · ρ0 ` 〈P ·Bv〉 ⇓match ρ1
σ0 · ρ1 ` A ⇓val Av · σ1
σ0 ` 〈〈P :∆ _ A · ρ〉 ·Bv〉 ⇓call Av · σ1(Call−FunOk)
@ρ1. σ · ρ0 ` 〈P ·Bv〉 ⇓match ρ1
Av ≡ 〈P :∆ _ A · ρ〉σ ` 〈Av ·Bv〉 ⇓call Av · σ
(Call−FunKo)
202– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 489: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/489.jpg)
203
⇓call: Structure, Algebric, and Wrong
σ0 ` 〈Av · Cv〉 ⇓call Dv · σ1
σ1 ` 〈Bv · Cv〉 ⇓call Ev · σ2
σ0 ` 〈(Av, Bv) · Cv〉 ⇓call Dv, Ev · σ2(Call−Struct)
203– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 490: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/490.jpg)
203
⇓call: Structure, Algebric, and Wrong
σ0 ` 〈Av · Cv〉 ⇓call Dv · σ1
σ1 ` 〈Bv · Cv〉 ⇓call Ev · σ2
σ0 ` 〈(Av, Bv) · Cv〉 ⇓call Dv, Ev · σ2(Call−Struct)
σ ` 〈f Av ·Bv〉 ⇓call f Av Bv · σ(Call−Algbr)
203– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 491: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/491.jpg)
203
⇓call: Structure, Algebric, and Wrong
σ0 ` 〈Av · Cv〉 ⇓call Dv · σ1
σ1 ` 〈Bv · Cv〉 ⇓call Ev · σ2
σ0 ` 〈(Av, Bv) · Cv〉 ⇓call Dv, Ev · σ2(Call−Struct)
σ ` 〈f Av ·Bv〉 ⇓call f Av Bv · σ(Call−Algbr)
Av ≡ 〈[P ∆ Bv].A · ρ〉σ ` 〈Av · Cv〉 ⇓call Av · σ
(Call−Wrong)
203– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 492: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/492.jpg)
204
iRho:
⇓match
204– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 493: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/493.jpg)
205
⇓match: Variables and Constants
σ · ρ ` 〈f · f〉 ⇓match ρ(Match−Const)
205– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 494: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/494.jpg)
205
⇓match: Variables and Constants
σ · ρ ` 〈f · f〉 ⇓match ρ(Match−Const)
σ · ρ ` 〈X ·Av〉 ⇓match ρ[X 7→ Av](Match−Var)
205– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 495: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/495.jpg)
206
⇓match: Structures and References
Let ? ∈ • , σ · ρ0 ` 〈A ·Av〉 ⇓match ρ1
σ · ρ1 ` 〈B ·Bv〉 ⇓match ρ2
σ · ρ0 ` 〈A ? B ·Av ? Bv〉 ⇓match ρ2(Match−Pair)
206– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 496: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/496.jpg)
206
⇓match: Structures and References
Let ? ∈ • , σ · ρ0 ` 〈A ·Av〉 ⇓match ρ1
σ · ρ1 ` 〈B ·Bv〉 ⇓match ρ2
σ · ρ0 ` 〈A ? B ·Av ? Bv〉 ⇓match ρ2(Match−Pair)
ι ∈ Dom(σ) σ(ι) ≡ Av
σ · ρ0 ` 〈P ·Av〉 ⇓match ρ1
σ · ρ0 ` 〈ref P · ι〉 ⇓match ρ1(Match−Ref)
206– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 497: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/497.jpg)
207
Remark: About Linearity
This choice induces also a modification in the classical syntactic pattern matching
algorithm, since we “hide” the first binding in favor of the second one. The
classical syntactic pattern matching algorithm forces both occurrences to be
matchable with the same value. Both solutions are presented in the table below:
patt term hide/Scheme force/ML
f(X,X) f(3, 4) ρ 4= [X 7→ 3][X 7→ 4] @θ
f(X,X) f(4, 4) ρ 4= [X 7→ 4][X 7→ 4] θ 4
= 4/X
Linearity can be easily implemented (much bigger effort in the Coq code)
207– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 498: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/498.jpg)
208
The Uncle Pat and the Lady Match Still at Work...
208– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 499: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/499.jpg)
209
iRho:
Playing with NS
209– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 500: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/500.jpg)
210
An Imperative Natural Derivation
Take the imperative term
(f(X,Y ) _ (3 _ (X := !Y )) !X) f(ref 3, ref 4)
with σ04= [ι0 7→ 3][ι1 7→ 4], and σ1
4=σ0[ι0 7→ 4], and ρ0
4= [X 7→ ι0][Y 7→ ι1].
210– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 501: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/501.jpg)
211
Just a Nice LATEX Exercise
ι0 ∈ Dom(σ0)σ0 · ρ0 ` X ⇓val ι0 · σ0
ι1 ∈ Dom(σ0)σ0 · ρ0 ` Y ⇓val ι1 · σ0
σ0 · ρ0 ` !Y ⇓val 4 · σ0
σ0 · ρ0 ` X := !Y ⇓val 4 · σ1
σ0 · ρ0 ` 〈3 · 3〉 ⇓match ρ0
σ0 ` 〈〈3 _ X := !Y · ρ0〉 · 3〉 ⇓call 4 · σ1
σ0 · ρ0 ` !X ⇓val 3 · σ0
σ0 · ρ0 ` 3 _ X := !Y ⇓val 〈3 _ X := !Y · ρ0〉 · σ0
σ0, ρ0 ` (3 _ X := !Y ) !X ⇓call 4 · σ1
σ0 · ∅ ` 〈f(X,Y ) · f(ι0, ι1)〉 ⇓match ρ0
σ0 · ∅ ` 〈〈(f(X,Y ) _ (3 _ X := !Y ) !X) · ∅〉 · f(ι0, ι1)〉 ⇓call 4 · σ1
∅ · ∅ ` f(ref 3, ref 4) ⇓val f(ι0, ι1) · σ0
∅ · ∅ ` (f(X,Y ) _ (3 _ X := !Y ) !X) ⇓val 〈(f(X,Y ) _ (3 _ X := !Y ) !X) · ∅〉 · ∅∅ · ∅ ` (f(X,Y ) _ (3 _ X := !Y ) !X) f(ref 3, ref 4) ⇓val 4 · σ1
211– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 502: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/502.jpg)
212
Aliases
let P A in B 4= (P _ B) A
⇐⇒ A thenB else C 4= (true _ B, false _ C) A
neg 4= (true _ false, false _ true)
A ;B 4= (X _ B) A X 6∈ FVar(B)
(X1, . . . Xn) := (A1, . . . An) 4= X1 := A1 ; . . . ;Xn := An
!A 4= (refX _ X) A
212– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 503: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/503.jpg)
212
Aliases
let P A in B 4= (P _ B) A
⇐⇒ A thenB else C 4= (true _ B, false _ C) A
neg 4= (true _ false, false _ true)
A ;B 4= (X _ B) A X 6∈ FVar(B)
(X1, . . . Xn) := (A1, . . . An) 4= X1 := A1 ; . . . ;Xn := An
!A 4= (refX _ X) A
Very good, dereferencing is just sugar!
212– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 504: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/504.jpg)
213
iRho:
iExamples
213– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 505: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/505.jpg)
214
Computing a Negation Normal Form
This function is used in implementing decision procedures, present in almost all
model checkers. The processed input is a implication-free languages of formulas
with generating grammar:
φ ::= p | and(φ, φ) | or(φ, φ) | not(φ)
We present two imperative encodings: in the first, the function is shared via apointer and recursion is achieved via dereferencing. In the second, formulas areshared too with back-pointers to shared-subtrees. Type decorations are omitted
214– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 506: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/506.jpg)
215
Imperative, I
This imperative encoding uses a variable SELF which contains a pointer to therecursive code: here the recursion is achieved directly via pointer dereferencing,assignment and classical imperative fixed-point in order to implement recursion.Given the constant dummy, the function nnf1 is defined as
nnf14=
p _ p,
not(not(X)) _ !SELF(X),not(or(X,Y)) _ and(!SELF(not(X)), !SELF(not(Y))),not(and(X,Y)) _ or(!SELF(not(X)), !SELF(not(Y))),and(X,Y) _ and(!SELF(X), !SELF(Y)),or(X,Y) _ or(!SELF(X), !SELF(Y))
and the imperative encoding is:
let SELF ref dummy in let NNF nnf1 in SELF := NNF;NNF(φ)
215– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 507: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/507.jpg)
216
Imperative-with-Sharing, IS
This encoding uses a variable SELF which contains a pointer to the recursive code
and a flag-pointer to a boolean value associated to each node: all flag-pointers are
initially set to false; each time we scan a (possibly) shared-formulas we set the
corresponding flag-pointer to true. The grammar of shared-formulas is as follows:
bool ::= true | false
flag ::= bool ref
ψ ::= ref φ
φ ::= p | and(flag, ψ, ψ) | or(flag, ψ, ψ) | not(flag, ψ)
216– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 508: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/508.jpg)
217
Imperative-with-Sharing, IS
Given the constant dummy, the structure nnf2 is defined as follows:
p _ p,
not(B1, ref not(B2,X)) _ !SELF(!X),not(B1, ref or(B2,X,Y)) _ and(ref false, !SELF(ref not(ref false,X)),
!SELF(ref not(ref false,Y))),not(B1, ref and(B2,X,Y)) _ or(ref false, !SELF(ref not(ref false,X)),
!SELF(ref not(ref false,Y))),and(B,X,Y) _ ⇐⇒ (neg ref B)
then (B,X,Y) := (true, !SELF(!X), !SELF(!Y))else and(B,X,Y),
or(B,X,Y) _ ⇐⇒ (neg ref B)then (B,X,Y) := (true, !SELF(!X), !SELF(!Y))else or(B,X,Y)
and the imperative encoding is:
let SELF ref dummy in let NNF nnf2 in SELF := NNF;NNF(ψ)
217– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 509: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/509.jpg)
218
iRho
Types
218– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 510: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/510.jpg)
219
Why a type system?
• Our type discipline assigns a semantical meaning to iRho-programs bytype-checking and hence, allows to catch some error before run-time
• The type system is powerful enough to ensure a type consistency, and to give atype to a rich collection of interesting examples, namely decision procedures,meaningful objects, fixed-points, term rewriting systems, etc
• This type system is, in principle, suitable to be extended with a subtypingrelation, or with bounded-polymorphism, to capture the behavior ofstructures-as-objects, and object-oriented features
219– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 511: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/511.jpg)
220
What’s new in this type system
• The main novelty, with respect to previous type systems for the (functional)
fRho is that term-structures can have different types, i.e.
ΓAA : τ1 Γ
AB : τ2
ΓAA,B : τ1 ∧ τ2 (Term−Struct)
• The new kind of type τ1 ∧ τ2 is suitable for heterogeneous (non-commutative)structures, like lists, ordered sets, or objects
• More flexible type discipline, where the structure-type τ1 ∧ τ2 reflects theimplicit non-commutative property of “,” in the term “A,B”, i.e. “A,B” doesnot behave necessarily as “B,A”
• More expressiveness w.r.t. previous typing disciplines on the fRho, in the sensethat it gives a type to terms that will not be stuck at run-time, but itcomplicates the metatheory and the mechanical proof development
220– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 512: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/512.jpg)
221
Type Judgments
Recall Types and Contextsτ ::= b | τ _ τ | τ ∧ τ | τ ref
Γ ::= ∅ | Γ, X:τ | Γ, f :τ
The Type JudgmentsΓ
Γok Γ τ τ : ok Γ v Av : τ
Γ ρ ρ : Γ′ Γ σ σ : Γ′ ΓPP : τ Γ
AA : τ
i.e. well-typed contexts, types, values, environments, stores, patterns, and terms
221– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 513: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/513.jpg)
222
iRho:
ΓPP : τ
222– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 514: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/514.jpg)
223
A: Pattern Rules
Γ1, α:τ,Γ2 Γok
Γ1, α:τ,Γ2 Pα : τ (Patt−Start)
ΓPP1 : τ1 Γ
PP2 : τ2
ΓPP1, P2 : τ1 ∧ τ2 (Patt−Struct)
223– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 515: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/515.jpg)
223
A: Pattern Rules
Γ1, α:τ,Γ2 Γok
Γ1, α:τ,Γ2 Pα : τ (Patt−Start)
ΓPP1 : τ1 Γ
PP2 : τ2
ΓPP1, P2 : τ1 ∧ τ2 (Patt−Struct)
arr(τ1) ≡ τ2 _ τ3 ΓPf P : τ1 Γ
PP : τ2
ΓPf P P : τ3
(Patt−Algbr)
223– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 516: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/516.jpg)
223
A: Pattern Rules
Γ1, α:τ,Γ2 Γok
Γ1, α:τ,Γ2 Pα : τ (Patt−Start)
ΓPP1 : τ1 Γ
PP2 : τ2
ΓPP1, P2 : τ1 ∧ τ2 (Patt−Struct)
arr(τ1) ≡ τ2 _ τ3 ΓPf P : τ1 Γ
PP : τ2
ΓPf P P : τ3
(Patt−Algbr)
arr(τ1 _ τ2) 4=τ1 _ τ2
arr(τ1 ∧ τ2) 4=τ3 _ (τ4 ∧ τ5)
⇐⇒ arr(τ1) ≡ τ3 _ τ4and arr(τ2) ≡ τ3 _ τ5
223– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 517: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/517.jpg)
224
iRho:
ΓAA : τ
224– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 518: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/518.jpg)
225
A: Variables, Constants, and Structures
Γ1, α:τ,Γ2 Γok
Γ1, α:τ,Γ2 Aα : τ (Term−Start)
225– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 519: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/519.jpg)
225
A: Variables, Constants, and Structures
Γ1, α:τ,Γ2 Γok
Γ1, α:τ,Γ2 Aα : τ (Term−Start)
ΓAA : τ1 Γ
AB : τ2
ΓAA,B : τ1 ∧ τ2 (Term−Struct)
225– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 520: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/520.jpg)
226
A: Abstraction and Application
Dom(∆) = FVar(P ) Γ,∆PP : τ1 Γ,∆
AA : τ2
ΓAP _∆ A : τ1 _ τ2
(Term−Abs)
226– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 521: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/521.jpg)
226
A: Abstraction and Application
Dom(∆) = FVar(P ) Γ,∆PP : τ1 Γ,∆
AA : τ2
ΓAP _∆ A : τ1 _ τ2
(Term−Abs)
arr(τ1) ≡ τ2 _ τ3 ΓAA : τ1 Γ
AB : τ2
ΓAA B : τ3
(Term−Appl)
226– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 522: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/522.jpg)
227
A: Assign, Referencing, Dereferencing
ΓAA : τ ref Γ
AB : τ
ΓAA := B : τ (Term−Assign)
227– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 523: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/523.jpg)
227
A: Assign, Referencing, Dereferencing
ΓAA : τ ref Γ
AB : τ
ΓAA := B : τ (Term−Assign)
ΓAA : τ
ΓA
ref A : τ ref(Term−Ref)
227– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 524: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/524.jpg)
227
A: Assign, Referencing, Dereferencing
ΓAA : τ ref Γ
AB : τ
ΓAA := B : τ (Term−Assign)
ΓAA : τ
ΓA
ref A : τ ref(Term−Ref)
ΓAA : τ ref
ΓA
!A : τ (Term−Deref)
227– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 525: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/525.jpg)
228
iRho:
Γ τ v ρ σ
Almost Routine (Hence Omitted)
228– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 526: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/526.jpg)
229
Typing the Two Imperative Encodings
If b type of φ, and b ref type of ψ, and ∧nτ 4=
n︷ ︸︸ ︷τ ∧ · · · ∧ τ
229– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 527: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/527.jpg)
229
Typing the Two Imperative Encodings
If b type of φ, and b ref type of ψ, and ∧nτ 4=
n︷ ︸︸ ︷τ ∧ · · · ∧ τ
let SELF ref dummy in let NNF nnf1 in SELF := NNF;NNF(φ)
let SELF ref dummy in let NNF nnf2 in SELF := NNF;NNF(ψ)
229– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 528: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/528.jpg)
229
Typing the Two Imperative Encodings
If b type of φ, and b ref type of ψ, and ∧nτ 4=
n︷ ︸︸ ︷τ ∧ · · · ∧ τ
let SELF ref dummy in let NNF nnf1 in SELF := NNF;NNF(φ)
let SELF ref dummy in let NNF nnf2 in SELF := NNF;NNF(ψ)
Γ14= dummy: ∧n τ1,SELF: ∧n τ1 ref (with τ1
4= b _ b)
Γ24= dummy: ∧n τ2,SELF: ∧n τ2 ref (with τ2
4= b ref _ b ref )
229– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 529: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/529.jpg)
229
Typing the Two Imperative Encodings
If b type of φ, and b ref type of ψ, and ∧nτ 4=
n︷ ︸︸ ︷τ ∧ · · · ∧ τ
let SELF ref dummy in let NNF nnf1 in SELF := NNF;NNF(φ)
let SELF ref dummy in let NNF nnf2 in SELF := NNF;NNF(ψ)
Γ14= dummy: ∧n τ1,SELF: ∧n τ1 ref (with τ1
4= b _ b)
Γ24= dummy: ∧n τ2,SELF: ∧n τ2 ref (with τ2
4= b ref _ b ref )
(I) Γ1, X: ∧n τ1,NNF: ∧n τ1 ` NNF(φ) : ∧nb
(IS) Γ2, X: ∧n τ2,NNF: ∧n τ2 ` NNF(ψ) : ∧nb ref
229– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 530: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/530.jpg)
230
iRho:
Properties
230– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 531: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/531.jpg)
231
Properties (X= proved by the proof assistant Coq)
(Determinism)X If σ · ρ ` A ⇓val A′v · σ′, and σ · ρ ` A ⇓val A
′′v · σ′′, then A′v ≡ A′′v ,
and σ′ ≡ σ′′;
(Unique Type)X If ΓAA : τ , then τ is unique;
(Coherence)X σ · ρ `coh Γ if there exist two sub-contexts Γ1, and Γ2, such thatΓ1,Γ2 ≡ Γ, and Γ σ σ : Γ1, and Γ ρ ρ : Γ2;
(Subject-reduction)X If ∅AA : τ , and ∅ · ∅ ` A ⇓val Av · σ, then there exists Γ′
which extend Γ, such that Γ′ σ σ : ok, and Γ′ v Av : τ .
(Type-soundness) If ∅AA : τ , then ∅ · ∅ ` A ⇓call Av;
(Type-reconstruction) It is decidable if, for a given τ , is it true that ∅AA : τ ;
(Type-checking) It is decidable if there a type τ such that ∅AA : τ .
231– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 532: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/532.jpg)
232
Conclusion
• A special emphasis has been put in our work on the design of thestatic/dynamic semantics. We always had in mind the main objectives of aconscious implementor
? a “sound” machine (the interpreter)? a “sound” type system (the type checker), such that
“well typed programs do not go wrong” [Milner],? both semantics being suitable to be specified with nice mathematics,? to be implemented with high-level programming languages,? and to be certified with modern and semi-automatic theorem provers, like
Coq
• The paper is quasi a “technical manual” of the softwares (2)
• See imprho.ps, and imprho.scm, and TypedImpRho.v
232– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 533: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/533.jpg)
233
DIMPRO
233– ESSLLI-2004, Nancy The rewriting calculus iRHO
![Page 534: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/534.jpg)
The explicit rewriting calculus
![Page 535: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/535.jpg)
235
Lists in the λ-calculus vs in the ρ-calculus
λ-calculus ρ-calculuscons λXY Z.ZXY X _ Y _ Cons(X Y )car λZ.Z(λXY.X) Cons(X Y ) _ Xcdr λZ.Z(λXY.Y ) Cons(X Y ) _ Y
235– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 536: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/536.jpg)
236
Run Time errors in O’Caml
#let car l = match l withx::m -> x;;
236– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 537: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/537.jpg)
236
Run Time errors in O’Caml
#let car l = match l withx::m -> x;;
#car [];;Exception: Match_failure (", 12, 42).
236– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 538: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/538.jpg)
236
Run Time errors in O’Caml
#let car l = match l withx::m -> x;;
#car [];;Exception: Match_failure (", 12, 42).
#let car l = match l with[] -> failwith ‘‘error in car’’|x::m -> x;;
236– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 539: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/539.jpg)
236
Run Time errors in O’Caml
#let car l = match l withx::m -> x;;
#car [];;Exception: Match_failure (", 12, 42).
#let car l = match l with[] -> failwith ‘‘error in car’’|x::m -> x;;
Need to deal with error “by hand”
236– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 540: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/540.jpg)
237
Errors in the ρ-calculus
car4= Cons(X,Y ) _ X
(Cons(X,Y ) _ X) Empty7→ρ [Cons(X,Y ) Empty]X
237– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 541: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/541.jpg)
238
Errors in the ρ-calculus
Checking if two persons are brothers (i.e. they have the same father):
Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z))) _ tt
238– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 542: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/542.jpg)
238
Errors in the ρ-calculus
Checking if two persons are brothers (i.e. they have the same father):
Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z))) _ tt
In plain ρ-calculus when we apply the rule to the term
Brother(Person(Name(Liz), Father(John)), Person(Name(Bob), Father(Jim)))
we obtain as result the term
238– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 543: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/543.jpg)
238
Errors in the ρ-calculus
Checking if two persons are brothers (i.e. they have the same father):
Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z))) _ tt
In plain ρ-calculus when we apply the rule to the term
Brother(Person(Name(Liz), Father(John)), Person(Name(Bob), Father(Jim)))
we obtain as result the term
[Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z)))Brother(Person(Name(Liz), Father(John)), Person(Name(Bob), Father(Jim))))]tt
238– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 544: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/544.jpg)
238
Errors in the ρ-calculus
Checking if two persons are brothers (i.e. they have the same father):
Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z))) _ tt
In plain ρ-calculus when we apply the rule to the term
Brother(Person(Name(Liz), Father(John)), Person(Name(Bob), Father(Jim)))
we obtain as result the term
[Brother(Person(Name(X), Father(Z)), Person(Name(Y ), Father(Z)))Brother(Person(Name(Liz), Father(John)), Person(Name(Bob), Father(Jim))))]tt
while in ρx − calculus-calculus the result is
(Z John ∧ Z Jim) tt
238– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 545: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/545.jpg)
239
How to represent programs
• Pattern Matching (possibly non-linear).
• Typed Recursion and Strategies ...to put link
• Imperative features ...to put link
239– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 546: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/546.jpg)
240
Explicit constraint handling
What for?
• to implement the ρ-calculus [Rogue:Stump]
240– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 547: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/547.jpg)
240
Explicit constraint handling
What for?
• to implement the ρ-calculus [Rogue:Stump]
• to represent proof-terms of rewriting derivation [Nguyen]
240– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 548: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/548.jpg)
240
Explicit constraint handling
What for?
• to implement the ρ-calculus [Rogue:Stump]
• to represent proof-terms of rewriting derivation [Nguyen]
• to have a precise control over matching and constraints. Better deal of errors.
240– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 549: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/549.jpg)
240
Explicit constraint handling
What for?
• to implement the ρ-calculus [Rogue:Stump]
• to represent proof-terms of rewriting derivation [Nguyen]
• to have a precise control over matching and constraints. Better deal of errors.
How?
• by making explicit matching computations
• by making explicit application of substitutions
240– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 550: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/550.jpg)
241
Explicit matching decomposition
• Decompose functional symbols.
• Decompose the structure “;”.
• Do not decompose: Abstraction and Application.
241– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 551: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/551.jpg)
242
Constraint application
What about?
[X a ∧ a b]X
242– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 552: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/552.jpg)
242
Constraint application
What about?
[X a ∧ a b]X
Do not apply constraint without solution
242– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 553: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/553.jpg)
242
Constraint application
What about?
[X a ∧ a b]X
Do not apply constraint without solution
From constraints to substitutions
[ X A ∧ jfbsjhbsfj︸ ︷︷ ︸C
]B
242– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 554: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/554.jpg)
242
Constraint application
What about?
[X a ∧ a b]X
Do not apply constraint without solution
From constraints to substitutions
[ X A ∧ jfbsjhbsfj︸ ︷︷ ︸C
]B −→ [ jfbsjhbsfj︸ ︷︷ ︸C
] X A B
if X 6∈ Dom(C)
242– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 555: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/555.jpg)
243
Syntax of the ρx-calculus-calculus
Terms A,B ::= X (Variables)| K (Constants)| A _ B (Abstraction)| A B (Fonctional application)| C B (Constraint application)| A,B (Structure)| X AB (Substitution application on terms)
Constraints C,D ::= A B (Match-equation)| C ∧D (Conjonctions of contraints)| X AC (Substitution application on const.)
243– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 556: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/556.jpg)
244
Semantics of the ρx-calculus-calculus
From rewrite rules to constraints(ρ) (A _ B) C → (A C) B(δ) (A; B) C → A C; B C
244– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 557: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/557.jpg)
244
Semantics of the ρx-calculus-calculus
From rewrite rules to constraints(ρ) (A _ B) C → (A C) B(δ) (A; B) C → A C; B C
From constraints to substitutionsDecomposition
(Decompose; ) A1; A2 B1; B2 → A1 B1 ∧ A2 B2
(DecomposeF) f(A1 . . . An) f(B1 . . . Bn) → A1 B1 ∧ . . . ∧ An Bn
(NGood) f(A1 . . . An) g(B1 . . . Bn) → f(A1 . . . An) ng g(B1 . . . Bn)
244– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 558: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/558.jpg)
244
Semantics of the ρx-calculus-calculus
From rewrite rules to constraints(ρ) (A _ B) C → (A C) B(δ) (A; B) C → A C; B C
From constraints to substitutionsDecomposition
(Decompose; ) A1; A2 B1; B2 → A1 B1 ∧ A2 B2
(DecomposeF) f(A1 . . . An) f(B1 . . . Bn) → A1 B1 ∧ . . . ∧ An Bn
(NGood) f(A1 . . . An) g(B1 . . . Bn) → f(A1 . . . An) ng g(B1 . . . Bn)
From constraints to substitutions(ToSubst∧) (X A ∧ C)B → (C)(X AB)
if X 6∈ Dom(C)
244– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 559: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/559.jpg)
244
Semantics of the ρx-calculus-calculus
From rewrite rules to constraints(ρ) (A _ B) C → (A C) B(δ) (A; B) C → A C; B C
From constraints to substitutionsDecomposition
(Decompose; ) A1; A2 B1; B2 → A1 B1 ∧ A2 B2
(DecomposeF) f(A1 . . . An) f(B1 . . . Bn) → A1 B1 ∧ . . . ∧ An Bn
(NGood) f(A1 . . . An) g(B1 . . . Bn) → f(A1 . . . An) ng g(B1 . . . Bn)
From constraints to substitutions(ToSubst∧) (X A ∧ C)B → (C)(X AB)
if X 6∈ Dom(C)
Substitution applications
(Replace) X AX → A(EliminateX ) X AY → Y
if X 6= Y(EliminateF) X Af → f(Share#) X A(B # C) → X AB # X AC(Share()) X A((B)C) → (X AB)X AC(Share_) X A(B _ C) → B _ X AC
(Share) X A(B C) → B X AC(Share∧) X A(C ∧ D) → X AC ∧ X AD
244– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 560: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/560.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 561: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/561.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
7→ρ
[not (and (X,Y )) not (and (tt, ff))
]or (not (X) , not (Y ))
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 562: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/562.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
7→ρ
[not (and (X,Y )) not (and (tt, ff))
]or (not (X) , not (Y ))
7→Decompose
[and (X,Y ) (and (tt, ff)
]or (not (X) , not (Y ))
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 563: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/563.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
7→ρ
[not (and (X,Y )) not (and (tt, ff))
]or (not (X) , not (Y ))
7→Decompose
[and (X,Y ) (and (tt, ff)
]or (not (X) , not (Y ))
7→Decompose
[X tt ∧ Y ff
]or (not (X) , not (Y ))
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 564: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/564.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
7→ρ
[not (and (X,Y )) not (and (tt, ff))
]or (not (X) , not (Y ))
7→Decompose
[and (X,Y ) (and (tt, ff)
]or (not (X) , not (Y ))
7→Decompose
[X tt ∧ Y ff
]or (not (X) , not (Y ))
7→Subst
[X tt
]Y ffor (not (X) not (Y ))
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 565: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/565.jpg)
245
Example
(not (and (X,Y )) _ or (not (X) , not (Y )) ) not (and (tt, ff))
7→ρ
[not (and (X,Y )) not (and (tt, ff))
]or (not (X) , not (Y ))
7→Decompose
[and (X,Y ) (and (tt, ff)
]or (not (X) , not (Y ))
7→Decompose
[X tt ∧ Y ff
]or (not (X) , not (Y ))
7→Subst
[X tt
]Y ffor (not (X) not (Y ))
7→∗Propagation (or (not (tt) , not (ff)))
Need to compose, to able to combine substitutions, to limit term traversal.
245– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 566: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/566.jpg)
246
Properties of the ρx-calculus-calculus
• Well behaved properties for substitution application.
• Termination of the constraint handling part.
• Confluence of the calculus.
• Conservativity
• Simulating the λ-calculusx
246– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 567: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/567.jpg)
247
The ρxC-calculus
(GI) X A ∧ Y B → X A ∧gY Bif X 6= Y
247– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 568: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/568.jpg)
247
The ρxC-calculus
(GI) X A ∧ Y B → X A ∧gY Bif X 6= Y
(Good) Cg ∧Dg → Cg ∧g Dg
if Dom(Cg) ∩ Dom(Dg) = ∅(ToSubst) [Cg ∧D]A → [D]CgA
247– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 569: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/569.jpg)
247
The ρxC-calculus
(GI) X A ∧ Y B → X A ∧gY Bif X 6= Y
(Good) Cg ∧Dg → Cg ∧g Dg
if Dom(Cg) ∩ Dom(Dg) = ∅(ToSubst) [Cg ∧D]A → [D]CgA
if Dom(Cg) ∩ Dom(D) = ∅
247– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 570: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/570.jpg)
248
The ρxC-calculus
To deal with compositions: the ρxC-calculus
(Compose) ϑ(ϕA) → ϑϕ(ϑA)
248– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 571: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/571.jpg)
249
The ρxC-calculus
To deal with compositions: the ρxC-calculus
(Compose) ϑ(ϕA) → ϑϕ(ϑA)
(Compose) ϑ(ϕA) → ϑ ∧g ϑϕ A Properties (confluence AC – CiME)
249– ESSLLI-2004, Nancy The rewriting calculus Explicit substitutions
![Page 572: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/572.jpg)
Graphs in the rewriting calculus
![Page 573: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/573.jpg)
251
Graphs in the ρ-calculus
improve efficiency
save space (sharing subterms) save time (reduce only once)
∗@
@@@@
~~~~~~~
x s
y
−→ +~~~~~
~~
ww
∗
@@@
@@
x y
251– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 574: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/574.jpg)
251
Graphs in the ρ-calculus
improve efficiency
save space (sharing subterms) save time (reduce only once)
improve expressiveness
infinite data structures
∗@
@@@@
~~~~~~~
x s
y
−→ +~~~~~
~~
ww
∗
@@@
@@
x y
: oo
1
251– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 575: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/575.jpg)
252
The syntax of ρg-calculus
Terms G ::= X (Variables)| K (Constants)| G _ G (Abstraction)| G G (Functional application)| G,G (Structure)| G [C] (Constraint application)
Constraints C ::= ε (Empty constraint)| X = G (Recursion equation)| G G (Match equation)| C,C (Conjunction of constraints)
252– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 576: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/576.jpg)
253
Some ρg-terms
f
<<<
<<
g ** gjj
_!!C
CCCC
~~
∗ @
@@@@
@
+
2 x x
f(x, y) [x = g(y), y = g(x)] (2 ∗ x) _ ((y + y) [y = x])
253– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 577: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/577.jpg)
254
The semantics of ρg-calculus
(ρ) (G1 _ G2) G3 →ρ G2 [G1 G3](G1 _ G2) [E] G3 →ρ G2 [G1 G3, E]
(δ) (G1, G2) G3 →δ G1 G3, G2 G3
(G1, G2) [E] G3 →δ (G1 G3, G2 G3) [E]
254– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 578: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/578.jpg)
254
The semantics of ρg-calculus
(ρ) (G1 _ G2) G3 →ρ G2 [G1 G3](G1 _ G2) [E] G3 →ρ G2 [G1 G3, E]
(δ) (G1, G2) G3 →δ G1 G3, G2 G3
(G1, G2) [E] G3 →δ (G1 G3, G2 G3) [E]
(propagate) G1 (G2 [E2]) →p G1 G2, E2
(decompose) K(G1, . . . , Gn) K(G′1, . . . , G′
n) →dk G1 G′1, . . . , Gn G′
n(eliminate) K K, E →e E(solved) x G, E →s x = G, E if x 6∈ DV(E)
254– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 579: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/579.jpg)
254
The semantics of ρg-calculus
(ρ) (G1 _ G2) G3 →ρ G2 [G1 G3](G1 _ G2) [E] G3 →ρ G2 [G1 G3, E]
(δ) (G1, G2) G3 →δ G1 G3, G2 G3
(G1, G2) [E] G3 →δ (G1 G3, G2 G3) [E]
(propagate) G1 (G2 [E2]) →p G1 G2, E2
(decompose) K(G1, . . . , Gn) K(G′1, . . . , G′
n) →dk G1 G′1, . . . , Gn G′
n(eliminate) K K, E →e E(solved) x G, E →s x = G, E if x 6∈ DV(E)
(external sub) Ctx[y] [y = G, E] →es Ctx[G] [y = G, E](acyclic sub) G [G0 Ctx[y], y = G1, E] →ac G [G0 Ctx[G1], y = G1, E]
if x > y, ∀x ∈ FVar(G0)where ∈ =,
(garbage) G [E, x = G′] →gc G [E]if x 6∈ FVar(E) ∪ FVar(G)
G [ε] →gc G(black hole) Ctx[x] [x = x, E] →bh Ctx[•] [x = x, E]
G [y = Ctx[x], x = x, E] →bh G [y = Ctx[•], x = x, E]if y > x
254– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 580: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/580.jpg)
255
Example - Multiplication
∗@
@@@@
~~~~~~~
x s
y
_ +~~~~~
~~
ww
∗
@@@
@@
x y
∗>
>>>>
1 s
1
255– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 581: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/581.jpg)
255
Example - Multiplication
∗@
@@@@
~~~~~~~
x s
y
_ +~~~~~
~~
ww
∗
@@@
@@
x y
∗>
>>>>
1 s
1(x ∗ s(y) _ (x1 ∗ y + x1 [x1 = x])) (z ∗ s(z) [z = 1])
7→ρ x1 ∗ y + x1 [x1 = x] [x ∗ s(y) (z ∗ s(z) [z = 1])]
7→p x1 ∗ y + x1 [x1 = x] [x ∗ s(y) z ∗ s(z), z = 1]
255– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 582: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/582.jpg)
255
Example - Multiplication
∗@
@@@@
~~~~~~~
x s
y
_ +~~~~~
~~
ww
∗
@@@
@@
x y
∗>
>>>>
1 s
1(x ∗ s(y) _ (x1 ∗ y + x1 [x1 = x])) (z ∗ s(z) [z = 1])
7→ρ x1 ∗ y + x1 [x1 = x] [x ∗ s(y) (z ∗ s(z) [z = 1])]
7→p x1 ∗ y + x1 [x1 = x] [x ∗ s(y) z ∗ s(z), z = 1]
7→→dk x1 ∗ y + x1 [x1 = x] [x z, y z, z = 1]
7→→s x1 ∗ y + x1 [x1 = x] [x = z, y = z, z = 1]
255– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 583: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/583.jpg)
255
Example - Multiplication
∗@
@@@@
~~~~~~~
x s
y
_ +~~~~~
~~
ww
∗
@@@
@@
x y
∗>
>>>>
1 s
1(x ∗ s(y) _ (x1 ∗ y + x1 [x1 = x])) (z ∗ s(z) [z = 1])
7→ρ x1 ∗ y + x1 [x1 = x] [x ∗ s(y) (z ∗ s(z) [z = 1])]
7→p x1 ∗ y + x1 [x1 = x] [x ∗ s(y) z ∗ s(z), z = 1]
7→→dk x1 ∗ y + x1 [x1 = x] [x z, y z, z = 1]
7→→s x1 ∗ y + x1 [x1 = x] [x = z, y = z, z = 1]
7→→es (z ∗ z + z) [x1 = z] [x = z, y = z, z = 1]
7→→gc (z ∗ z + z) [x1 = z] [z = 1]
7→→gc (z ∗ z + z) [z = 1]
255– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 584: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/584.jpg)
255
Example - Multiplication
∗@
@@@@
~~~~~~~
x s
y
_ +~~~~~
~~
ww
∗
@@@
@@
x y
∗>
>>>>
1 s
1(x ∗ s(y) _ (x1 ∗ y + x1 [x1 = x])) (z ∗ s(z) [z = 1])
7→ρ x1 ∗ y + x1 [x1 = x] [x ∗ s(y) (z ∗ s(z) [z = 1])]
7→p x1 ∗ y + x1 [x1 = x] [x ∗ s(y) z ∗ s(z), z = 1]
7→→dk x1 ∗ y + x1 [x1 = x] [x z, y z, z = 1]
7→→s x1 ∗ y + x1 [x1 = x] [x = z, y = z, z = 1]
7→→es (z ∗ z + z) [x1 = z] [x = z, y = z, z = 1]
7→→gc (z ∗ z + z) [x1 = z] [z = 1]
7→→gc (z ∗ z + z) [z = 1]
+
∗
1
255– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 585: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/585.jpg)
256
Example - Non-linearity
Success:f(x, x) [x = y] f(a, a)
7→→es f(y, y) [x = y] f(a, a)7→→gc f(y, y) f(a, a)7→dk y a (by idempotency)7→s y = a
256– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 586: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/586.jpg)
256
Example - Non-linearity
Success:f(x, x) [x = y] f(a, a)
7→→es f(y, y) [x = y] f(a, a)7→→gc f(y, y) f(a, a)7→dk y a (by idempotency)7→s y = a
Failure:f(x, x) [x = y] f(a, b)
7→→es f(y, y) [x = y] f(a, b)7→→gc f(y, y) f(a, b)7→dk y a, y b
256– ESSLLI-2004, Nancy The rewriting calculus Graphs in ρ-calculus
![Page 587: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/587.jpg)
ZOOM on matching theories
![Page 588: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/588.jpg)
258
“Untyped” Matching theories I
Empty theory T∅ of equality (up to α-conversion)
T1 = T2 T2 = T3 T1 = T3 (Trans) T1 = T2
T2 = T1 (Symm)
T1 = T2 T3dT1ep = T3dT2ep
(Context) t = t(Refl)
T1dT2ep: term T1 with term T2 at position p BACK
258– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 589: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/589.jpg)
259
“Untyped” Matching theories II
Theory of Associativity TA(f) (resp. Commutativity TC(f)) is defined as T∅ plus:
f(f(T1, T2), T3) = f(T1, f(T2, T3))(Assoc)
f(T1, T2) = f(T2, T1)(Comm)
BACK
259– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 590: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/590.jpg)
260
“Untyped” Matching theories III
Theory of Idempotency TI(f) is defined as T∅ plus the axiom
f(T , T ) = t(Idem)
Theory of Neutral Element TN(f0) is defined as T∅ plus
f(0, T ) = T (0−Left) f(T , 0) = T (0−Right)
BACK
260– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 591: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/591.jpg)
261
“Untyped” Matching theories IV
The Theory of Stuck Tstk is defined as TN(,stk) plus the axioms
∀θ1, θ2, ∀C, Aθ2 7→→ρσδC ⇒ C 6≡ Pθ1 [P A]B = stk
stk T = stk
Examples [3 4]5 = stk6 [3 3]5 = stk 6 [3 X ]5 = stk
Detecting matching failures BACK
261– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 592: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/592.jpg)
262
“Untyped” Matching theories V
Theory of the Lambda Calculus of Objects TλObj is obtained by considering the
symbol “,” as associative and stk as its neutral element, i.e.:
TλObj = TA(,) ∪ Tstk
Theory of the Object Calculus TςObj is obtained by considering the symbol “,” as
associative and commutative and stk as its neutral element, i.e.:
TςObj = TA(,) ∪ TC(,) ∪ Tstk = TλObj ∪ TC(,)
THEORIES RECORDS
262– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 593: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/593.jpg)
263
The Matching Algorithm for T∅
The matching substitution solving a matching equation can be computed by thefollowing matching reduction system:
(Appl) (T1 T2)≺≺(T3 T4) ; T1≺≺T3 ∧ T2≺≺T4
(Struct) (T1, T2)≺≺(T3, T4) ; T1≺≺T3 ∧ T2≺≺T4Example
f(X ,Y)≺≺f(a, b) ; X≺≺a ∧ Y≺≺b successful
f(X ,X )≺≺f(a, b) ; X≺≺a ∧ Y≺≺b unsuccessful
BACK
263– ESSLLI-2004, Nancy The rewriting calculus Matching theories
![Page 594: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/594.jpg)
ZOOM on objects
![Page 595: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/595.jpg)
265
The Lambda Calculus of Objects λObj
Abstract syntax
M,N ::= c | X | λX.M |MN |
〈 〉 | 〈M←−n = N〉 | 〈M←−+n = N〉 |M ⇐ n |
Sel(M,m,N)Small-step semantics (←∗ = ←− or ←−+)(Beta) (λX.M)N ; X/NM
(Sel) M ⇐ m ; Sel(M,m,M)
(Next) Sel(〈M ←∗n = N〉,m, P ) ; Sel(M,m,P ) (m 6= n)
(Succ) Sel(〈M ←∗n = N〉, n, P ) ; NP
265– ESSLLI-2004, Nancy The rewriting calculus Lambda Calculus of Objects
![Page 596: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/596.jpg)
266
Compiling λObj in ρ-calculus
[[c]] 4= c
[[X]] 4= X
[[λX.M ]] 4= X _ [[M ]]
[[MN ]] 4= [[M ]] [[N ]]
[[ <> ]] 4= stk
[[ < M←−n = N > ]] 4= killn([[M ]]), n _ [[N ]]
[[ < M←−+n = N > ]] 4= [[M ]], n _ [[N ]]
[[M” <= ”m]] 4= [[M ]].m 4
= [[M ]] m [[M ]]
[[Sel(M,m,N)]] 4= [[M ]] m [[N ]]
Theorem: If M ;λObj N , then [[M ]] 7→→ρσδTλObj[[N ]].
Example with object update
266– ESSLLI-2004, Nancy The rewriting calculus Lambda Calculus of Objects
![Page 597: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/597.jpg)
ZOOM on Combinatory Reduction Systems
![Page 598: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/598.jpg)
268
The Combinatory Reduction Systems
The syntax: abstraction and metavariables
MTCRS ::= X | [X ]MTCRS | F(MTCRS, . . . ,MTCRS) | Z(MTCRS, . . . ,MTCRS)
268– ESSLLI-2004, Nancy The rewriting calculus Combinatory Reduction Systems
![Page 599: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/599.jpg)
268
The Combinatory Reduction Systems
The syntax: abstraction and metavariables
MTCRS ::= X | [X ]MTCRS | F(MTCRS, . . . ,MTCRS) | Z(MTCRS, . . . ,MTCRS)
The set of rewrite rules R = . . . , L⇒ R, . . .• L and R are closed metaterms;
• L is of the form f(A1, . . . , An) with A1, . . . , An metatermes;
• MV(L) ⊇MV(R);• L is a Pattern : ∀ω LdZ(x1,...,xn)eω xi bound and distinct.
268– ESSLLI-2004, Nancy The rewriting calculus Combinatory Reduction Systems
![Page 600: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/600.jpg)
268
The Combinatory Reduction Systems
The syntax: abstraction and metavariables
MTCRS ::= X | [X ]MTCRS | F(MTCRS, . . . ,MTCRS) | Z(MTCRS, . . . ,MTCRS)
The set of rewrite rules R = . . . , L⇒ R, . . .• L and R are closed metaterms;
• L is of the form f(A1, . . . , An) with A1, . . . , An metatermes;
• MV(L) ⊇MV(R);• L is a Pattern : ∀ω LdZ(x1,...,xn)eω xi bound and distinct.
Assignment : σ = (Z1, ξ1), . . . , (Zn, ξn) s.t. Zi ∈MV(L), |Zi| = |ξi| Substitute : ξ = λx1 . . . xn.u s.t u is a CRS-term Substitution at the meta-level.
Back to encodings
268– ESSLLI-2004, Nancy The rewriting calculus Combinatory Reduction Systems
![Page 601: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/601.jpg)
269
Translation examples
Abstraction:[x]Z(x) ; x _ Z x
Patterns:L = [x]g([y]Z(x, y)) ; [[L]] = x _ g(y _ (Z x y))
Assignment into rho-substitution:σ = Z, λx.x ; [[σ]] = Z/x _ x
Rewrite rules into rho-terms:Beta : [[Beta]] :App([x]Z(x), Z ′)⇒ Z(Z ′) ; App(x _ Z x,Z ′) _ Z Z ′
Back to encodings
269– ESSLLI-2004, Nancy The rewriting calculus Combinatory Reduction Systems
![Page 602: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/602.jpg)
ZOOM on P2TS
![Page 603: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/603.jpg)
271
Lambda Calculi a la Church and Logics
• Lambda abstractions are decorated with types, e.g. λx:σ.M
• Type Systems λi vs. Logic Systems Li via the well-known Curry-HowardIsomorphism ”proofs-as-(λ)-terms & propositions-as-types”
• Each logical system Li correspond to a type system λi, and for every formula ϕ
`Liϕ =⇒ ∃M. Γ `λi
M : [[ϕ]]
271– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 604: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/604.jpg)
271
Lambda Calculi a la Church and Logics
• Lambda abstractions are decorated with types, e.g. λx:σ.M
• Type Systems λi vs. Logic Systems Li via the well-known Curry-HowardIsomorphism ”proofs-as-(λ)-terms & propositions-as-types”
• Each logical system Li correspond to a type system λi, and for every formula ϕ
`Liϕ =⇒ ∃M. Γ `λi
M : [[ϕ]]
• Γ contains the types of the free variables of M , and [[ϕ]] is a canonicalinterpretation of ϕ in λi
271– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 605: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/605.jpg)
271
Lambda Calculi a la Church and Logics
• Lambda abstractions are decorated with types, e.g. λx:σ.M
• Type Systems λi vs. Logic Systems Li via the well-known Curry-HowardIsomorphism ”proofs-as-(λ)-terms & propositions-as-types”
• Each logical system Li correspond to a type system λi, and for every formula ϕ
`Liϕ =⇒ ∃M. Γ `λi
M : [[ϕ]]
• Γ contains the types of the free variables of M , and [[ϕ]] is a canonicalinterpretation of ϕ in λi
• β-reduction (λx:σ.M)N _β MN/x in λi as cut-elimination in Li
271– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 606: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/606.jpg)
271
Lambda Calculi a la Church and Logics
• Lambda abstractions are decorated with types, e.g. λx:σ.M
• Type Systems λi vs. Logic Systems Li via the well-known Curry-HowardIsomorphism ”proofs-as-(λ)-terms & propositions-as-types”
• Each logical system Li correspond to a type system λi, and for every formula ϕ
`Liϕ =⇒ ∃M. Γ `λi
M : [[ϕ]]
• Γ contains the types of the free variables of M , and [[ϕ]] is a canonicalinterpretation of ϕ in λi
• β-reduction (λx:σ.M)N _β MN/x in λi as cut-elimination in Li
• Subject Reduction Theorem as a correction criterion for cut-elimination BACK
271– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 607: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/607.jpg)
272
The Famous Barendregt’s λ-cube and its 8 logic systems
λ_
6
-
>
λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
272– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 608: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/608.jpg)
272
The Famous Barendregt’s λ-cube and its 8 logic systems
λ_
6
-
>
λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
272– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 609: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/609.jpg)
272
The Famous Barendregt’s λ-cube and its 8 logic systems
λ_
6
-
>
λω
6
-
λ2 -
>λω -
λP
>
6
λPω
6
λP2
>λPω
PROP
6
-
>
PROPω
6
-
PROP2 -
>
PROPω -
PRED
>
6
PREDω
6
PRED2
>
PREDω
PROP proposition logic PRED predicate logic
PROP2 second-order PROP PRED2 second-order PRED
PROPω weakly higher-order PROP PREDω weakly higher-order PRED
PROPω higher-order PROP PREDω higher-order PRED
272– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 610: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/610.jpg)
273
From Barendregt’s λ-cube to Pure Type Systems (PTSs)
• Further generalization of various type systems invented independently byBerardi and Terlouw in ’89
• Many systems of typed λ-calculus a la Church can be seen as PTSs
• One of the success of PTSs is concerned with logics: the 8 logical systems canbe described/generalised as a simple unique PTS
BACK
273– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 611: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/611.jpg)
273
From Barendregt’s λ-cube to Pure Type Systems (PTSs)
• Further generalization of various type systems invented independently byBerardi and Terlouw in ’89
• Many systems of typed λ-calculus a la Church can be seen as PTSs
• One of the success of PTSs is concerned with logics: the 8 logical systems canbe described/generalised as a simple unique PTS
• Another one is the compactness of the notation of PTSs which greatly allows tofactorise and simplify proofs in metatheory, in the style “one theorem fits all!”
BACK
273– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 612: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/612.jpg)
273
From Barendregt’s λ-cube to Pure Type Systems (PTSs)
• Further generalization of various type systems invented independently byBerardi and Terlouw in ’89
• Many systems of typed λ-calculus a la Church can be seen as PTSs
• One of the success of PTSs is concerned with logics: the 8 logical systems canbe described/generalised as a simple unique PTS
• Another one is the compactness of the notation of PTSs which greatly allows tofactorise and simplify proofs in metatheory, in the style “one theorem fits all!”
• Examples of well-known PTSs are λHOL, λPRED, λCC (a.k.a. the λ-cube)
BACK
273– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 613: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/613.jpg)
274
More Pragmatically ...
• Almost all proof assistants and relating metalanguages based on theproposition-as-type principle, have a firm theoretical basis in logics representedvia PTSs
274– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 614: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/614.jpg)
274
More Pragmatically ...
• Almost all proof assistants and relating metalanguages based on theproposition-as-type principle, have a firm theoretical basis in logics representedvia PTSs
• AUTOMATH, NUPRL, HOL, LEGO, (TW)ELF, AGDA, ISABELLE, COQ,MIZAR, ACL2, PVS ...
274– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 615: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/615.jpg)
274
More Pragmatically ...
• Almost all proof assistants and relating metalanguages based on theproposition-as-type principle, have a firm theoretical basis in logics representedvia PTSs
• AUTOMATH, NUPRL, HOL, LEGO, (TW)ELF, AGDA, ISABELLE, COQ,MIZAR, ACL2, PVS ...
• The degree of automatization of such proof assistants depends also on thecapability of simplifying/reduce terms
274– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 616: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/616.jpg)
274
More Pragmatically ...
• Almost all proof assistants and relating metalanguages based on theproposition-as-type principle, have a firm theoretical basis in logics representedvia PTSs
• AUTOMATH, NUPRL, HOL, LEGO, (TW)ELF, AGDA, ISABELLE, COQ,MIZAR, ACL2, PVS ...
• The degree of automatization of such proof assistants depends also on thecapability of simplifying/reduce terms
• The “Poincare principle” can be (βιδ)-reductions, structural well-foundedrecursion, provable equality, or some arbitrary notion of reduction
274– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 617: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/617.jpg)
274
More Pragmatically ...
• Almost all proof assistants and relating metalanguages based on theproposition-as-type principle, have a firm theoretical basis in logics representedvia PTSs
• AUTOMATH, NUPRL, HOL, LEGO, (TW)ELF, AGDA, ISABELLE, COQ,MIZAR, ACL2, PVS ...
• The degree of automatization of such proof assistants depends also on thecapability of simplifying/reduce terms
• The “Poincare principle” can be (βιδ)-reductions, structural well-foundedrecursion, provable equality, or some arbitrary notion of reduction
• The more reductions principles you have in the metalanguage, the more“powerful” the proof assistant is ... BACK
274– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 618: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/618.jpg)
275
P2TS: One-step, Many-steps, Congruence
Let Ctx[−] be any term T with a “single hole” inside, and let Ctx[A] be the resultof filling the hole with the term A;
1. the one-step evaluation 7→ is defined by the following inference rule, where
→ρσδ≡→ρ ∪ →σ ∪ →δ:
A→ρσδ BCtx[A] 7→ρσδ Ctx[B] (Ctx[−])
2. the many-step evaluation 7→→ρσδ and congruence relation =ρσδ are respectivelydefined as the reflexive-transitive and reflexive-symmetric-transitive closure of7→ρσδ BACK
275– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 619: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/619.jpg)
276
Abbreviations and Priorities
(Ai)i=1...n 4= A1, · · · , An structure/object
A.B 4= A •B •A Kamin’s self-application
276– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 620: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/620.jpg)
276
Abbreviations and Priorities
(Ai)i=1...n 4= A1, · · · , An structure/object
A.B 4= A •B •A Kamin’s self-application
Operator Associate Priority
, Right >
X : . Right >
[ ]. Right >• Left >
276– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 621: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/621.jpg)
277
... still substitutions
• We let
Dom(σ) = X1, . . . , Xmand
CoDom(∆) = ∪i=1...m
FVar(Ai)
• A substitution σ is independent from ∆, written σ 6^∆ if
Dom(σ) ∩ Dom(∆) = ∅
and
CoDom(σ) ∩ Dom(∆) = ∅
277– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 622: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/622.jpg)
278
Termination of Alg
• The relation is defined as the reflexive, transitive and compatible closure of
• If T T′, with T′ a matching system in solved form then, we say that thematching algorithm Alg (taking as input the system T) succeeds
• The matching algorithm is clearly terminating (since all rules decrease the sizeof terms) and deterministic (no critical pairs), and of course, it works moduloα-conversion and Barendregt’s hygiene-convention
• Starting form a given solved matching system of the form
T 4= ∧
i=0...nXi≺≺Σ
∆iAi ∧
j=0...maj≺≺Σ
∆jaj
the corresponding substitution A1/X1 · · ·An/Xn is exhibited.
278– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 623: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/623.jpg)
279
Functional P2TS
We require all specifications to be functional, i.e. for every s1, s2, s′2, s3, s
′3 ∈ S,
the following holds:
(s1, s2) ∈〉A and (s1, s′2) ∈〉A implies s2 ≡ s′2(s1, s2, s3) ∈ R and (s1, s2, s′3) ∈ R implies s3 ≡ s′3.
Furthermore, we let S> denote the set of topsorts, i.e.
S> = s ∈ S | ∀s′ ∈ S. (s, s′) 6∈〉A
and define a variant of delayed matching constraint as follows:
[A∆ C]>.B =B if B ∈ S>[A∆ C].B otherwise
BACK
279– ESSLLI-2004, Nancy The rewriting calculus P2
TS
![Page 624: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/624.jpg)
ZOOM on DIMPRO
![Page 625: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/625.jpg)
281
Simple Functional Fixpoint
Γ ≡ fix:(b _ b) _ b, and ∆ ≡ X:b _ b, and
Ω 4= fix(X) _∆ X fix(X). We typecheck Γ
AΩ fix(Ω) : b
Γ,∆A
fix : (b _ b) _ b
Γ,∆AX : b _ b
Γ,∆A
fix(X) : b
Γ,∆AX : b _ b
Γ,∆A
fix(X) : b
Γ,∆AX fix(X) : b
ΓA
Ω : b _ b
ΓA
fix : (b _ b) _ b
ΓA
Ω : b _ b
ΓA
fix(Ω) : bΓ
AΩ fix(Ω) : b
The reader can verify that our interpreter diverges, i.e.
∞∴
∅ ` Ω fix(Ω) ⇓val stack overflow
281– ESSLLI-2004, Nancy The rewriting calculus DIMPRO
![Page 626: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/626.jpg)
282
Encoding Term Rewrite Systems
• However, a suitable recursion operator in the style of the object-orientedencoding allows us to simulate the global behavior of a TRS Let the constantsrec and add, and let
obj.meth 4= ((obj meth) obj)
plus 4=
(rec(S) _ add(0, Y ) _ Y ,
rec(S) _ add(suc(X), Y ) _ suc (S.rec add(X,Y ))
)
282– ESSLLI-2004, Nancy The rewriting calculus DIMPRO
![Page 627: Horatiu Cirstea and Claude Kirchner and Luigi Liquori](https://reader031.vdocuments.mx/reader031/viewer/2022012512/618aba8519bc2a5dc6344d5c/html5/thumbnails/627.jpg)
283
A Nice Circle ... and back
•
σ0 · ρ ` F ⇓val f · σ1
σ1 · ρ ` A ⇓val a · σ2 σ2 ` 〈f · a〉 ⇓call v · σ3
σ0 · ρ ` F A ⇓val v · σ3(Red−ρv)
• (define-method (Eval::value t::App env) ;()(with-access::App t (F A)
(let ( (f (Eval F env)) )(let ( (a (Eval A env)) )
(call f a) ))))
• Mutual Inductive eval : expr->env->store->value->store->Prop :=.....| evalApp: (F:expr)(e:env)(s:store)(f:value)(s1:store)
(eval F e s f s1) -> (A:expr)(a:value)(s2:store)(eval A e s1 a s2) -> (v:value)(s3:store)(call f a s2 v s3) ->(eval (App F A) e s v s3)
.....
283– ESSLLI-2004, Nancy The rewriting calculus DIMPRO