Recursion and Fixed-Point Theory

26
Recursion and Fixed-Point Theory Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Programming Language Principles Lecture 14

description

Recursion and Fixed-Point Theory. Programming Language Principles Lecture 14. Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida. Recursion and Fixed-Point Theory. We know that the meaning of let x=P in Q is the value of (  x.Q)P - PowerPoint PPT Presentation

Transcript of Recursion and Fixed-Point Theory

Page 1: Recursion and Fixed-Point Theory

Recursion and Fixed-Point Theory

Prepared by

Manuel E. Bermúdez, Ph.D.Associate ProfessorUniversity of Florida

Programming Language PrinciplesLecture 14

Page 2: Recursion and Fixed-Point Theory

Recursion and Fixed-Point Theory

• We know that the meaning of let x=P in Q

is the value of (x.Q)P

• So, what's the meaning of (the de-sugarized version of)

let rec f n = P in Q ?

Page 3: Recursion and Fixed-Point Theory

Consider Factorial:

let rec f n = n eq 0 → 1 | n*f(n-1) in f 3

• Without the 'rec', we'd have • ( f.f 3) [ n.n eq 0 → 1 | n*f(n-1) ]

• Note: the last 'f' is free.

• The 'rec' makes the last 'f' bound to the [ n. ...] expression.

Page 4: Recursion and Fixed-Point Theory

With 'rec', somehow …

( f.f 3) [ n.n eq 0 → 1 | n*f(n-1) ]=> ( n.n eq 0 → 1 | n*f(n-1)) 3

=> 3 eq 0 → 1 | 3*f(3-1)

=> 3*f(2)

=>magic 3*( n.n eq 0 → 1 | n*f(n-1)) 2

=> 3*(2 eq 0 → 1 | 2*f(2-1))

=> 3*2*f(1)

=>magic 3*2*( n.n eq 0 → 1 | n*f(n-1)) 1

=> 3*2*(1 eq 0 → 1 | 1*f(1-1))

=> 3*2*1*f(0)

=>magic 3*2*1*( n.n eq 0 → 1 | n*f(n-1)) 0

=> 3*2*1*(0 eq 0 → 1 | 0*f(0-1))

=> 3*2*1*1

=> 6

Page 5: Recursion and Fixed-Point Theory

To dispel the magic, need some math

• Let F be a function. A value w is called a "fixed-point" of F if F w = w.

• Example:

f = x.x ** 2 - 6 has two fixed points, 3 and -2, because

( x.x ** 2 - 6) 3 => 3 ** 2 - 6 => 3, and

( x.x ** 2 - 6) -2 => -2 ** 2 - 6 => -2

• Only two fixed-points: solutions to x**2-x-6 = 0.

Page 6: Recursion and Fixed-Point Theory

Fixed-points can be functions

T = f. ().(f nil)**2-6 has two fixed points, ().3 and ().-2, because

( f. ().(f nil)**2-6) ( ().3) => ().(( ().3) nil)**2-6

=> ().3**2-6

=> ().3and ( f. ().(f nil)**2-6) ( ().-2) => ().(( ().-2) nil)**2-6

=> ().-2**2-6

=> ().-2

Page 7: Recursion and Fixed-Point Theory

Let's Dispel the Magic

let rec f n = P in Q=> let rec f = n.P in Q (fcn_form)<= let rec f = ( f. n.P) f in Q

(abstraction)<= let rec f = F f in Q where F = f. n.P

(abstraction).

• Now there are no free occurrences of f in F, and only one free occurrence of f overall.

Page 8: Recursion and Fixed-Point Theory

Dispelling magic, (cont’d)

• But, let rec f = F f in Q means we want f to be a fixed point of F !

• So, re-phrase it aslet f = A_fixed_point_of F in Q.

• The "A-fixed_point_of" operator is called a "fixed point finder". We call it "Y“, or Ystar, or Y*.

Page 9: Recursion and Fixed-Point Theory

Dispelling magic, (cont’d)

• So, we have let f = Y F in Q

=> ( f.Q) (Y F)= ( f.Q) (Y ( f. n.P))

• Note: No free occurrences of f !

• So, explaining the purpose of "rec" is the same as finding a fixed point of F.

