Class 35 Lambda Calculus God created the integers
Class 35: Lambda Calculus God created the integers – all else is the result of man. Leopold Kronecker God created application – all else is the result of man. Alonzo Church (not really) CS 200: Computer Science David Evans University of Virginia 17 April 2002 CS 200 Spring 2002 http: //www. cs. virginia. edu/~evans Computer Science
Menu • Why is Scheme too complicated? • What is a Calculus? • Lambda Calculus 17 April 2002 CS 200 Spring 2002 2
Complexity in Scheme • Special Forms – if, cond, define, etc. • Primitives If we have lazy evaluation, (and don’t care about abstraction) we don’t need these. – Numbers (infinitely many) – Booleans: #t, #f Hard to get rid of? – Functions (+, -, and, or, etc. ) • Evaluation Complexity – Environments (more than ½ of our interpreter) Can we get rid of all this and still have a useful language? 17 April 2002 CS 200 Spring 2002 3
-calculus Alonzo Church, 1940 (LISP was developed from -calculus, not the other way round. ) term = variable | term | (term) | variable. term 17 April 2002 CS 200 Spring 2002 4
What is Calculus? • In High School: d/dx xn = nxn-1 [Power Rule] d/dx (f + g) = d/dx f + d/dx g [Sum Rule] Calculus is a branch of mathematics that deals with limits and the differentiation and integration of functions of one or more variables. . . 17 April 2002 CS 200 Spring 2002 5
Real Definition • A calculus is just a bunch of rules for manipulating symbols. • People can give meaning to those symbols, but that’s not part of the calculus. • Differential calculus is a bunch of rules for manipulating symbols. There is an interpretation of those symbols corresponds with physics, slopes, etc. 17 April 2002 CS 200 Spring 2002 6
Lambda Calculus • Rules for manipulating strings of symbols in the language: term = variable | term | (term) | variable. term • Humans can give meaning to those symbols in a way that corresponds to computations. 17 April 2002 CS 200 Spring 2002 7
Why? • Once we have precise and formal rules for manipulating symbols, we can use it to reason with. • Since we can interpret the symbols as representing computations, we can use it to reason about programs. 17 April 2002 CS 200 Spring 2002 8
Evaluation Rules -reduction (renaming) y. M v. (M [y v]) where v does not occur in M. -reduction (substitution) ( x. M)N M [ x N ] 17 April 2002 CS 200 Spring 2002 9
Identity ( ) x y if x and y are same name M 1 M 2 N 1 N 2 if M 1 N 1 M 2 N 2 (M) (N) if M N x. M y. N if x y M N 17 April 2002 CS 200 Spring 2002 10
Defining Substitution (| ) 1. 2. 3. y [x | N] = N where x y y [x | N] = y where x y M 1 M 2 [x | N] = M 1 [x | N] M 2 [x | N] 4. 5 a. (M) [x | N] = (M [x | N]) ( x. M) [x | N] = x. M 17 April 2002 CS 200 Spring 2002 11
Defining Substitution (| ) 5 b. ( y. M) [x N] = y. (M [x N]) | | where x y and y does not appear free in N and x appears free in M. 5 c. ( y. M) [x N] = y. M | where x y and y does or does not appear free in N and x does not appear free in M. 17 April 2002 CS 200 Spring 2002 12
Defining Substitution (| ) 5 c. ( y. M) [x N] = y. (M [x N]) | | where x y and y does not appear free in N or x does not appear free in M. 5 d. ( y. M) [x | N] = z. (M [y | z]) [x | N] where x y, z x and z y and z does not appear in M or N, x does occur free in M and y does occur free in N. 17 April 2002 CS 200 Spring 2002 13
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 17 April 2002 CS 200 Spring 2002 14
-Reduction (the source of all computation) ( x. M)N M [ x 17 April 2002 N] CS 200 Spring 2002 15
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. 17 April 2002 CS 200 Spring 2002 16
Some Simple Functions I x. x C xy. yx Abbreviation for x. ( y. yx) CII = ( x. ( y. yx)) ( x. x) ( y. y ( x. x)) ( x. x) x. x =I 17 April 2002 CS 200 Spring 2002 17
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. 17 April 2002 CS 200 Spring 2002 18
Example f. (( x. f (xx))) 17 April 2002 CS 200 Spring 2002 19
Alyssa P. Hacker’s Answer ( f. (( x. f (xx)))) ( z. z) ( x. ( z. z)(xx)) ( z. z) ( x. ( z. z)(xx)) ( x. ( z. z)(xx)) . . . 17 April 2002 CS 200 Spring 2002 20
Ben Bitdiddle’s Answer ( f. (( x. f (xx)))) ( z. z) ( x. ( z. z)(xx)) ( x. xx) . . . 17 April 2002 CS 200 Spring 2002 21
Be Very Afraid! • Some -calculus terms can be -reduced forever! • The order in which you choose to do the reductions might change the result! 17 April 2002 CS 200 Spring 2002 22
Take on Faith (until CS 655) • 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 17 April 2002 CS 200 Spring 2002 23
Church-Turing Thesis • Any mechanical computation can be performed by Lambda Calculus reduction rules • There is a Lambda Calculus term equivalent to every Turing Machine 17 April 2002 CS 200 Spring 2002 24
Proof • Show you can implement a Turing Machine using Lambda Calculus • Next time: we won’t make a whole Turing machine, but will show we can make everything we are likely to need 17 April 2002 CS 200 Spring 2002 25
Charge • Now: Selvin’s talk • Projects – make progress for Monday! 17 April 2002 CS 200 Spring 2002 26
- Slides: 26