Download - Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Transcript
Page 1: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Evaluating functions as processes

Beniamino Accattoli

Carnegie Mellon University

Accattoli (CMU) Evaluating functions as processes 1 / 26

Page 2: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Functions as processes

λ-calculus model of functional programming.

π-calculus model for concurrency.

λ-calculus can be simulated in the π-calculus (Milner, 1992).

The simulation is subtle, not tight as one would expect.

Here refined using:

Linear logic;

DeYoung-Pfenning-Toninho-Caires session types (but no types here);

A novel approach to relate terms and proof nets.

Contribution:Original and simple presentation, revisiting a work by Damiano Mazza.

Accattoli (CMU) Evaluating functions as processes 2 / 26

Page 3: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

The simulation

The expected simulation:

t s

Pt

β

t s

Pt Ps

β

Does not hold, there is a mismatch about reduction. One gets:

t

Pt Q ∼ Ps

where ∼ is strong bisimulation (with respect to the environment).

Accattoli (CMU) Evaluating functions as processes 3 / 26

Page 4: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Improved simulation

We refine λ-calculus and (head) β-reduction to a reduction ( s.t.:

t s

Pt

t s

Pt Psπ

and

t

Pt Qπ

⇒ ∃s s.t.

t

Pt Q

s

π

Novelty: the translation is a strong bisimulation of reductions.

Accattoli (CMU) Evaluating functions as processes 4 / 26

Page 5: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Intuitions

π-calculus evaluates terms in small steps (abstract machine).

Small-step evaluation ' λ-calculus + explicit substitutions (ES).

λ + ES injects in linear logic (LL).

Pfenning-Caires et al.: linear logic injects in the π-calculus.

Schema:

(λ ⊆) λ+ ES ⊆ LL ⊆ π

Here: we pull back π-reduction to λ + ES, hiding LL.

Accattoli (CMU) Evaluating functions as processes 5 / 26

Page 6: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Outline

1 TERM(s and )GRAPH(s)

2 π-calculus

Accattoli (CMU) Evaluating functions as processes 6 / 26

Page 7: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Explicit substitutions

Refine λ-calculus with explicit substitutions:

t, s, u := x | λx .t | ts | t[x/s]

Evaluation contexts (weak head contexts):

E := L · M | Es | E [x/s]

Substitution contexts (or Lists of substitutions):

L := L · M | L[x/s]

Rewriting strategy (closed by evaluation contexts E ·):

LLλx .tMs (dB LLt[x/s]M

E LxM[x/s] (ls E LsM[x/s]

Accattoli (CMU) Evaluating functions as processes 7 / 26

Page 8: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Example of evaluation

Rewriting strategy (closed by evaluation contexts E ·):

LLλx .tMs (dB LLt[x/s]ME LxM[x/s] (ls E LsM[x/s]

is linear weak head reduction(Game semantics, KAM, Bohm’s theorem, Geometry of interaction).

Use of contexts in rules = Distance.

Example of reduction:

(λx .xx)λy .yy (dB (xx)[x/λy .yy ](ls ((λy .yy)x)[x/λy .yy ](dB ((yy)[y/x ])[x/λy .yy ](ls ((xy)[y/x ])[x/λy .yy ](ls (((λy .yy)y)[y/x ])[x/λy .yy ] . . .

Accattoli (CMU) Evaluating functions as processes 8 / 26

Page 9: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

x = ts = λx .s = t[x/s] =

x

v

@

st

Γ

s

x

λ t

x

s

Γ

x

d*

on*

!*

s

t

Γ

s

x

(*

t

x

!*

s

Γ

NOTE: the hole of an evaluation context is out of all boxes.

E := L · M | Es | E [x/s]Accattoli (CMU) Evaluating functions as processes 9 / 26

Page 10: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Multiplicative rule

on*

!*

α

x

(*

!*

(dB

x

α

!*

(λx .t) u → t[x/u]

rR

on*

!*

ut

x

(*

(dB

t

x

!*

u

Accattoli (CMU) Evaluating functions as processes 10 / 26

Page 11: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Distance

The translation is not injective, in particular if y /∈ fv(u):

((λx .t)u)[y/s] = (λx .t)[y/s]u =

on*

!*

ut

x

(*

y

!*

s

So, both ((λx .t)u)[y/s] and (λx .t)[y/s]u have a redex!Accattoli (CMU) Evaluating functions as processes 11 / 26

Page 12: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

More on distance

Rule at a distance:

LLλx .tMs (dB LLt[x/s]M

(λx .t)[·/·] . . . [·/·] u →B−distance t[x/u][·/·] . . . [·/·]

Traditionally a configuration like:

(λx .t)[y/v ] u

is not a redex, as it is blocked by [y/v ].

Here, instead, it is a redex.

Accattoli (CMU) Evaluating functions as processes 12 / 26

Page 13: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Substitution rule

The substitution rule:

E LxM[x/s] (ls E LsM[x/s]

Corresponds to:

x

d* * *

. . .

!*

S

y1 yk. . .

(ls

S

* *

. . .

!*

S

y1 yk. . .

Note: the substituted variable/dereliction is out of all boxes.Accattoli (CMU) Evaluating functions as processes 13 / 26

Page 14: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Strong bisimulation

ES at a distance and proof nets satisfy:

t s

Gt

t s

Gt Gs

and

t

Gt G ′

⇒ ∃s s.t.

t

Gt G ′

s

Idea: distance turns terms in an algebraic language for graphs.Accattoli (CMU) Evaluating functions as processes 14 / 26

Page 15: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Outline

1 TERM(s and )GRAPH(s)

2 π-calculus

Accattoli (CMU) Evaluating functions as processes 15 / 26

Page 16: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

π-calculus

Processes:

P,Q,R := 0∣∣ x〈y〉

∣∣ x〈y , z〉∣∣ νxP ∣∣ x(y , z).P

∣∣!x(y).P∣∣ P | Q

Non-blocking contexts:

N := L · M∣∣ N | Q

∣∣ P | N∣∣ νxN

Structural congruence ≡: closure by NL · M of

P | 0 ≡ P P | (Q | R) ≡ (P | Q) | R P | Q ≡ Q | P

νx0 ≡ 0x /∈ fn(P)

P | νxQ ≡ νx .(P | Q)νxνyP ≡ νyνxP

Accattoli (CMU) Evaluating functions as processes 16 / 26

Page 17: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

π-calculus

Substitution of y to x in P is P{x/y}.

The rewriting rules (closed by NL · M and ≡):

x〈y , z〉 | x(y ′, z ′).P →⊗ P{y ′/y}{z ′/z}

x〈y〉 | !x(z).P →! P{z/y} | !x(z).Q

Binary communication = multiplicative cut-elimination

Unary communication = exponential cut-elimination

Variation on the rules due to Pfenning-Caires et al.

Accattoli (CMU) Evaluating functions as processes 17 / 26

Page 18: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Milner’s translation with ES

The translation from λ+ ES to π is parametrized by a name.

Minor variation over Milner’s translation:

JxKa := x〈a〉Jλx .tKa := a(x , b).JtKb

JtsKa := νbνx(JtKb | b〈x , a〉 | !x(c).JsKc) x is freshJt[x/s]Ka := νx(JtKa | !x(b).JsKb)

Red names correspond to multiplicative formulas.

Usual names (x,y,...) correspond to exponential formulas.

Accattoli (CMU) Evaluating functions as processes 18 / 26

Page 19: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Proof nets as processes

JxKa = JtsKa = Jλx .sKa = Jt[x/s]Ka =

a

x

d*

a

b x

on*

c

!*

s

t

Γ

a

b

s

x

(*

a

t

x

b

!*

s

Γ

= x〈a〉 = νbνx(JtKb | b〈x , a〉 | !x(c).JsKc ) = a(x , b).JtKb = νx(JtKa | !x(b).JsKb)

Accattoli (CMU) Evaluating functions as processes 19 / 26

Page 20: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Term reductions to process reductions

Lemma (action on contexts)

JE L · MKa = NLJ·Ka′M

Proof.

Straightforward induction on E L · M.

Theorem (Strong simulation)

1 t (dB s implies JtKa ⇒⊗≡ JsKa.2 t (ls s implies JtKa ⇒!≡ JsKa.

Proof.

By induction on t (dB s and t (ls s, using the lemma.

Accattoli (CMU) Evaluating functions as processes 20 / 26

Page 21: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Converse relation and distance

Distance for π ⇒ simpler converse relation.

The traditional rewriting rules (closed by NL · M and ≡):

x〈y , z〉 | x(y ′, z ′).P →⊗ P{y ′/y}{z ′/z}

x〈y〉 | !x(z).P →! P{z/y} | !x(z).Q

The rewriting rules at a distance (closed by N ′L · M only):

NLx〈y , z〉M | MLx(y ′, z ′).PM 7→⊗ MLNLP{y ′/y}{z ′/z}MM

NLx〈y〉M | ML!x(z).PM 7→! MLNLP{z/y} | !x(z).PMM

Accattoli (CMU) Evaluating functions as processes 21 / 26

Page 22: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Reflecting process reductions

Lemma (reflection of reduction contexts)

If NLPM⇒ NLQM then ∃E L · M s.t. JE L · MKa = NL · M.

Theorem (strong converse simulation)

1 If JtKa ⇒⊗ Q then exists s s.t. t (dB s and JsKa ≡ Q.

2 If JtKa ⇒! Q then exists s s.t. t (ls s and JsKa ≡ Q.

Accattoli (CMU) Evaluating functions as processes 22 / 26

Page 23: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Improved simulation

Summing up we obtain:

t s

JtKa

t s

JtKa JsKaπ

and

t

JtKa Qπ

⇒ ∃s s.t.

t

JtKa Q

s

π

Accattoli (CMU) Evaluating functions as processes 23 / 26

Page 24: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Call-by-value

The same approach can be applied to the call-by-value λ-calculus.

There is a CBV translation of λ-calculus in linear logic.

I obtained a calculus strongly bisimilar to CBV proof nets [LSFA’12].

One gets exactly the same strong bisimulation.

A notion of CBV linear weak head reduction, which is new.

Accattoli (CMU) Evaluating functions as processes 24 / 26

Page 25: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

Conclusions

Distance = rewriting rules via contexts =Term rewriting matching graph rewriting.

General technique, developed for ES, working also for π.

Distance provides a simple and elegant re-understanding of λ ↪→ π.

Catching also the call-by-value case.

Unification of λ + ES, linear logic, π-calculus (session types).

Accattoli (CMU) Evaluating functions as processes 25 / 26

Page 26: Evaluating functions as processes - cs.cmu.eduiliano/projects/metaCLF/inc/dl/slides/...-calculus model of functional programming. ... Evaluating functions as processes 4 / 26. Intuitions

THANKS!

Accattoli (CMU) Evaluating functions as processes 26 / 26