Page 10: Recursion and Fixed-Point Theory

How do we find a suitable Y ?

• WE DON'T NEED TO !

• We only need to use some of its characteristics:1. f = Y F2. F f = f

• Substituting 1) in 2), we obtain

F (Y F) = Y F

• This is the fixed point identity.

Page 11: Recursion and Fixed-Point Theory

Let's extend some earlier definitions:

• Definition:

• Axiom (rho): Y F => F (Y F).

• (Extended) Definition:• An applicative expression M is not in

normal form if it is of the form Y N.

• (Extended) Definition:• A reduction sequence is in normal

order if at every step we reduce the left-most Y or .

Page 12: Recursion and Fixed-Point Theory

Let's Do the Factorial

• This time, no magic. Just science. • F = f. n.n eq 0 → 1 | n*f(n-1), so

( f.f 3) (Y F) => Y F 3

=> F (Y F) 3= ( f. n.n eq 0 → 1 | n*f(n-1)) (Y F) 3=> ( n.n eq 0 → 1 | n* Y F (n-1)) 3

=> , 3* Y F (2)

=> 3* F (Y F) 2

Page 13: Recursion and Fixed-Point Theory

= 3* ( f. n.n eq 0 → 1 | n*f(n-1)) (Y F) 2=> 3* ( n.n eq 0 → 1 | n* Y F (n-1)) 2

=>, 3*2* Y F (1)

=> 3*2* F (Y F) 1

= 3*2* ( f. n.n eq 0 → 1 | n*f(n-1)) (Y F) 1=> 3*2* ( n.n eq 0 → 1 | n* Y F (n-1)) 1

=>, 3*2*1* Y F (0)

=> 3*2*1* F (Y F) 0

= 3*2*1* ( f. n.n eq 0 → 1 | n*f(n-1)) (Y F) 0=> 3*2*1* ( n.n eq 0 → 1 | n* Y F (n-1)) 0

=>, 3*2*1*1

=> 6

Let's Do the Factorial (cont’d)

Page 14: Recursion and Fixed-Point Theory

Note:

• Normal order is required. In PL order the evaluation would not terminate.

• Lemma: YF is in fact the factorial function.

• Proof (by induction, see notes).

Page 15: Recursion and Fixed-Point Theory

Recursion via lambda calculus.

• The following value of Y will work:

Y = F.( f.f f) ( g. F (g g))

• Lemma: Y satisfies the fixed-point identity.

• Proof: see notes.

Page 16: Recursion and Fixed-Point Theory

Recursion in the CSE Machine

• Alternatives:1. Use Y = F.( f.f f) ( g.F(g g)).

• Pretty tedious. Won't work, because it requires normal order.

2. Delay evaluation of arguments in Y above, (as in Cond, earlier).• Could use

Z = F.( f.f f) ( h.F( x.h h x)).• EXTREMELY tedious.

3. Our choice: a variation of the fixed-point identity.

Page 17: Recursion and Fixed-Point Theory

Subtree transformation for ‘rec’

• Build AST for factorial, and standardize it.• RPAL subtree transformation rule for ‘rec’.

(remember we skipped it ?)• Example: factorial (see diagram)

rec => = | / \ = X gamma / \ / \ X E Ystar lambda / \ X E

Page 18: Recursion and Fixed-Point Theory

Control Structures and CSE Machine Evaluation• See diagram.

• CSE Rule 12: • Applying Y to F• Results in in (Y F). We represent it

using a single symbol : η

• CSE Rule 13: • Applying Y to F.• Results in F (Y F)

Page 19: Recursion and Fixed-Point Theory
Page 20: Recursion and Fixed-Point Theory
Page 21: Recursion and Fixed-Point Theory
Page 22: Recursion and Fixed-Point Theory
Page 23: Recursion and Fixed-Point Theory
Page 24: Recursion and Fixed-Point Theory
Page 25: Recursion and Fixed-Point Theory
Page 26: Recursion and Fixed-Point Theory

Recursion and Fixed-Point Theory

Prepared by

Manuel E. Bermúdez, Ph.D.Associate ProfessorUniversity of Florida

Programming Language PrinciplesLecture 14