Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans Universal Computation z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( Start (, X,

Download Report

Transcript Class 33: Learning to Count CS200: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans Universal Computation z z z z z z z z ), X, L ), #, R (, #, L 2: look for ( Start (, X,

Class 33:
Learning to
Count
CS200: Computer Science
University of Virginia
Computer Science
David Evans
http://www.cs.virginia.edu/evans
Universal 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
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
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
2
Making “Primitives”
from Only Glue ()
23 January 2004
CS 200 Spring 2004
3
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
4
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
5
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
23 January 2004
CS 200 Spring 2004
6
and and or?
and  x (y. if x y F))
or  x (y. if x T y))
23 January 2004
CS 200 Spring 2004
7
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
23 January 2004
• 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 2004
8
What is 42?
42
forty-two
XLII
cuarenta y dos
23 January 2004
CS 200 Spring 2004
9
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
10
Meaning of Numbers
pred (succ N)
N
succ (pred N)
N
succ (pred (succ N))
 succ N
23 January 2004
CS 200 Spring 2004
11
Meaning of Zero
zero? zero
T
zero? (succ zero)
F
zero? (pred (succ zero))
T
23 January 2004
CS 200 Spring 2004
12
Is this enough?
• 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
13
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
14
Numbers are Lists...
zero?  null?
pred  cdr
succ   x . cons F x
23 January 2004
CS 200 Spring 2004
15
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
16
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 2004
23 January 2004
17
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
18
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
19
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
20
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
21
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)
23 January
2004T
CS 200 Spring 2004
22
xy.
y x.
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
23
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!
23 January 2004
• 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 2004
24
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))
This should give
some belief that we might
 (x.(z.z)(xx))
( you
x.(z.z)(xx))
 ...
23 January 2004
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
25
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
23 January 2004
CS 200 Spring 2004
26