37
Towards Meta-Reasoning in the Concurrent Logical Framework CLF Iliano Cervesato Jorge Luis Sacchini Carnegie Mellon University August 26, 2013 Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 1 / 22

Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Towards Meta-Reasoning in the Concurrent LogicalFramework CLF

Iliano Cervesato Jorge Luis Sacchini

Carnegie Mellon University

August 26, 2013

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 1 / 22

Page 2: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Objectives

Concurrency and distribution are essential features in modern PL.

Their formal semantics is not as well understood or studied as in thesequential case.

Formal semantics will enable, e.g., development of formal verificationframeworks, verifying program transformations, etc.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 2 / 22

Page 3: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Logical frameworks

Logical frameworks are formalisms used to specify PL and theirmetatheory

I Coq, Agda, Twelf, Beluga, Delphin, . . .

Our goal is to develop logical frameworks for specifying concurrentand distributed PL.

Two main approachesI Deep approach: specify a concurrency model in a general purpose LF

(Coq, Agda)I Shallow approach: provide direct support in a special purpose LF

(Twelf, Beluga, Delphin, LLF, HLF, CLF)

We follow the shallow approach, using CLF as our LF

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 3 / 22

Page 4: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

CLF

CLF is an extension of the Edinburgh logical framework (LF) designedto specify distributed and concurrent systems

Large number of examples: semantics of PL, Petri nets, votingprotocols, etc.

CLF extends LF with linear types and a monad to encapsulateconcurrent effects:

