1 / 26

David Evans cs.virginia/evans

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

floria
Download Presentation

David Evans cs.virginia/evans

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

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

  4. 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

  5. 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

  6. 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

  7. and and or? and x (y. ifxyF)) or x (y. ifxTy)) 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 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

  9. What is 42? 42 forty-two XLII cuarenta y dos 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. CS 200 Spring 2004

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

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

  13. 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

  14. 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

  15. Numbers are Lists... zero?  null? pred  cdr succ   x . cons F x 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)) CS 200 Spring 2004

  17. 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 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

  18. cdr too! cons xyz.zxy carp.p T cdrp.p F cdr consMN cdrz.zMN = (p.p F) z.zMN   (z.zMN) F   FMN   N 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 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 CS 200 Spring 2004

  21. 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

  22. 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

  23. 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

  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 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

  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))  (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

  26. 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

More Related