Presentation is loading. Please wait.

Presentation is loading. Please wait.

Class 33: Learning to Count CS200: Computer Science

Similar presentations


Presentation on theme: "Class 33: Learning to Count CS200: Computer Science"— Presentation transcript:

1 David Evans http://www.cs.virginia.edu/evans
Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans

2 Universal Computation
z z z z z z z z z z z z z z z z z z z z ), X, L 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 ), #, R (, #, L 1 2: look for ( Start (, X, R HALT #, 1, - #, 0, - 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. 23 January 2004 CS 200 Spring 2004

3 Making “Primitives” from Only Glue ()
23 January 2004 CS 200 Spring 2004

4 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

5 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

6 Finding the Truth if T M N 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? 23 January 2004 CS 200 Spring 2004

7 and and or? and  x (y. if x y F)) or  x (y. if x T y))
23 January 2004 CS 200 Spring 2004

8 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 1 2: look for ( 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 #, 1, - #, 0, - Finite State Machine 23 January 2004 CS 200 Spring 2004

9 42 forty-two XLII What is 42? cuarenta y dos 23 January 2004
CS 200 Spring 2004

10 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

11 Meaning of Numbers pred (succ N)  N succ (pred N)
succ (pred (succ N))  succ N 23 January 2004 CS 200 Spring 2004

12 Meaning of Zero zero? zero  T zero? (succ zero)  F
zero? (pred (succ zero)) 23 January 2004 CS 200 Spring 2004

13 Is this enough? add  xy.if (zero? x) y (add (pred x) (succ y))
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

14 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

15 zero?  null? pred  cdr succ   x . cons F x Numbers are Lists...
23 January 2004 CS 200 Spring 2004

16 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

17 cons and car cons  x.y.z.zxy car  p.p T T  x . y. x
cons M N = (x.y.z.zxy) M N   (y.z.zMy) N   z.zMN car  p.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 23 January 2004 CS 200 Spring 2004

18 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

19 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

20 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

21 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

22 42 = xy. (z. z xy) xy. y xy. (z. z xy) xy. y xy. (z. z xy) xy
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 23 January 2004 CS 200 Spring 2004

23 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

24 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 1 2: look for ( 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 #, 1, - #, 0, - Finite State Machine We have this, but we cheated using  to make recursive definitions! 23 January 2004 CS 200 Spring 2004

25 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))  ... 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.) 23 January 2004 CS 200 Spring 2004

26 Charge Monday: Review session for Exam 2 Tuesday Office Hours
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


Download ppt "Class 33: Learning to Count CS200: Computer Science"

Similar presentations


Ads by Google