260 likes | 408 Views
Class 33: Learning to Count. David Evans http://www.cs.virginia.edu/evans. CS200: Computer Science University of Virginia Computer Science. Universal Computation. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. z. Read/Write Infinite Tape Mutable Lists
E N D
Class 33: Learning to Count David Evans http://www.cs.virginia.edu/evans CS200: Computer Science University of Virginia Computer Science
Universal Computation z z z z z z z z 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 ), X, L ), #, R (, #, L 2: look for ( 1 Start (, X, R HALT #, 0, - #, 1, - Finite State Machine To prove Lambda Calculus is as powerful as a UTM, we must show we can make everything we need to simulate any TM. CS 200 Spring 2004
Making “Primitives”from Only Glue () CS 200 Spring 2004
In search of thetruth? • 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: ifTMN M CS 200 Spring 2004
Don’t search for T, search for if T x (y. x) xy. x F x ( y. y)) if pca . pca CS 200 Spring 2004
Finding the Truth T x . (y. x) F x . (y. y) if p . (c . (a . pca))) 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 Is the if necessary? CS 200 Spring 2004
and and or? and x (y. ifxyF)) or x (y. ifxTy)) CS 200 Spring 2004
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 • 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 Start (, X, R HALT #, 0, - #, 1, - Finite State Machine CS 200 Spring 2004
What is 42? 42 forty-two XLII cuarenta y dos CS 200 Spring 2004
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. CS 200 Spring 2004
Meaning of Numbers pred (succ N) N succ (pred N) N succ (pred (succ N)) succ N CS 200 Spring 2004
Meaning of Zero zero? zero T zero? (succ zero) F zero? (pred (succ zero)) T CS 200 Spring 2004
Is this enough? • Can we define add with pred, succ, zero?and zero? add xy.if(zero?x) y (add(predx)(succy)) CS 200 Spring 2004
Can we define lambda terms that behave likezero, zero?, pred and succ? Hint: what if we had cons, car and cdr? CS 200 Spring 2004
Numbers are Lists... zero? null? pred cdr succ x . cons F x CS 200 Spring 2004
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)) CS 200 Spring 2004
cons and car cons x.y.z.zxy cons M N = (x.y.z.zxy)M N (y.z.zMy)N z.zMN carp.p T car (cons M N) car(z.zMN) (p.p T) (z.zMN) (z.zMN) T TMN (x . y. x)MN (y. M)N M T x . y. x CS 200 Spring 2004
cdr too! cons xyz.zxy carp.p T cdrp.p F cdr consMN cdrz.zMN = (p.p F) z.zMN (z.zMN) F FMN N CS 200 Spring 2004
Null and null? nullx.T null?x.(x y.z.F) null? null x.(x y.z.F) (x. T) (x. T)(y.z.F) T CS 200 Spring 2004
Null and null? nullx.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 CS 200 Spring 2004
Counting 0 null 1 cons F 0 2 cons F 1 3 cons F 2 ... succ x.consFx pred x.cdrx CS 200 Spring 2004
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) xy. y x.T CS 200 Spring 2004
Arithmetic zero? null? succ x. cons F x pred x.x F pred 1 = (x.x F) cons Fnull (cons Fnull) F (xyz.zxy Fnull) F (z.z Fnull) F FFnull null 0 CS 200 Spring 2004
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 • 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 Start (, X, R HALT #, 0, - #, 1, - Finite State Machine We have this, but we cheated using to make recursive definitions! CS 200 Spring 2004
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)) (x.(z.z)(xx)) ( x.(z.z)(xx)) ... This should give you some belief that we might 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
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 CS 200 Spring 2004