Top Banner
Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC CS510 Section FSC Winter 2005 Winter 2005
30

Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

Tim SheardOregon Graduate Institute

Lecture 11: A Reduction Semantics for MetaML

CS510 Section FSCCS510 Section FSC

Winter 2005Winter 2005

Page 2: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

2Cs583 FSC Winter 2005

AssignmentsProjects. By now you should have a project in mind. If you haven’t already done so please write down a 1 page description and send it to me.Projects are Tentatively due Thursday March 17, 2005 Projects should include well commented code A number of example runs, with results A short writeup – several pages – describing

the problem, your approach, your code, and any drawbacks you see in your solution.

Homework. There will be no more homeworks. Work on your project instead.

Page 3: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

3Cs583 FSC Winter 2005

Acknowledgements

This set of slides is an adaption of Chapter 6 from Walid Taha’s thesis

Multi-stage Programming, Its Theory and Applications.

Page 4: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

4Cs583 FSC Winter 2005

Map for todays lecture

Reduction semantics for lambda calculus Rewrite rules Confluence Beta-v

Extensions for meta ml Rules for code Object level reductions Intensional analysis

Page 5: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

5Cs583 FSC Winter 2005

Reduction Semantics

Rules for reducing expressions in a language.Not all expressions are reducible.Usually expressed as an (un ordered) set of rewrite rules.Good for reasoning about terms in the language when the context of the term is vague or unknown (local reasoning).

Page 6: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

6Cs583 FSC Winter 2005

Expressions and ValuesExpressions denote Commands Computations Language constructs that have “work left to be

done”

Values denote Answers Acceptable results Expressions that require “no further

evaluation”

Values are a subset of ExpressionsSyntactic view of the world

Page 7: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

7Cs583 FSC Winter 2005

Example - calculus Termst ::= x | t t | (t,t) | x . t | i | #i t

Values v ::= x | x . t | (v,v) | i

Need rules for eliminating applications and variables

In extensions need rules for performing primitive operations, like (+) (so called -rules)