A ::= a · S | Π!x : A.A | A→ B | A( B | {∆}∆ ::= · | ∆, ↓x : A | ∆, !x : A

Example: A( B ( {x : B, y : C}.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 4 / 22

Page 5: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Substructural operational semantics

Substructural operational semantics combinesI Structural operational semanticsI Substructural logics

Extensible: we can add features without breaking previousdevelopments

Expressive: wide variety of concurrent and distributed mechanisms(Simmons12).

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 5 / 22

Page 6: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Higher-order abstract syntax

Simply-typed λ-calculus

e ::= x | λx .e | e e

In (C)LF:

exp : type.

lam : (exp→ exp)→ exp .app : exp→ exp→ exp .

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 6 / 22

Page 7: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

SSOS

Linear-destination passing style (Pfenning04)

Based on multiset rewriting; suitable for specifying in linear logic

Multiset of facts:

eval e d Evaluate expression e in destination d

ret e d Value e in destination d

fapp d1 d2 d Application: expects the function and argumentto be evaluated in d1 and d2, and the result isevaluated in d

Evaluation rules transform multisets of facts

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 7 / 22

Page 8: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

SSOS

Multiset of facts:

eval e d , ret e d , fapp d1 d2 d

In CLF:

dest : type.eval : exp→ dest→ type.ret : exp→ dest→ type.fapp : dest→ dest→ dest→ type.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 8 / 22

Page 9: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Evaluation rules

Multiset rewriting rules:

eval e d ret e d if e is a value

where d1, d2 fresh

In CLF:

step/eval : eval e d ( {ret e d}.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 9 / 22

Page 10: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Evaluation rules

Multiset rewriting rules:

eval (e1 e2) d eval e1 d1, eval e2 d2, fapp d1 d2 d

where d1, d2 fresh

In CLF:

step/app : eval (app e1 e2) d( {!d1 !d2 : dest,

x1 : eval e1 d1, x2 : eval e2 d2,y : fapp d1 d2 d}.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 9 / 22

Page 11: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Evaluation rules

Multiset rewriting rules:

ret (λx .e1) d1, ret e2 d2, fapp d1 d2 d eval (e1[e2/x ]) d

where d1, d2 fresh

In CLF:

step/beta : ret (lam e1) d1( ret e2 d2( fapp d1 d2 d( {eval (e1 e2) d}

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 9 / 22

Page 12: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Traces

Evaluations (sequences of steps) are represented in CLF using traces.

A trace is a sequence of computational steps, where independentsteps can be permuted:

ε ::= � | {∆}�c · S | ε1; ε2

{∆}�c · S means apply rule c to arguments S returning a newcontext ∆; essentially a rewriting rule.

Typing rules for traces:∆ ` ε : ∆′

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 10 / 22

Page 13: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Traces

Equality on traces: α-equivalence modulo permutation of independentsteps

Two steps are independent if they operate on different variables:

{∆1}�c1 · S1; {∆2}�c2 · S2 ≡ {∆2}�c2 · S2; {∆1}�c1 · S1

if dom(∆1) ∩ FV(S2) = dom(∆2) ∩ FV(S1) = ∅.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 11 / 22

Page 14: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d

eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d , eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, , fapp d1 d2 d eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` �

: (!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 15: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d

, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, , fapp d1 d2 d eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

: (!d , !d1, !d2 : dest)(x : eval (lam λx .x) d1)(y : eval (lam λy .y) d2)(z : fapp d1 d2 d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 16: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d

ret (λx .x) d1, , fapp d1 d2 d eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

{x ′} ← step/eval x ;

: (!d , !d1, !d2 : dest)(x ′ : ret (lam λx .x) d1)(y : eval (lam λy .y) d2)(z : fapp d1 d2 d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 17: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, ret (λy .y) d2, fapp d1 d2 d

eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

{x ′} ← step/eval x ;{y ′} ← step/eval y ;

: (!d , !d1, !d2 : dest)(x ′ : ret (lam λx .x) d1)(y ′ : ret (lam λy .y) d2)(z : fapp d1 d2 d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 18: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, ret (λy .y) d2, fapp d1 d2 d eval (λy .y) d

ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

{x ′} ← step/eval x ;{y ′} ← step/eval y ;{w}← step/beta x ′ y ′ z ;

: (!d , !d1, !d2 : dest)(w : eval (lam λy .y) d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 19: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, ret (λy .y) d2, fapp d1 d2 d eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

{x ′} ← step/eval x ;{y ′} ← step/eval y ;{w}← step/beta x ′ y ′ z ;{w ′}← step/eval w ;

: (!d , !d1, !d2 : dest)(w ′ : ret (lam λy .y) d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 20: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Example

eval ((λx .x)(λy .y)) d eval (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, eval (λy .y) d2, fapp d1 d2 d ret (λx .x) d1, ret (λy .y) d2, fapp d1 d2 d eval (λy .y) d ret (λy .y) d

In CLF:

(!d : dest)(x0 : eval (app (lam λx .x) (lam λy .y)) d)` {!d1, !d2, x , y , z}← step/app x0;

{y ′}← step/eval y ;{x ′}← step/eval x ;{w}← step/beta x ′ y ′ z ;{w ′}← step/eval w ;

: (!d , !d1, !d2 : dest)(w ′ : ret (lam λy .y) d)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 12 / 22

Page 21: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Safety

Safety is the conjunction of the following properties:I Preservation: evaluation preserves well-typed statesI Progress: a well-typed state is either final (result) or is possible to take

a step

Safety for SSOS can be proved by defining a suitable notion ofwell-typed multiset.For example, eval e1 d , eval e2 d is not well typed.

Well-typed states can be defined by rewriting rules.

Well-typed states are generated following the structure of the term.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 13 / 22

Page 22: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Safety

Well-typed states:

gen : tp→ dest→ type.gen/eval : gen t d ( of e t → {eval e d}.gen/ret : gen t d ( of e t → {ret e d}.gen/fapp : gen t d ( {!d1 !d2 : dest,

fapp d1 d2 d ,gen (arr t1 t) d1,gen t1 d2}.

Generating well-typed states:

gen t d ∗ A

where A contains no fact of the form gen t0 d0.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 14 / 22

Page 23: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Safety

Lemma (Safety)

Preservation If {gen t d} ∗gen A and A step A′ then{gen t d} ∗gen A′.

Progress if {gen t d} ∗gen A, then either A Is of the form {ret e d}or there exists A′ such that A step A′.

Proof.

Preservation The proof proceeds by case analysis on the evaluation step.

Progress The proof proceeds by induction on the generating trace.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 15 / 22

Page 24: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Limitations of CLF

In CLF it is not possible to express preservation and progress.

CLF lacks support for first-order traces, and quantification overcontexts.

We propose an extension of LF with trace types: Meta-CLF.

Similar approaches are taken in Beluga, Delphin, Abella (in the senseof using a two-level approach).

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 16 / 22

Page 25: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

Meta-CLF is an extension of LF with trace types and quantificationover contexts and names:

A ::= . . . | {∆}Σ∗ {∆} | {∆}Σ1 {∆} | Πψ : ctx.A | ∇x .A

{∆}Σ∗ {∆′} is the type of all traces ε satisfying ∆ ` ε : ∆′ that useonly rules in the signature Σ.

{∆}Σ1 {∆′} is the type of all 1-step traces ε satisfying ∆ ` ε : ∆′

that use only rules in the signature Σ.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 17 / 22

Page 26: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

In Meta-CLF we can express properties about traces:

preservation : ∇d . ∇g . Πψ1 : ctx. Πψ2 : ctx.

{!d : dest, g : gen d t}Σ∗gen {ψ1} → {ψ1}Σ1step {ψ2} →

{!d : dest, g : gen d t}Σ∗gen {ψ2} → type.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 18 / 22

Page 27: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0 gen t0 d0

∗gen

∗gen

A, gen t d A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 28: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0

gen t0 d0

∗gen

∗gen

A, gen t d A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 29: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0

gen t0 d0

∗gen

∗gen

A, gen t d

A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 30: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0 gen t0 d0

∗gen

∗gen

A, gen t d

A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 31: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0 gen t0 d0

∗gen

∗gen

A, gen t d A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 32: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

The safety proof in Meta-CLF follows closely the paper proof.

gen t0 d0 gen t0 d0

∗gen

∗gen

A, gen t d A.gen t d

gen

gen

A, eval e d step A, ret e d

In Meta-CLF:

tpres/ret : tpres (X1; {↓x}�gen/eval e d0 g0 H)

({↓y}�step/eval e d0 x Hv )

(X1; {↓y}�gen/ret e d0 g0 H Hv )

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 19 / 22

Page 33: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Meta-CLF

Both proofs of preservation and progress in Meta-CLF follow thepen-and-paper proofs.

Preservation is performed by case analysis (no induction).

Progress relies on induction, but termination is easy (size of thetrace).

However, we rely on coverage to ensure the proof is total.

Coverage checking in the presence of traces is tricky, due to thepossibility of permuting steps. (Left for future work.)

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 20 / 22

Page 34: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

SSOS

We can extend this semantics with other features without invalidatingthe previous rules

Example: store, futures, call/cc, communication,. . .

location : type.loc : location→ exp .get : exp→ exp .ref : exp→ exp .set : exp→ exp→ exp .

cell : location→ exp→ type.step/ref : eval (ref e) d ( {!d1 : dest, !l : loc,

fref d1 l , eval e d1, ret (loc l) d}.step/fref : ret e d ( fref d l ( {cell l e}.

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 21 / 22

Page 35: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

SSOS

We can extend this semantics with other features without invalidatingthe previous rules

Example: store, futures, call/cc, communication,. . .

future : exp→ exp .promise : dest→ exp .

deliver : exp→ dest→ type.

step/fut : eval (future e) d ( {!d1 : dest,eval e d1, fdel d1,ret (promise d1) d}.

step/fdel : ret e d ( fdel d1( {!deliver e d}.step/promise : ret (promise d1) d ( delivee e d1 → ret e d .

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 21 / 22

Page 36: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Conclusions and future work

Our goal is to develop logical frameworks suitable for specifyingconcurrent and distributed systems.

We introduced Meta-CLF, an extension of LF to reason about CLFspecifications.

We showed that it is expressive enough to write safety proofs ofparallel/concurrent PL.

Future workI Coverage checkerI Termination checkerI Implementation

Thank you!

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 22 / 22

Page 37: Towards Meta-Reasoning in the Concurrent Logical ......eval e d ret e d if e is a value where d 1, d 2 fresh In CLF: step=eval: eval e d (fret e dg: Iliano Cervesato, Jorge Luis Sacchini

Conclusions and future work

Our goal is to develop logical frameworks suitable for specifyingconcurrent and distributed systems.

We introduced Meta-CLF, an extension of LF to reason about CLFspecifications.

We showed that it is expressive enough to write safety proofs ofparallel/concurrent PL.

Future workI Coverage checkerI Termination checkerI Implementation

Thank you!

Iliano Cervesato, Jorge Luis Sacchini Towards Meta-Reasoning in the Concurrent Logical Framework CLF 22 / 22