horatiu cirstea and claude kirchner and luigi liquori

627
The rewriting calculus Horatiu Cirstea and Claude Kirchner and Luigi Liquori In close collaboration with Clara Bertolissi, Germain Faure, Benjamin Wack Thanks to the Protheo group@Nancy ESSLLI Nancy August, 2004

Upload: others

Post on 10-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••

4– ESSLLI-2004, Nancy The rewriting calculus Introduction

Page 5: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

4• • • • • • • • • •• • • •• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • ••• • • • • •• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••

May I always win?

4– ESSLLI-2004, Nancy The rewriting calculus Introduction

Page 6: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18

• • • • • • • • •• • • • • • • • • • • • • • • • • •• • • • • • • • • • • ••• • • • • •• • • • ••• • • • ••• • • •• • • •• • ••• • ••••••

Analysing the different cases

18– ESSLLI-2004, Nancy The rewriting calculus Introduction

Page 55: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

The syntax and semantics of the untyped rewriting calculus

Page 123: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comparing the untypedrewriting calculus to other

formalisms

Page 179: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Typed rewriting calculi

Page 256: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pure Pattern Type Systems

POPL-03

Page 291: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

164

P2TS

MetatheoryCONCLUSIONS

164– ESSLLI-2004, Nancy The rewriting calculus Pure Pattern Type Systems

Page 414: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

Imperative Rewriting Calculus

PPDP-04

Page 427: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

175

iRho

Motivations

175– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 428: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

183

iRho

The Syntax

183– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 448: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

195

iRho

Natural Semantics

195– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 476: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

197

iRho:

⇓val

197– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 478: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

201

iRho:

⇓call

201– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 487: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

204

iRho:

⇓match

204– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 493: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

209

iRho:

Playing with NS

209– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 500: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

213

iRho:

iExamples

213– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 505: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

218

iRho

Types

218– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 510: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

222

iRho:

ΓPP : τ

222– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 514: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

224

iRho:

ΓAA : τ

224– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 518: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

230

iRho:

Properties

230– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 531: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

233

DIMPRO

233– ESSLLI-2004, Nancy The rewriting calculus iRHO

Page 534: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

The explicit rewriting calculus

Page 535: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Graphs in the rewriting calculus

Page 573: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ZOOM on matching theories

Page 588: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

ZOOM on objects

Page 595: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

ZOOM on Combinatory Reduction Systems

Page 598: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

ZOOM on P2TS

Page 603: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ZOOM on DIMPRO

Page 625: Horatiu Cirstea and Claude Kirchner and Luigi Liquori

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

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

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