David Evans CS200: Computer Science University of Virginia Computer Science Class 32: The Meaning of Truth.

Slides:



Advertisements
Similar presentations
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 26: Proving Uncomputability Visualization.
Advertisements

Class 21: Imperative Programming University of Virginia cs1120 David Evans.
Cs1120 Fall 2009 David Evans Lecture 16: Power Analysis.
David Evans CS200: Computer Science University of Virginia Computer Science Class 30: Models of Computation.
Class 39: Universality cs1120 Fall 2009 David Evans University of Virginia.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 39: Lambda Calculus.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 40: Computing with Glue and Photons.
David Evans cs302: Theory of Computation University of Virginia Computer Science Lecture 2: Modeling Computers.
Class 19: Undecidability in Theory and Practice David Evans cs302: Theory of Computation University of Virginia Computer.
Cs3102: Theory of Computation Class 20: Busy Beavers Spring 2010 University of Virginia David Evans Office hours: I am not able to hold my Thursday morning.
David Evans CS200: Computer Science University of Virginia Computer Science Class 31: Universal Turing Machines.
Cs1120 Fall 2009 David Evans Lecture 20: Programming with State.
Cs1120 Fall 2009 David Evans Lecture 19: Stateful Evaluation.
Lecture 20: λ Calculus λ Calculus & Computability Yan Huang Dept. of Comp. Sci. University of Virginia.
David Evans Class 13: Quicksort, Problems and Procedures CS150: Computer Science University of Virginia Computer Science.
Class 37: Computability in Theory and Practice cs1120 Fall 2011 David Evans 21 November 2011 cs1120 Fall 2011 David Evans 21 November 2011.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 11: CS Logo, by Lincoln Hamilton and.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 18: Think Globally, Mutate Locally.
David Evans CS200: Computer Science University of Virginia Computer Science Class 38: Fixed Points and Biological Computing.
Lecture 31: Laziness University of Virginia cs1120 Fall 2009 David Evans.
Lecture 8: The Meaning of Life, Searching for Truth and The Stuff Primitives are Made Of (and a smattering of Quantum Physics) David Evans
David Evans CS150: Computer Science University of Virginia Computer Science Class 33: Computing with Photons From The.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 3: Rules of Evaluation.
David Evans CS200: Computer Science University of Virginia Computer Science Class 17: Mutation M. C. Escher, Day and Night.
Cs3102: Theory of Computation Class 14: Turing Machines Spring 2010 University of Virginia David Evans.
CSE 311 Foundations of Computing I Lecture 26 Computability: Turing machines, Undecidability of the Halting Problem Spring
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 36: Modeling Computing.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 29: Typed Scheme MC Escher, Liberation.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 12: QuickSorting Queen’s University,
David Evans CS200: Computer Science University of Virginia Computer Science Class 16: Mutation M. C. Escher, Day and Night.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 19: Environments.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 18: Mutation M. C. Escher, Day and.
Class 7: List Procedures David Evans cs1120 Fall 2009.
Lecture 3: Rules of Evaluation CS150: Computer Science
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 14: P = NP?
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 4: Programming with Data.
David Evans CS200: Computer Science University of Virginia Computer Science Class 32: The Meaning of Truth.
David Evans CS150: Computer Science University of Virginia Computer Science Class 32: Computability in Theory and Practice.
David Evans CS200: Computer Science University of Virginia Computer Science Class 26: Halting Problem It is plain at any.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 8: Cons car cdr sdr wdr.
(Thunking about Thunks)
Lecture 4: Metacircles Eval Apply David Evans
Lecture 6: Lambda Calculus
Lecture 4: Evaluation Rules Recursion CS200: Computer Science
Class 27: Universal Turing Machines CS150: Computer Science
Class 30: Models of Computation CS200: Computer Science
Lecture 7: List Recursion CS200: Computer Science
Lecture 37: A Universal Computer
Lambda Calculus Revisited
Class 19: Think Globally, Mutate Locally CS150: Computer Science
Lecture 11: All Sorts CS200: Computer Science University of Virginia
David Evans Lecture 9: The Great Lambda Tree of Infinite Knowledge and Ultimate Power CS200: Computer Science University.
Lecture 28: Types of Types
Class 36: The Meaning of Truth CS200: Computer Science
Lecture 22: P = NP? CS200: Computer Science University of Virginia
Lecture 24: Metalinguistics CS200: Computer Science
Class 37: Making Lists, Numbers and Recursion from Glue Alone
Lecture 27: In Praise of Idleness CS200: Computer Science
Lecture 26: The Metacircular Evaluator Eval Apply
Class 33: Making Recursion M.C. Escher, Ascending and Descending
Class 24: Computability Halting Problems Hockey Team Logo
Class 31: Universal Turing Machines CS200: Computer Science
Class 34: Models of Computation CS200: Computer Science
Class 33: Learning to Count CS200: Computer Science
Lecture 3: Rules of Evaluation CS200: Computer Science
Class 26: Modeling Computing CS150: Computer Science
Lecture 15: Crazy Eddie and the Fixed Points Background
Lecture 11: Sorting Grounds and Bubbles
Lecture 25: The Metacircular Evaluator Eval Apply
Presentation transcript:

