csl 2013 "axiomatizing subtyped delimited continuations"

32
Axiomatizing Subtyped Delimited Continuations Marek Materzok Introduction Evaluation contexts Delimited control Shift 0 /$ Axioms Proof Sabry’s proof method CGS translation Typed version Relationship with shift/reset Conclusions Axiomatizing Subtyped Delimited Continuations Marek Materzok Institute of Computer Science, University of Wroclaw CSL 2013 Sep 4, 2013

Upload: marek-materzok

Post on 26-Jun-2015

141 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Axiomatizing Subtyped DelimitedContinuations

Marek MaterzokInstitute of Computer Science, University of Wroc law

CSL 2013Sep 4, 2013

Page 2: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Structure of the talk

I Short introduction to continuations

I Introduction to shift0/$ operators

I The axioms

I The proof method

I The typed version

I Conclusion

This is a continuation of our previous work (ICFP’11,APLAS’12).

Page 3: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

What are continuations?

I Continuations are representations of the rest of theprogram execution.

I Control operators are a means of altering a program’scontrol flow.

I They can be thought of as capturing and restoring theprogram’s control stack, making continuations firstclass.

I The operator call/cc, which captures ,,full”continuations, is well known and implemented in e.g.Scheme and SML/NJ.

Page 4: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Evaluation contexts

Evaluation context is a ,,term with a hole”:

if sq(2) = 4 then 1 else 0

I cyan part – evaluation context

It is a formal representation of the continuation.

Page 5: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Partial evaluation contexts

One can consider partial contexts:

if sq(2) = 4 then 1 else 0

Partial context is a prefix of the full context.

I cyan part – evaluation context

I yellow part – partial evaluation context

Page 6: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Delimited control operators

I They allow to reify partial contexts as functions, just ascall/cc reifies entire contexts.

I Examples are Felleisen’s control/prompt and Danvy andFilinski’s shift/reset.

I Delimited control has lots of applications, includingasynchronous I/O, representing monads, Webprogramming, mobile code, linguistics, and so on.

Page 7: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Delimited control operators

Delimited control operators usually come in pairs:

I the delimiter, which marks where a context begins,

I capture operator, which reifies the context up to thedynamically nearest delimiter.

Example:

1 + 〈2 + Sf.f(f 3) 〉

Page 8: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Delimited control operators shift/reset

I The most known and well explored delimited controloperators.

I The shift operator captures the context up to (andincluding) the nearest delimiter and resumes executionin an empty context.

1 + 〈2 ∗ Sf. 3 + Sg.f(g 4) 〉

The term above evaluates to 15: f gets the yellow context,g gets the cyan one. Notice the “implicit” delimiter createdby a shift.

Page 9: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Delimited control operators shift0/reset0

I A variant of shift/reset operators (also by Danvy andFilinski).

I When shift0 executes, the execution resumes in thesurrounding context.

I This allows the shift0 operator to “reach” beyond thenearest surrounding delimiter.

1 + 〈2 + 〈3 + S0f.S0g.f (g (g 4)) 〉 〉

The term above evaluates to 12. (f gets theyellow context , g gets the cyan one .)

Page 10: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Delimited control operators shift0/$

I A variant of shift0/reset0 operators, inspired by Kiselyovand Shan’s work (TLCA’07).

I The $ operator is a delimiter with a “chain link” to afunction which is executed in place (not inside!) of thedelimiter when the delimited term evaluates completely.

(λx.x ∗ 2) $ (λx.x+ 1) $ 1 + S0f.S0g.f (g 2)

Evaluates to 6. (f gets the yellow context , g gets thecyan one .)

Reading tip: the $ operator is right-associative, binds weakerthan every other binary operator, but stronger than λ.

Page 11: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Bigger example (shift0/$)

(λx.x+ 2) $ (λy.S0f.f (f y)) $ 1 + S0g.2 ∗ g 1

The term above evaluates to 14:

I g gets the yellow context , which gets applied to 1,

I y gets the value 2,

I f gets the cyan context joined with 2 ∗ ,

I f (f y) gets evaluated.

Page 12: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Bigger example (shift0/$)

(λx.x+ 2) $ (λy.S0f.f (f y)) $ 1 + S0g.2 ∗ g 1

→(λx.x+ 2) $ 2 ∗ ((λy.S0f.f (f y)) $ 1 + 1)

The term above evaluates to 14:

I g gets the yellow context , which gets applied to 1,

I y gets the value 2,

I f gets the cyan context joined with 2 ∗ ,

I f (f y) gets evaluated.

Page 13: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Bigger example (shift0/$)

(λx.x+ 2) $ (λy.S0f.f (f y)) $ 1 + S0g.2 ∗ g 1

