Exploring the Lambda Calculus and the Meaning of Truth
340 likes | 354 Vues
Delve into the Lambda Calculus, a universal language, and the essence of truth. Discover how lambda expressions simulate Turing Machines and the order of reductions. Unravel the origins of numbers and the hidden meanings they hold.
Exploring the Lambda Calculus and the Meaning of Truth
E N D
Presentation Transcript
Class 32: The Meaning of Truth David Evans http://www.cs.virginia.edu/evans CS200: Computer Science University of Virginia Computer Science
Menu • Lambda Calculus Review • How to Prove Something is a Universal Computer • Making “Primitives” CS 200 Spring 2003
Lambda Calculus Review term ::= variable |term term | (term)| variable .term ( f. (( x.f (xx))( x. f (xx)))) (z.z) Parens are just for grouping, not like in Scheme -reduction (renaming) y. M v. (M [yv]) where v does not occur in M. -reduction (substitution) (x. M)N M [ xN ] CS 200 Spring 2003
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)) ... CS 200 Spring 2003
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) ... CS 200 Spring 2003
Be Very Afraid! • Some -calculus terms can be -reduced forever! • The order in which you choose to do the reductions might change the result! CS 200 Spring 2003
Take on Faith (until CS655) • All ways of choosing reductions that reduce a lambda expression to normal form will produce the same normal form (but some might never produce a normal form). • If we always apply the outermost lambda first, we will find the normal form is there is one. • This is normal order reduction – corresponds to normal order (lazy) evaluation CS 200 Spring 2003
Universal Language • Is Lambda Calculus a universal language? • Can we compute any computable algorithm using Lambda Calculus? • To prove it isn’t: • Find some Turing Machine that cannot be simulated with Lambda Calculus • To prove it is: • Show you can simulate every Turing Machine using Lambda Calculus CS 200 Spring 2003
Simulating Every Turing Machine • A Universal Turing Machine can simulate every Turing Machine • So, to show Lambda Calculus can simulate every Turing Machine, all we need to do is show it can simulate a Universal Turing Machine CS 200 Spring 2003
Simulating Computation z z z z z z z z z z z z z z z z z z z z • Lambda expression corresponds to a computation: input on the tape is transformed into a lambda expression • Normal form is that value of that computation: output is the normal form • How do we simulate the FSM? ), X, L ), #, R (, #, L 2: look for ( 1 Start (, X, R HALT #, 0, - #, 1, - Finite State Machine CS 200 Spring 2003
Simulating 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 CS 200 Spring 2003
Making “Primitives”from Only Glue () CS 200 Spring 2003
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 2003
Don’t search for T, search for if T x (y. x) xy. x F x ( y. y)) if pca . pca CS 200 Spring 2003
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 2003
and and or? and x (y. ifxyF)) or x (y. ifxTy)) CS 200 Spring 2003
Meaning of Life • Okay, so we know the meaning of truth. • Can we make the meaning of life also? CS 200 Spring 2003
What is 42? 42 forty-two XXXXII CS 200 Spring 2003
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 2003
Meaning of Numbers pred (succ N) N succ (pred N) N succ (pred (succ N)) succ N CS 200 Spring 2003
Meaning of Zero zero? zero T zero? (succ zero) F zero? (pred (succ zero)) T CS 200 Spring 2003
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 2003
Can we define lambda terms that behave likezero, zero?, pred and succ? Hint: what if we had cons, car and cdr? CS 200 Spring 2003
Numbers are Lists... zero? null? pred cdr succ x . cons F x CS 200 Spring 2003
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 2003
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 2003
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 2003
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 2003
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 2003
Counting 0 null 1 cons F 0 2 cons F 1 3 cons F 2 ... succ x.consFx pred x.cdrx CS 200 Spring 2003
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 2003
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 2003
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 2003
Charge • Wednesday: show we can make recursion with Lambda Calculus • Friday: chance to ask questions before Exam 2 is handed out • The real meaning of life lecture is April 25 • Exam 2 covers through today • Office hours this week: • Wednesday, after class - 3:45 • Thursday 10am-10:45am; 4-5pm. CS 200 Spring 2003