review church encodings
play

Review: Church Encodings true = \x.\y.x; // Booleans false = - PowerPoint PPT Presentation

Review: Church Encodings true = \x.\y.x; // Booleans false = \x.\y.y; pair = \x.\y.\f.f x y; // pairs fst = \p.p (\x.\y.x); snd = \p.p (\x.\y.y); noreduce bot = (\x.x x)(\x.x x); // divergence // S-expressions nil = \n.\c.n; cons


  1. Review: Church Encodings true = \x.\y.x; // Booleans false = \x.\y.y; pair = \x.\y.\f.f x y; // pairs fst = \p.p (\x.\y.x); snd = \p.p (\x.\y.y); noreduce bot = (\x.x x)(\x.x x); // divergence // S-expressions nil = \n.\c.n; cons = \y.\ys.\n.\c.c y ys; null? = \xs.xs true (\y.\ys.false); noreduce car = \xs.xs bot (\y.\ys.y); noreduce cdr = \xs.xs bot (\y.\ys.ys);

  2. Review: Church Numerals zero = \f.\x.x; succ = \n.\f.\x.f (n f x); plus = \n.\m.n succ m; times = \n.\m.n (plus m) zero; ... -> four; \f.\x.f (f (f (f x))) -> three; \f.\x.f (f (f x)) -> times four three; \f.\x.f (f (f (f (f (f (f (f (f (f (f (f x)))))))))))

  3. Reduction rules Central rule based on substitution (B ETA ) ( � x : M ) N ! M [ x 7! N � ℄ Structural rules: Beta-reduce anywhere, any time ! N ′ ! M ′ ! M ′ N M M � � � ! MN ′ ! M ′ N � x : M ′ MN MN � x : M � � � !

  4. Free variables x is free in M _ x is free in N x is free in x x is free in MN 6 = x ′ x is free in M x � x ′ x is free in : M

  5. Your turn! Free Variables What are the free variables in each expression? \x.\y. y z \x.x (\y.x) \x.\y.\x.x y \x.\y.x (\z.y w) y (\x.z) (\x.\y.x y) y

  6. Your turn! Free Variables What are the free variables in each expression? \x.\y. y z - z \x.x (\y.x) - nothing \x.\y.\x.x y - nothing \x.\y.x (\z.y w) - w y (\x.z) - y z (\x.\y.x y) y - y

  7. Capture-avoiding substitution x [ x 7! M M ℄ = y [ x 7! M y ℄ = ( YZ )[ x 7! M ( Y [ x 7! M ℄)( Z [ x 7! M ℄ = ℄) ( � x : Y )[ x 7! M � x : Y ℄ = ( � y : Z )[ x 7! M � y : Z [ x 7! M ℄ = ℄ if x not free in Z or y not free in M ( � y : Z )[ x 7! M � w : ( Z [ y 7! w ℄)[ x 7! M ℄ = ℄ where w not free in Z or M Last transformation is renaming of bound variables

  8. Renaming of bound variables So important it has its own Greek letter: w not free in Z (A LPHA ) � y : Z � w : ( Z [ y 7! w ℄) � ! Also has structural rules

  9. Conversion and reduction Alpha-conversion (rename bound variable) y not free in Z � x : Z � y : Z [ x 7! y � ! ℄ Beta-reduction (the serious evaluation rule) ( � x : M ) N ! M [ x 7! N � ℄ Eta-reduction: x not free in M � x : Mx ! M � All structural: Convert/reduce whole term or subterm

  10. Church-Rosser Theorem Equivalence of convertible terms: if A ! B and A ! C ! ∗ D and C ! ∗ D there exists D s.t. B

  11. Idea: normal form A term is a normal form if It cannot be reduced What do you suppose it means to say • A term has no normal form? • A term has a normal form?

  12. Idea: normal form A term is a normal form if It cannot be reduced A term has a normal form if There exists a sequence of reductions that terminates (in a normal form) A term has no normal form if It always reduces forever (This term diverges)

  13. Normal forms code for values Corollary of Church-Rosser: ! ∗ B , B in normal form, and if A ! ∗ C , C in normal form A then B and C are identical (up to renaming of bound variables)

  14. Normal-order reduction (If a normal form exists, find it!) Application offers up to three choices: #1 (B ETA ) ( � x : M ) N ! M � [ x 7! N ℄ ! N ′ ! M ′ ! M ′ N M M � � � #3 #2 ! MN ′ ! M ′ N � x : M ′ MN MN � x : M � � � ! Slogan: “leftmost, outermost redex”

  15. Normal-order illustration Not every term has a normal form: ( � x : xx )( � x : xx ) ( � x : xx )( � x : xx ) � ! But ( � x :� y : y )(( � x : xx )( � x : xx )) � y : y � ! Think “bodies before arguments” Applicative order does not terminate!

  16. What solves this equation? Equation: � n : if n = 0 then 1 else n � 1 ) ? ( n fact � fact = The factorial function!

  17. Review What solves this Equation? � n : if n = 0 then 1 else n � 1 ) ? ( n fact � fact = The factorial function!

  18. Your turn: Recursion equations Is there a solution? Is it unique? If so, what is it? f1 = \n.\m.(eq? n m) n (plus n (f1 (succ n) m)); f2 = \n.f2 (isZero? n 100 (pred n)); f3 = \xs.xs nil (\z.\zs.cons 0 (f3 zs)); f4 = \xs.\ys.f4 ys xs;

  19. Wait for it...

  20. Your turn: Recursion equations f1 = \n.\m.(eq? n m) n (plus n (f1 (succ n) m)); ; sigma (sum from n to m) f2 = \n.f2 (isZero? n 100 (pred n)); ; no unique solution (any constant f2) f3 = \xs.xs nil (\z.\zs.cons 0 (f3 zs)); ; map (const 0) f4 = \xs.\ys. f4 xs ys; ; not unique: constant functions, commutative

  21. Recursion = Fixed point Equation: � n : if n = 0 then 1 else n � 1 ) ? ( n fact � fact = Definition such that fact = g fact : :� n : if n = 0 then 1 else n g � f � f ( n � 1 ) =

  22. Conversion to fixed point length = \xs.null? xs 0 (+ 1 (length (cdr xs))) lg = \lf.\xs.null? xs 0 (+ 1 (lf (cdr xs)))

  23. One startling idea You can define a fixed-point operator • More than one!

  24. A simple algebraic law If fix g = g (fix g) then fix g can define recursive functions! The only recursion equation you’ll ever need

  25. Y combinator can implement fix Define Y such that, for any g , Y g ( Y g ) : = g Y � f : ( � x : f ( xx ))( � x : f ( xx )) = Y g ( � x : g ( xx ))( � x : g ( xx )) = and by beta-conversion Y g g (( � x : g ( xx ))( � x : g ( xx ))) = Y g g ( Y g ) = so Y g is a fixed point of g Does Y g have a normal form?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend