Transcript Slides

Class 28:
The
Meaning of
Truth
http://chandra.harvard.edu/photo/2001/0094true/0094true_hand.html
CS150: Computer Science
University of Virginia
Computer Science
David Evans
http://www.cs.virginia.edu/evans
-calculus
Alonzo Church, 1940
(LISP was developed from -calculus,
not the other way round.)
term = variable
| term term
| (term)
|  variable . term
CS150 Fall 2005: Lecture 28: Lambda Calculus
2
Reduction (Uninteresting Rules)
y. M  v. (M [y  v])
where v does not occur in M.
MM
M  N  PM  PN
M  N  MP  NP
M  N  x. M  x. N
M  N and N  P  M  P
CS150 Fall 2005: Lecture 28: Lambda Calculus
3
-Reduction
(the source of all computation)
(x. M)N  M [ x  N ]
CS150 Fall 2005: Lecture 28: Lambda Calculus
4
Evaluating Lambda Expressions
• redex: Term of the form (x. M)N
Something that can be -reduced
• An expression is in normal form if it
contains no redexes (redices).
• To evaluate a lambda expression, keep
doing reductions until you get to normal
form.
CS150 Fall 2005: Lecture 28: Lambda Calculus
5
Recall Apply in Scheme
“To apply a procedure to a list of
arguments, evaluate the procedure in a
new environment that binds the formal
parameters of the procedure to the
arguments it is applied to.”
• We’ve replaced environments with
substitution.
• We’ve replaced eval with reduction.
CS150 Fall 2005: Lecture 28: Lambda Calculus
6
Some Simple Functions
I  x.x
C  xy.yx
Abbreviation for x.(y. yx)
CII = (x.(y. yx)) (x.x) (x.x)
 (y. y (x.x)) (x.x)
 x.x (x.x)
 x.x
=I
CS150 Fall 2005: Lecture 28: Lambda Calculus
7
Example
 f. (( x.f (xx)) ( x. f (xx)))
Try this one at home...
CS150 Fall 2005: Lecture 28: Lambda Calculus
8
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))
 ...
CS150 Fall 2005: Lecture 28: Lambda Calculus
9
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)
 ...
CS150 Fall 2005: Lecture 28: Lambda Calculus
10
Be Very Afraid!
• Some -calculus terms can be -reduced
forever!
• The order in which you choose to do the
reductions might change the result!
CS150 Fall 2005: Lecture 28: Lambda Calculus
11
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 if there is
one.
– This is normal order reduction – corresponds to
normal order (lazy) evaluation
CS150 Fall 2005: Lecture 28: Lambda Calculus
12
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
13
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
14
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
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?
15
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
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
16
Making “Primitives”
from Only Glue ()
CS150 Fall 2005: Lecture 28: Lambda Calculus
17
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
18
Don’t search for T, search for if
T  x (y. x)
 xy. x
F  x ( y. y))
if  pca . pca
CS150 Fall 2005: Lecture 28: Lambda Calculus
19
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
20
and and or?
and  x (y. if x y F))
or  x (y. if x T y))
CS150 Fall 2005: Lecture 28: Lambda Calculus
21
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
CS150 Fall 2005: Lecture 28: Lambda Calculus
• 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
22
Charge
• PS6 Due Monday
• Start thinking about web application ideas
for PS8
– If you find a team and idea quickly (by Nov 2),
you can negotiate what you need to do for PS7
• Week after: we will finish this proof
– How to make the other things we need to
simulate a Turing machine using only Lambda
Calculus
CS150 Fall 2005: Lecture 28: Lambda Calculus
23