→(λx.x+ 2) $ 2 ∗ ((λy.S0f.f (f y)) $ 1 + 1)

→(λx.x+ 2) $ 2 ∗ (S0f.f (f 2))

The term above evaluates to 14:

I g gets the yellow context , which gets applied to 1,

I y gets the value 2,

I f gets the cyan context joined with 2 ∗ ,

I f (f y) gets evaluated.

Page 14: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Bigger example (shift0/$)

(λx.x+ 2) $ (λy.S0f.f (f y)) $ 1 + S0g.2 ∗ g 1

→(λx.x+ 2) $ 2 ∗ ((λy.S0f.f (f y)) $ 1 + 1)

→(λx.x+ 2) $ 2 ∗ (S0f.f (f 2))

→(λy.(λx.x+ 2) $ 2 ∗ y) ((λy.(λx.x+ 2) $ 2 ∗ y) 2)

The term above evaluates to 14:

I g gets the yellow context , which gets applied to 1,

I y gets the value 2,

I f gets the cyan context joined with 2 ∗ ,

I f (f y) gets evaluated.

Page 15: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Bigger example (shift0/$)

(λx.x+ 2) $ (λy.S0f.f (f y)) $ 1 + S0g.2 ∗ g 1

→(λx.x+ 2) $ 2 ∗ ((λy.S0f.f (f y)) $ 1 + 1)

→(λx.x+ 2) $ 2 ∗ (S0f.f (f 2))

→(λy.(λx.x+ 2) $ 2 ∗ y) ((λy.(λx.x+ 2) $ 2 ∗ y) 2)

→(λy.(λx.x+ 2) $ 2 ∗ y) 6→ 14

The term above evaluates to 14:

I g gets the yellow context , which gets applied to 1,

I y gets the value 2,

I f gets the cyan context joined with 2 ∗ ,

I f (f y) gets evaluated.

Page 16: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

CPS semantics

The control operators can be interpreted in the lambdacalculus. This makes the continuations explicit.

JxK = λk.k xJλx.eK = λk.k (λx.JeK)Je1 e2K = λk.Je1K (λv1.Je2K (λv2.v1 v2 k))

JS0x.eK = λx.JeKJ〈e〉K = JeK (λx.λk.k x)

Je1 $ e2K = λk.Je1K (λv1.Je2K v1 k)

This interpretation is consistent with the operational viewpresented in previous slides: e1 → e2 implies Je1K =βη Je2K.

Page 17: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

The goal

The operational view is not complete with respect to theCPS semantics. For example:

Jλf.(λx.x) $ 2 + f 1K=βη λk.k (λf.f 1 (λx.λk.k (2 + x)))

=βη Jλf.(λx.2 + x) $ f 1K

But there is no way to equalize the two terms using onlyoperational rules.

The goal: find a finite set of equational axioms defined onthe terms of shift0/reset0 (or shift0/$) such that

e1 =ax e2 iff Je1K =βη Je2K

Page 18: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

The goal

The operational view is not complete with respect to theCPS semantics. For example:

Jλf.(λx.x) $ 2 + f 1K=βη λk.k (λf.f 1 (λx.λk.k (2 + x)))

=βη Jλf.(λx.2 + x) $ f 1K

But there is no way to equalize the two terms using onlyoperational rules.

The goal: find a finite set of equational axioms defined onthe terms of shift0/reset0 (or shift0/$) such that

e1 =ax e2 iff Je1K =βη Je2K

Page 19: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

The axioms for shift0/reset0

(λx.e) v = e{v/x}λx.v x = v x 6∈ FV(v)

(λx.E[x]) e = E[e] x 6∈ FV(E)〈E[S0x.e]〉 = e{λx.〈E[x]〉/x} x 6∈ FV(E)

〈v〉 = vS0k.〈(λx.S0z.k x) e〉 = e k 6∈ FV(e)〈(λx.S0k.〈e1〉) e2〉 = 〈(λx.e1) e2〉 k 6∈ FV(e1)

Page 20: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

The axioms for shift0/$

(λx.e) v = e{v/x}S0x.x $ e = e x 6∈ FV(e)λx.v x = v x 6∈ FV(v)

v $S0x.e = e{v/x}v1 $ v2 = v1 v2v $E[e] = (λx.v $E[x]) $ e

Page 21: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Proving completeness

I Proving soundness is easy. What about completeness?

I Proof for shift/reset: uses a restricted grammar for thetarget terms with six syntactic categories and an inversetranslation (Kameyama and Hasegawa, ICFP’03).

I Sabry introduced a technique for proving completenessfor various control operators, which involves anintermediate language. However, the technique was notsuccessfully applied for shift/reset.

I But it worked very well for shift0/$!

Page 22: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Taking care of shift0/reset0