Projecting from tuples, (#1, #2) etc. Eta reductions

Page 8: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

8Cs583 FSC Winter 2005

Rewrite rules

Call by Name rule

Call by Value rule

Projection rules

]:[).( 2121 exeeex

]:[).( vxevex v

1pair

21 ),(1# vvv

Page 9: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

9Cs583 FSC Winter 2005

Contexts

Expressions with a single “hole”Denoted C[e] C is the context e is the hole

Example: If C[_] = f x + _ Then C[e] = f x + e

Page 10: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

10Cs583 FSC Winter 2005

Desired Property of reduction semantics

][][. 2121 eCeCeeC RR •For all contexts

•If e1 rewrites by R to e2

•Then C[e1] rewrites by R to C[e2]

Allows “local” rewrites, and “local” reasoning, regardless of the wider enclosing context C.

Page 11: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

11Cs583 FSC Winter 2005

Coherence & ConfluenceTerm rewriting systems are non-deterministic.Any rule that applies can be used at any time.Applying the rules could get different results.

Coherence – any sequence of rewrites that leads to a ground value leads to the same ground value.Confluence – Applicable rules can be applied in any order, and this does not affect the set of possible results. I.e. one never goes down a “dead-end”Confluence implies Coherence

Page 12: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

12Cs583 FSC Winter 2005

Example

run (power 1 <2>)

run < ~<2> * ~<1> >

run < 2 * 1 >

run 22 * 1

*

esc twice

run

2

run

Page 13: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

13Cs583 FSC Winter 2005

Results

We want coherenceIts often easier to show confluenceConfluence implies coherenceCoherence says if we apply rules and we get to a value, then we’ll always get the same value.Importance for a deterministic language Allows local reasoning to be valid

Page 14: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

14Cs583 FSC Winter 2005

Extending to MetaMLTermse ::= x | e e | x . e | i | <e> | ~e | run e

Values v ::= x | x . e | i | < ? >

Can we add the following rules to v ?

ee esc-bracket~

eerun esc-run

Page 15: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

15Cs583 FSC Winter 2005

What goes wrong?

Beta screws up levels Every escape is attached to some

bracket Escape can only appear inside bracket. But consider:

< (fn x => ~x) ~<4> >

< ~ ~<4> >

Page 16: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

16Cs583 FSC Winter 2005

What goes wrong 2?

Beta conflicts with intensional analysis I.e. if we allow programmers to pattern

match against code. And if we allow beta under brackets Then we lose coherence

fun isbeta <~f ~x> = true

| isbeta _ = false

isbeta < (fn x => x) (fn y => y) >

Page 17: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

17Cs583 FSC Winter 2005

Fixing things up

To fix screwing up levels make the bracket and escape rule like v, I.e. force the rule only to apply when the thing in brackets is a value. Question - What is an appropriate

notion of value?

ev esc-bracket~

evrun esc-run

Page 18: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

18Cs583 FSC Winter 2005

Fixing things up 2

When beta screws up intensional analysis Fix 1. Don’t allow intensional analysis, such as

pattern matching against code Fix 2. Don’t allow beta inside brackets, such as

the code optimizations: safe-beta, safe-eta, and let-normalization.

To be sound, we must make one of these choices. MetaML makes neither. MetaML is unsound. The “feature” function allows the programmer to decide which way this should work.

Page 19: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

19Cs583 FSC Winter 2005

Expression families

e0 ::= v | x | e0 e0 | < e1 > | run e0

Terms at level 0

en+ ::= i | x | en+ en+ | x.en+

| < en++ > | ~ en | run en+

Terms inside n brackets

v ::= i | x.e0 | < e0 > values

Page 20: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

20Cs583 FSC Winter 2005

Rules

00 esc-bracket~ ee 00 esc-run eerun

]:[).( vxevex v

Page 21: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

21Cs583 FSC Winter 2005

Applying the rulesfun pow1 n x =

if n=0 then 1

else times x (pow1 (n-1) x);

fun pow2 n x =

if n=0 then <1>

else <times ~x ~(pow2 (n-1) x) >;

Prove by induction on n that : run (pow2 n <x>) = pow1 n x

Page 22: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

22Cs583 FSC Winter 2005

N=0run (pow2 n <x>) = pow1 n x

run (if n=0 then <1>

else <times ~x ~(pow2 (n-1) x) >) =

run <1> =

1 =

pow1 0 x

Page 23: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

23Cs583 FSC Winter 2005

N <> 0run (pow2 n <x>) = pow1 n x

run (if n=0 then <1>

else <times ~<x> ~(pow2 (n-1) <x>) >) =

run(<times ~<x> ~(pow2 (n-1) x) >) =

Can’t use run to erase brackets because of escapes inside.

times (run <x>) (run(pow2 (n-1) <x>)) =

times x (pow1 (n-1) x) =

pow1 n x

Page 24: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

24Cs583 FSC Winter 2005

Are the rules correct?How do we know the rules are correct?That requires answering what are the semantics of staged programs.Two approaches Syntactic approach Denotational approach

Syntactic approach can be given by an operational, or big-step semantics.Would like the reduction semantics to be sound with the big-step semantics

Page 25: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

25Cs583 FSC Winter 2005

Big-step semantics

Int i n i

Lam .x.e 0 ex

App e

]:[

.e

40

21

40

3

30

2

01

ee

eexe

ee

ex

Page 26: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

26Cs583 FSC Winter 2005

Run erun

e

30

1

30

220

1

e

eee

Br e

e

2n

1

21n

1

e

e

Esc e~

e

21

1

20

1

e

e

Page 27: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

27Cs583 FSC Winter 2005

Lam .x.e

e

21n

1

21n

1

ex

e

Esc ~e~

e

22n

1

21n

1

e

e

App e

ee

431n

21

41n

231n

1

eee

ee

Run runerun

e

21n

1

21

1

e

en

Page 28: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

28Cs583 FSC Winter 2005

Notes

Big-step semantics is based upon capture free substitution e[x := v]Two sets of rules At level 0 At level n+1 Except for escape (at 1 and n+2)

Collapses to normal bigstep semantics for lambda calculus when remove rules for brackest, escape, and run

Page 29: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

29Cs583 FSC Winter 2005

ContributionsTwo Semantics

Operational good when thinking about implementation

Axiomatic semantics good when reasoning

Soundness (adequacy) w.r.t Operational Semantics

They mean the same thing

Axiomatic semantics is confluent the order in which you apply the rules doesn't matter

Static Type checking Throws away Faulty terms Formal Type system

how to implement it Subject Reduction

proof that it works

Page 30: Tim Sheard Oregon Graduate Institute Lecture 11: A Reduction Semantics for MetaML CS510 Section FSC Winter 2005 Winter 2005.

30Cs583 FSC Winter 2005

LimitationsThis type system rejects some programs that do not reduce to faulty terms x.run ((y.<y>)x) or x.run (run ((y.<y>)<x>)) x.run x

Not unreasonable to reject x.run x should not have type: <t> t (f. <y.~(f <y>)>) (x.run x) * <y.~y>

Axiomatic Semantics Limitations Substitution is defined only on values !

different kind of semantics necessary for call by name or lazy languages.

It depends on levels