David Evans CS200: Computer Science University of Virginia Computer Science Class 32: The Meaning of Truth

14 April 2003CS 200 Spring Menu Lambda Calculus Review How to Prove Something is a Universal Computer Making “Primitives”

14 April 2003CS 200 Spring Lambda Calculus Review ( f. (( x. f (xx)) ( x. f (xx)))) ( z.z) term ::= variable |term term | (term)| variable. term  -reduction(renaming) y. M   v. (M [y v]) where v does not occur in M.  -reduction(substitution) ( x. M)N   M [ x N ] Parens are just for grouping, not like in Scheme

14 April 2003CS 200 Spring 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))  ...

14 April 2003CS 200 Spring 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)  ...

14 April 2003CS 200 Spring Be Very Afraid! Some -calculus terms can be  -reduced forever! The order in which you choose to do the reductions might change the result!

14 April 2003CS 200 Spring 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

14 April 2003CS 200 Spring 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

14 April 2003CS 200 Spring 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

14 April 2003CS 200 Spring Simulating Computation zzzzzzzzzzzzzzzzzzzz 1 Start HALT ), X, L 2: look for ( #, 1, -  ), #, R  (, #, L (, X, R #, 0, - Finite State Machine 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?

14 April 2003CS 200 Spring Simulating Computation zzzzzzzzzzzzzzzzzzzz 1 Start HALT ), X, L 2: look for ( #, 1, -  ), #, R  (, #, L (, X, R #, 0, - Finite State Machine 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

14 April 2003CS 200 Spring Making “Primitives” from Only Glue ( )

14 April 2003CS 200 Spring 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

14 April 2003CS 200 Spring Don’t search for T, search for if T  x ( y. x)  xy. x F  x ( y. y)) if  pca. pca

14 April 2003CS 200 Spring 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?

14 April 2003CS 200 Spring and and or? and  x ( y. if x y F)) or  x ( y. if x T y))

14 April 2003CS 200 Spring Meaning of Life Okay, so we know the meaning of truth. Can we make the meaning of life also?

14 April 2003CS 200 Spring What is 42? 42 forty-two XXXXII

14 April 2003CS 200 Spring 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.

14 April 2003CS 200 Spring Meaning of Numbers pred (succ N )  N N succ (pred N )  N N succ (pred (succ N ))  succ N

14 April 2003CS 200 Spring Meaning of Zero zero? zero  T zero? (succ zero)  F zero? (pred (succ zero))  T

14 April 2003CS 200 Spring Is this enough? Can we define add with pred, succ, zero? and zero ? add  xy. if ( zero? x) y ( add ( pred x) ( succ y))

14 April 2003CS 200 Spring Can we define lambda terms that behave like zero, zero?, pred and succ ? Hint: what if we had cons, car and cdr ?

14 April 2003CS 200 Spring Numbers are Lists... zero?  null? pred  cdr succ  x. cons F x

14 April 2003CS 200 Spring 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))

14 April 2003CS 200 Spring cons and car cons  x. y. z.zxy cons M N = ( x. y. z.zxy) M N   ( y. z.z M y) N   z.z MN car  p.p T car (cons M N)  car ( z.z MN)  ( p.p T) ( z.z MN)   ( z.z MN) T   TMN   ( x. y. x ) MN   ( y. M)N   M T  x. y. x

14 April 2003CS 200 Spring cdr too! cons  xyz.zxy car  p.p T cdr  p.p F cdr cons M N cdr z.z MN = ( p.p F) z.z MN   ( z.z MN) F   FMN   N

14 April 2003CS 200 Spring 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

14 April 2003CS 200 Spring Null and null? null  x. T null?  x.(x y. z. F) null? (cons M N)  x.(x y. z. F) z.z MN   ( z.z MN) ( y. z. F)   ( y. z. F) MN   F

14 April 2003CS 200 Spring Counting 0  null 1  cons F 0 2  cons F 1 3  cons F 2... succ  x.cons F x pred  x.cdr x

14 April 2003CS 200 Spring = 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

14 April 2003CS 200 Spring 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  0

14 April 2003CS 200 Spring Lambda Calculus is a Universal Computer zzzzzzzzzzzzzzzzzzzz 1 Start HALT ), X, L 2: look for ( #, 1, -  ), #, R  (, #, L (, X, R #, 0, - Finite State Machine 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 We have this, but we cheated using  to make recursive definitions!

14 April 2003CS 200 Spring 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.