I The shift0/reset0 operators are of equal expressivepower as shift0/$ (APLAS’12):

〈e〉 ≈ (λx.x) $ ee1 $ e2 ≈ (λw.〈(λv.S0k.w v) e2〉) e1

(I will be using 〈e〉 as a shorthand for (λx.x) $ e)

I It can be proved that the axioms for shift0/reset0 aresound and complete if and only if the axioms forshift0/$ are sound and complete.

Page 23: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Opaque CPS

I Opaque CPS translation is an abstract version of theCPS translation:

JxKo = get k.k xJλx.eKo = get k.k (λx.JeKo)Je1 e2Ko = get k.send (λv1.

send (λv2.send k (v1 v2)) Je2Ko) Je1Ko

I Uses abstract control operators (get and send), whichhave semantics consistent with β and η-conversions, forcontinuation passing:

send v get x.e =op e{v/x}get x.send x e =op e x 6∈ FV(e)

Page 24: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

CGS translation

I The opaque CPS translation with the get and sendoperators implemented using some control operators iscalled a continuation-grabbing style (CGS) translation.

I The fact that CGS and CPS are both instances ofopaque CPS can be used for proving completeness.

I Can we find a CGS translation for shift0/$?

get x.e =def S0x.esend e1 e2 =def e1 $ e2

It’s that simple!

Page 25: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

CGS translation

I The opaque CPS translation with the get and sendoperators implemented using some control operators iscalled a continuation-grabbing style (CGS) translation.

I The fact that CGS and CPS are both instances ofopaque CPS can be used for proving completeness.

I Can we find a CGS translation for shift0/$?

get x.e =def S0x.esend e1 e2 =def e1 $ e2

It’s that simple!

Page 26: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

CGS translation for shift0/$

We get the following translation:

JxKg = S0k.k xJλx.eKg = S0k.k (λx.JeKg)Je1 e2Kg = S0k.(λv1.(λv2.k $ v1 v2) $ Je2Kg) $ Je1Kg

JS0x.eKg = S0x.JeKgJe1 $ e2Kg = S0k.(λv1.k $ v1 $ Je2Kg) $ Je1Kg

I e1 =g e2 implies e1 =ax e2;

I JeKg =ax e;

I therefore, if Je1Kg =g Je2Kg, then e1 =ax e2.

Completeness follows easily, with a minor hurdle.

Page 27: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Type system for shift0

I There are expressive and elegant type systems for bothshift0/reset0 (ICFP’11) and shift0/$ (APLAS’12).

I The type systems track how the terms manipulate theircontexts using effects. In particular, it distinguisheseffect-free terms from effectful ones.

I An important part of the type systems, which givesthem their expresiveness, is subtyping. It allows to useeffect-free terms in contexts permitting effects. (This isa simplification.)

Page 28: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Proofs in the typed setting

I The proofs can be adapted for the typed setting.

I In the adapted proofs, the subtyping is eliminated at theCGS stage: the CGS terms are fully explicit.

I The typed axioms are more permissive than the untypedones: value restriction is replaced by purity restriction.

Page 29: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

K&H axioms in the typed setting

I The shift/reset operators can be embedded inshift0/reset0:

Sx.e =def S0x.〈e〉

I Using this embedding, the axioms of Kameyama andHasegawa are not validated in the untyped setting.

I The type system for shift/reset by Danvy and Filinskican be embedded into the type system for shift0/reset0.

I In the image of this embedding, the axioms ofKameyama and Hasegawa are valid.

Page 30: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

K&H axioms in the untyped setting

I There is a different embedding of shift/reset in shift0/$:

Sx.e =def S0x.e{λy.S0f.S0g.(λz.g $ f z) $x y/x}〈e〉 =def S0f.S0g.(λx.g $ f x) $ 〈e〉

I The Kameyama and Hasegawa’s axioms are valid in theuntyped setting when using this embedding.

Page 31: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Conclusions

I The Sabry’s elegant proof method can be applied forshift0/$.

I The axioms for shift0/$ are simple and elegant.

I The axioms for shift0/reset0 can be proved completeusing the axioms for shift0/$.

I The proofs can be adapted to the typed version of thelanguages considered.

I The Kameyama and Hasegawa’s axioms for shift/resetare validated only in the typed setting (with the folkloreinterpretation of shift/reset).

Page 32: CSL 2013 "Axiomatizing Subtyped Delimited Continuations"

AxiomatizingSubtypedDelimited

Continuations

Marek Materzok

Introduction

Evaluation contexts

Delimited control

Shift0/$

Axioms

Proof

Sabry’s proof method

CGS translation

Typed version

Relationship withshift/reset

Conclusions

Thank you!

Thank you for your attention!This work was funded by Polish NCN grant, and co-fundedby the European Social Fund.