Transcript Slides

Class 32:
The Meaning
of Truth
CS200: Computer Science
University of Virginia
Computer Science
David Evans
http://www.cs.virginia.edu/evans
Menu
• Lambda Calculus Review
• How to Prove Something is a Universal
Computer
• Making “Primitives”
14 April 2003
CS 200 Spring 2003
2
Lambda Calculus Review
term ::= variable |term term | (term)|  variable . term
Parens are just for grouping, not like in Scheme
-reduction
(renaming)
y. M  v. (M [y  v])
where v does not occur in M.
-reduction
(substitution)
(x. M)N   M [ x  N ]
( f. (( x.f (xx)) ( x. f (xx)))) (z.z)
14 April 2003
CS 200 Spring 2003
3
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 2003
CS 200 Spring 2003
4
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)
 ...
14 April 2003
CS 200 Spring 2003
5
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 2003
CS 200 Spring 2003
6
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 2003
CS 200 Spring 2003
7
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 2003
CS 200 Spring 2003
8
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 2003
CS 200 Spring 2003
9
Simulating Computation
z z
z
z
z
z
z
z
), X, L
), #, R
(, #, L
2:
look
for (
1
Start
(, X, R
#, 1, -
HALT
#, 0, -
Finite State Machine
14 April 2003
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?
CS 200 Spring 2003
10
Simulating Computation
z z
z
z
z
z
z
z
), X, L
), #, R
(, #, L
2:
look
for (
1
Start
(, X, R
#, 1, -
HALT
#, 0, -
Finite State Machine
14 April 2003
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
CS 200 Spring 2003
11
Making “Primitives”
from Only Glue ()
14 April 2003
CS 200 Spring 2003
12
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 2003
CS 200 Spring 2003
13
Don’t search for T, search for if
T  x (y. x)
 xy. x
F  x ( y. y))
if  pca . pca
14 April 2003
CS 200 Spring 2003
14
Finding the Truth
T  x . (y. x)
F  x . (y. y)
if  p . (c . (a . pca)))
Is the if necessary?
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
14 April 2003
CS 200 Spring 2003
15
and and or?
and  x (y. if x y F))
or  x (y. if x T y))
14 April 2003
CS 200 Spring 2003
16
Meaning of Life
• Okay, so we know the meaning of truth.
• Can we make the meaning of life also?
14 April 2003
CS 200 Spring 2003
17
What is 42?
42
forty-two
XXXXII
14 April 2003
CS 200 Spring 2003
18
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 2003
CS 200 Spring 2003
19
Meaning of Numbers
pred (succ N)
N
succ (pred N)
N
succ (pred (succ N))
 succ N
14 April 2003
CS 200 Spring 2003
20
Meaning of Zero
zero? zero
T
zero? (succ zero)
F
zero? (pred (succ zero))
T
14 April 2003
CS 200 Spring 2003
21
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 2003
CS 200 Spring 2003
22
Can we define lambda terms
that behave like
zero, zero?, pred and succ?
Hint: what if we had cons, car and cdr?
14 April 2003
CS 200 Spring 2003
23
Numbers are Lists...
zero?  null?
pred  cdr
succ   x . cons F x
14 April 2003
CS 200 Spring 2003
24
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 2003
CS 200 Spring 2003
25
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
T  x . y. x
car (cons M N)  car (z.zMN)  (p.p T) (z.zMN)
  (z.zMN) T
  TMN
  (x . y. x) MN
  (y. M)N
  M CS 200 Spring 2003
14 April 2003
26
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
14 April 2003
CS 200 Spring 2003
27
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 2003
CS 200 Spring 2003
28
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
14 April 2003
CS 200 Spring 2003
29
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 2003
CS 200 Spring 2003
30
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)
14 April y
2003
CS 200 Spring 2003
31
xy.
x.T
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
14 April 2003
CS 200 Spring 2003
32
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
Start
(, X, R
#, 1, -
HALT
#, 0, -
Finite State Machine
We have this, but
we cheated using 
to make recursive
definitions!
14 April 2003
• 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
CS 200 Spring 2003
33
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.
14 April 2003
CS 200 Spring 2003
34