370 likes | 386 Views
Learn about M.C. Escher's Ascending and Descending, recursive definitions, fixed points, and generating functions in this lecture.
E N D
Lecture 9: Crazy Eddie and the Fixed Points • M.C. Escher, Ascending and Descending (also known as • f. (( x.f (xx)) ( x. f (xx))) David Evans http://www.cs.virginia.edu/~evans CS655: Programming Languages University of Virginia Computer Science
-term Evaluation Y f. (( x.f (xx))( x. f (xx))) What is (Y I)? Recall I = z.z • Evaluation rule: • -reduction (substitution) • (x. M)N M [ x | N] • Substitute N for x in M. University of Virginia CS 655
Alyssa P. Hacker’s Answer ( f. (( x.f (xx))( x. f (xx)))) (z.z) (x.(z.z)(xx))( x. (z.z)(xx)) (z.z) ( x.(z.z)(xx)) ( x.(z.z)(xx)) (x.(z.z)(xx)) ( x.(z.z)(xx)) (z.z) ( x.(z.z)(xx)) ( x.(z.z)(xx)) (x.(z.z)(xx)) ( x.(z.z)(xx)) ... University of Virginia CS 655
Ben Bitdiddle’s Answer ( f. (( x.f (xx))( x. f (xx)))) (z.z) (x.(z.z)(xx))( x. (z.z)(xx)) (x.xx)(x.(z.z)(xx)) (x.xx)(x.xx) (x.xx)(x.xx) ... University of Virginia CS 655
Recursive Definitions Which of these make you uncomfortable? x = 1 + x x = 4 – x x = 9 / x x = x x = 1 / (16x3) No solutions over integers 1 integer solution, x = 2 2 integer solutions, x = 3, x = -3 Infinitely many integer solutions No integer solutions, two rational solutions (1/2 and –1/2), four complex solutions (1/2, -1/2, i/2, -i/2) University of Virginia CS 655
Equations Functions x = 4 – x f z. 4 – z Find anxsuch that (f x) = f. Same as solve for x. University of Virginia CS 655
What’s a function? f z. 4 – z f: Nat Nat { <0, 4>, <1, 3>, <2, 2>, <3, 1>, <4, 0>, <5, ???>, ... } University of Virginia CS 655
Domains • Set: unordered collection of values Nat= { 0, 2, 1, 4, 3, 6, 5, 8, 7, ... } • Domains: like a set, but has structure Nat= { 0, 1, 2, 3, 4, 5, 6, 7, 8, ... } where 0 is the least element, and there is an order of the elements. University of Virginia CS 655
Making Domains • Primitive domains can be combined to make new domains • Product domain: D1x D2 • Pairs of values Nat x Nat = { (tupleNat,Nat 0 0), (tupleNat,Nat 0 1), (tupleNat,Nat 1 0), (tupleNat,Nat 1 1), (tupleNat,Nat 0 2), ... } University of Virginia CS 655
Product Domains Nat x Nat = { <0, 0>, <0, 1>, <1, 0>, <1, 1>, <0, 2>, ... } Watch out: remember the order matters! (Later today: what is the “right” order for the elements of Nat x Nat? The order shown is “wrong”.) University of Virginia CS 655
Projections • Product domains come with projection functions: ProjiD1,D2 ,...,Dn: D1x D2x ...x Dn Di Proj1Nat,Nat = Nat x Nat Nat University of Virginia CS 655
Function Domains • Function domain: D1 D2 • An infix mapping from D1 to D2 z. z +Int1: Int Int z. z >Int0: Int Bool University of Virginia CS 655
Functions • A set of input-output pairs • The inputs (Di) and outputs (Do) are elements of a domain • The function is an element of the domain Di Do. • Its a (completely defined) function if and only if for every element d Di, the set of input-output pairs has one member whose first member matches d. University of Virginia CS 655
Functions? f:Nat Nat z. 4 – z f: Nat Int z. 4 – z f: Nat Nat z. z + 1 f: ?? z. if(z = 0) then 0 else (2 + f (z – 1)) University of Virginia CS 655
Functions f: (Nat Nat)= n. (1 + ( fn)) f: (Nat Nat) = n. ( f (1 + n)) No solutions (over natural numbers) – would require x = 1 + x. Infinitely many solutions – e.g., f(x) = 3. { <0, 3>, <1, 3>, <2, 3>, ... } University of Virginia CS 655
Fixed Points • A fixed point of a function f: (D D)is an element d D such that (f d) = d. • Examples: f: Nat Int z. 4 – z f: Nat Nat z. 2 * z f: Nat Nat z.z 2 0 infinitely many University of Virginia CS 655
Fixed Points Sequence type – like a list map: Nat* x (Nat Nat) Nat* lf. if (null? l) l (cons (f (car l)) (map (cdr l) f))) Some fixed points: <Null, any function>, <any list, x.x>, ... University of Virginia CS 655
Fixed Points Demo Ryan Persaud’s swarm simulation University of Virginia CS 655
Generating Functions • Any recursive definition can be encoded with a (non-recursive) generating function f: (Nat Nat)= n. (1 + ( fn)) g: (Nat Nat) (Nat Nat)= f. n. (1 + ( fn)) • Solution to a recursive definition is a fixed point of its associated generating function. University of Virginia CS 655
Example fact: (Nat Nat)= n. if (n = 0) then 1 else (n * ( fact (n - 1))) gfact:(Nat Nat) (Nat Nat) = f. n. if (n = 0) then 1 else (n * ( f (n - 1))) University of Virginia CS 655
(gfact I) (gfact (z.z)) = n. if (n = 0) then 1 else (n * ((z.z) (n - 1))) Function that returns 1 for 0, 0 for 1, 2 for 2, ..., n * n-1 for n ~= 0. University of Virginia CS 655
(gfact factorial) (gfact factorial) = n. if (n = 0) then 1 else (n * (factorial (n - 1))) = factorial factorial is a fixed point ofgfact University of Virginia CS 655
Unsettling Questions • Is a factorial function the only fixed point of gfact? • Given an arbitrary function, how does one find a fixed point? • If there is more than one fixed point, how do you know which is the right one? University of Virginia CS 655
Iterative Fixed Point Technique • Start with some element d D • Calculate g(d), g(g(d)), g(g(g(d))), ... until you get g(g(v))=v then v is a fixed point. • If you start with D you get the least fixed point (which is the “best” one) • (pronounced “bottom”) is the element of Dsuch that for any element dD, d. • means “has less information than” or “is weaker than” • Not all domains have a . University of Virginia CS 655
a a • a b and b a imply a = b • a b and b c imply a c Partial Order A partial order is a pair (D, ) of a domain D and a relation that is for all a, b, c D reflexive transitive and anti-symmetric University of Virginia CS 655
Partial Orders? • (Nat, <=) • (Nat, =) • ({ burger, fries, coke }, yummier) where burger yummier fries, burger yummier coke, fries yummier coke • ({ burger, fries, beer }, yummier) where burger yummier fries, fries yummier beer, beer yummier burger University of Virginia CS 655
Pointed Partial Order • A partial order (D, ) is pointed if it has a bottom element u D such that ud for all elements d D. • Bottom of (Nat, <=)? • Bottom of (Nat, =)? • Bottom of (Int, <=)? • Bottom of ({Nat}, <=)? 0 Not a pointed partial order Not a pointed partial order {} University of Virginia CS 655
double:Nat Nat= n. if (n = 0) then 0 else (2 + (double (n –1)) Is double fact under (Nat, <=)? Partial Order of Functions • ((D, D) (E, E), DE) is a partial order using: fDEgif for alldD, (fd) E (g d). No, (double 1) is not <= (fact 1) University of Virginia CS 655
Getting to the of things • Think of bottom as the element with the least information, or the “worst” possible approximation. • Bottom of Nat Nat is a function that is undefined for all inputs. That is, the function with the graph {}. • To find the least fixed point in a function domain, start with the function whose graph is {} and iterate. University of Virginia CS 655
Least Fixed Point of gfact gfact:(Nat Nat) (Nat Nat) = f. n. if (n = 0) then 1 else (n * ( f (n - 1))) (gfactn (function with graph {})) = fact as n approaches infinity. University of Virginia CS 655
Fixed Point Theorem • Do all -calculus terms have a fixed point? • (Smullyan: Is there a Sage bird?) University of Virginia CS 655
Finding the Sage Bird • F , X such thatFX = X • Proof: LetW = x.F(xx) andX = WW. X = WW = ( x.F(xx))W F (WW) = FX University of Virginia CS 655
Why of Y? • Y is f. WW: Y f. (( x.f (xx))( x. f (xx))) • Y calculates a fixed point (but not necessarily the least fixed point) of any lambda term! • If you’re not convinced, try calculating ((Y fact) n). (PS1, 1e) University of Virginia CS 655
Still Uncomfortable? University of Virginia CS 655
Remember the problem reducing Y • Different reduction orders produce different results • Reduction may never terminate • Normal Form means no more ß-reductions can be done • There are no subterms of the form (x. M)N • Not all -terms can be written in normal form University of Virginia CS 655
Church-Rosser Theorem • If a -term has a normal form, any reduction sequence that produces a normal form always the same normal form • Computation is deterministic • Some orders of evaluation might not terminate though • Evaluating leftmost first finds the normal form if there is one. • Proof by trust the theory people, but don’t become one. University of Virginia CS 655
Charge • PS2 is due next Thursday • Answers should be short • Domains are like types in programming languages, we will see them again soon... • Lots of readings out today, but check manifest carefully to see what you should read! University of Virginia CS 655