Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans Universal Computation z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( Start (, X,
Download ReportTranscript Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans Universal Computation z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( Start (, X,
Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans Universal Computation z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( 1 Start (, X, R #, 1, - HALT #, 0, - Finite State Machine z z z z z z z z z z z z Read/Write Infinite Tape Mutable Lists Finite State Machine Numbers to keep track of state Processing Way of making decisions (if) Way to keep going To prove Lambda Calculus is as powerful as a UTM, we must show we can make everything we need to simulate any TM. 23 January 2004 CS 200 Spring 2004 2 Making “Primitives” from Only Glue () 23 January 2004 CS 200 Spring 2004 3 In search of the truth? • What does true mean? • True is something that when used as the first operand of if, makes the value of the if the value of its second operand: if T M N M 23 January 2004 CS 200 Spring 2004 4 Don’t search for T, search for if T x (y. x) xy. x F x ( y. y)) if pca . pca 23 January 2004 CS 200 Spring 2004 5 Finding the Truth T x . (y. x) F x . (y. y) if p . (c . (a . pca))) Is the if necessary? if T M N ((pca . pca) (xy. x)) M N (ca . (x.(y. x)) ca)) M N (x.(y. x)) M N (y. M )) N M 23 January 2004 CS 200 Spring 2004 6 and and or? and x (y. if x y F)) or x (y. if x T y)) 23 January 2004 CS 200 Spring 2004 7 Lambda Calculus is a Universal Computer? z z z z z z z z z z z z z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( 1 Start (, X, R #, 1, - HALT #, 0, - Finite State Machine 23 January 2004 • Read/Write Infinite Tape ? Mutable Lists • Finite State Machine ? Numbers to keep track of state • Processing Way of making decisions (if) ? Way to keep going CS 200 Spring 2004 8 What is 42? 42 forty-two XLII cuarenta y dos 23 January 2004 CS 200 Spring 2004 9 Meaning of Numbers • “42-ness” is something who’s successor is “43-ness” • “42-ness” is something who’s predecessor is “41-ness” • “Zero” is special. It has a successor “one-ness”, but no predecessor. 23 January 2004 CS 200 Spring 2004 10 Meaning of Numbers pred (succ N) N succ (pred N) N succ (pred (succ N)) succ N 23 January 2004 CS 200 Spring 2004 11 Meaning of Zero zero? zero T zero? (succ zero) F zero? (pred (succ zero)) T 23 January 2004 CS 200 Spring 2004 12 Is this enough? • Can we define add with pred, succ, zero? and zero? add xy.if (zero? x) y (add (pred x) (succ y)) 23 January 2004 CS 200 Spring 2004 13 Can we define lambda terms that behave like zero, zero?, pred and succ? Hint: what if we had cons, car and cdr? 23 January 2004 CS 200 Spring 2004 14 Numbers are Lists... zero? null? pred cdr succ x . cons F x 23 January 2004 CS 200 Spring 2004 15 Making Pairs Remember PS2… (define (make-point x y) (lambda (selector) (if selector x y))) (define (x-of-point point) (point #t)) (define (y-of-point point) (point #f)) 23 January 2004 CS 200 Spring 2004 16 cons and car cons x.y.z.zxy cons M N = (x.y.z.zxy) M N (y.z.zMy) N z.zMN car p.p T T x . y. x car (cons M N) car (z.zMN) (p.p T) (z.zMN) (z.zMN) T TMN (x . y. x) MN (y. M)N M CS 200 Spring 2004 23 January 2004 17 cdr too! cons xyz.zxy car p.p T cdr p.p F cdr cons M N cdr z.zMN = (p.p F) z.zMN (z.zMN) F FMN N 23 January 2004 CS 200 Spring 2004 18 Null and null? null x.T null? x.(x y.z.F) null? null x.(x y.z.F) (x. T) (x. T)(y.z.F) T 23 January 2004 CS 200 Spring 2004 19 Null and null? null x.T null? x.(x y.z.F) null? (cons M N) x.(x y.z.F) z.zMN (z.z MN)(y.z.F) (y.z.F) MN F 23 January 2004 CS 200 Spring 2004 20 Counting 0 null 1 cons F 0 2 cons F 1 3 cons F 2 ... succ x.cons F x pred x.cdr x 23 January 2004 CS 200 Spring 2004 21 42 = xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) xy. y xy.(z.z xy) 23 January 2004T CS 200 Spring 2004 22 xy. y x. Arithmetic zero? null? succ x. cons F x pred x.x F pred 1 = (x.x F) cons F null (cons F null) F (xyz.zxy F null) F (z.z F null) F F F null null 0 23 January 2004 CS 200 Spring 2004 23 Lambda Calculus is a Universal Computer z z z z z z z z z z z z z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( 1 Start (, X, R #, 1, - HALT #, 0, - Finite State Machine We have this, but we cheated using to make recursive definitions! 23 January 2004 • Read/Write Infinite Tape Mutable Lists • Finite State Machine Numbers to keep track of state • Processing Way of making decisions (if) Way to keep going CS 200 Spring 2004 24 Way to Keep Going ( 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)) This should give some belief that we might (x.(z.z)(xx)) ( you x.(z.z)(xx)) ... 23 January 2004 be able to do it. We won’t cover the details of why this works in this class. (CS655 sometimes does.) CS 200 Spring 2004 25 Charge • Monday: Review session for Exam 2 – Exam 2 covers through today – There will definitely be a question that requires understanding the answer to question 5 on the PS7 comments! • Tuesday Office Hours – 1-2pm and 4-5pm • Exam 2 out Wednesday 23 January 2004 CS 200 Spring 2004 26