Lambda Calculus History and Syntax. History The lambda calculus is a formal system designed to...

Post on 31-Dec-2015

217 views 3 download

Transcript of Lambda Calculus History and Syntax. History The lambda calculus is a formal system designed to...

Lambda Calculus

History and Syntax

History

The lambda calculus is a formal system designed to investigate function definition, function application and recursion.

It was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s

Lambda calculus has greatly influenced functional programming languages, especially Lisp.

Church used the lambda calculus in 1936 to give a negative answer to the Entscheidungsproblem

John McCarthy, AI Lab, Stanford

Alonzo Church, Princeton

⋋-Calculus - 1930

LISP - 1950

C - 1970

Dennis Ritchie, Bell Labs

General Proof Machine

Gottfried Leibniz asked if we can make a machine to validate all mathematical statemanets

He realized that the first step would have to be a clean formal language

Entscheidungsproblem

German: decision problem

In 1900, at a mathematical conference in Paris, David Hilbert presented his famous 23 unsolved problems of Mathematics.

Question that whether it was possible to determine the truth of any mathematical statement

Entscheidungsproblem

In 1931 Kurt Gödel, in his incompleteness Theorem, showed that there exist mathematical statements that are true but cannot be proved as true within the framework of a formal system.

The incompleteness theorem showed that mathematics was incomplete

Entscheidungsproblem

all that remained to be done was to find a way that would decide whether it was possible to decide whether a given function could be solved mechanically or not

Entscheidungsproblem

The negative answer to the Entscheidungsproblem was then given by Alonzo Church in 1936 and independently shortly thereafter by Alan Turing

Turing reduced the Entscheidungsproblem to the halting problem for Turing machines

λ – Calculus Origins

Originally, Church had tried to construct a complete formal system for the foundations of mathematics

System turned out to be susceptible to the analog of Russell's paradox

He separated out the lambda calculus and used it to study computability

Lambda Calculus, Definition

Provides a mathematical model for computation using recursive functions.

Shows that recursive functions have the same computing power as Turing machines.

Serves as the basis for functional programming languages like Haskell and ML

Some Informal Definitions

Consider definition in mathematic notations : ƒ(x) = x * x + 2

In λ–Calculus we denote This in form of

λx.(x*x + 2)And if we have ƒ(5) return number is 27In λ–Calculus λx.(x*x + 2)(5) we replace

x by 5 : λx.(x*x + 2)(5) = (5*5 + 2) = 27

Some informal definitions

introduce variables ranging over valuesdefine functions by (λ-) abstracting over

variablesapply functions to values

x + 1

x. x + 1

(x. x + 1) 2

-ExpressionsA lambda expression is any of the following:

1. Variable: x, y, z, … A variable denotes an abstraction to which it is bound, or denotes itself if it is not bound.

2. Function application: if x and y are -expressions, then (x y) is a -expression called function application. It denotes the result of applying the function x to the argument y.

-Expressions

3. Abstraction or function: If x is a variable and y is a -expression, then ( x . y) is an abstraction or function with dummy variable x and body y. ( x . y) denotes the function which when applied to argument a returns as result the abstraction (( x . y) a) = y [ a | x ]

Examples of -expressions

( x . x) is the identity function. (( x . x) y) y is a function application

returning a variable y. ( f . ( x . ( f x))) is a function returning a

function as value, since its body which is to be returned, ( x . ( f x)), is a function.

( ( f . ( x . ( f x))) w) ( x . (w x)) is a function application returning a function.

Formal Definition

Formal Definition of λ expression is : <expr> ::= <identifier> <expr> ::= (λ <identifier> . <expr>) <expr> ::= (<expr> <expr>)

Where identifier is a member of countable infinite set like {a, b, c, ..., x, y, z, x1, x2, ...}

Notational Conventions

1. Function application is left-associative.

w x means (w x)

w x y means ((w x) y)

w x y z means (((w x) y) z)

2. The scope of the dummy variable extends as far to the right as possible.

w . x y z means ( w . ((x y) z))

Notational Conventions

3. ‘.’ is right associative.

w . x . y . z means

( w . ( x . ( y . z)))

4. distributes up to the ‘.’.

w x y . z means w . x . y . z which in turn means ( w . ( x . ( y . z)))

Example Notational Shortcuts

1. x y . f y x means

( x . ( y . ((f y) x))), a function.

2. ( x . y x)( y . x y) means

( ( x . (y x))( y . (x y)) ),

a function application.

Bound Variables

Def. A variable x occurs bound in a -expression if there is an enclosing abstraction of which x is the dummy variable.

( x . ( f … x … ))

dummy bound

Free Variables

Def. An occurrence of a variable y is free if it is not bound -- that is, in the scope of the dummy variable x, it is not the variable x.

(x . (y …. x))

free bound

ExampleBound and free variables

x y . u x y = ( x . (y . ((u x) y) ))

u is free

x and y are bound

-Conversion

Def. The variable x in ( x . … x … ) can be renamed in x and in all of its bound occurrences to a new variable u, giving ( u . … u … ). To denote this renaming, we write:

( x . y) (u . (y [ u | x ] )

where y [ u | x ] means all occurrences of x bound by x are replaced by u. The variable u must be fresh, and must not get bound when substituted in y, except by u.

-Conversion, Examples

x . w x u . w u

2. x . w x w . w w is not true since the original w becomes bound.

3. x . ( u . u) x u . ( u . u) u is okay

y . ( u . u) y is better.

4. x . ( u . w u x ) u . ( u . w u u ) is not true, since u becomes bound.

y . ( u . w u y ) is better.

-Conversion, Examples

w . x . w x ) x w . u . w u ) x since the outer x is not in scope of x.

6. w . w x w . w u is not correct since x is not the dummy variable.

Evaluating -expressions: -reduction

-reduction describes how to evaluate an application of a function to its actual argument.

Function Application

Def. Function application is carried out as follows:

(x B [ A | x ]

where B [ A | x ] means all occurrences of x not bound by other inside the body B are replaced by A. Further, the free variables occurring in A can not become bound when substituted in A.

-Redex

Rem. A -expressionconsisting of a function applied to an argument is called a

-reducible expression or is a -redex.

-reduction, Examples

1. (x . x) a a

2. (x . y . x) a b (y . a) b a

3. (x . x a) (x . x) (x . x) a a

4. (x . y . x y) y (x . z . x z) y (z . y z)

-Functions

Def. A -function is a name given to a -expression. Whenever the -expression is needed, we can use the name instead. It is a shortcut or macro for the -expression.

Example: Some -functions are true, false, not, and, or, 0, 1, 2, .., n, iszero, suc, and add.

-Functions

1. true = x y . x

2. false = x y . y

3. (x?y:z) = x y z

4. not = x . x false true

5. and = x y . x y false

6. or = x y . x true y

-Functions

7. 0 = f x . x

8. 1 = f x . f x

9. 2 = f x . f (f x)

10. n = f x . f n x

11. iszero = n . n (x . false) true

12. succ = n f x . n f (f x)

13. add = m n f x . m f (n f x)

-Reduction

Any abstraction of the form x . (E x) in which x has no free occurrences in E can be reduced to E. For example

x . (succ x) succ

An abstraction which is -reducible is called an -redex.

Rationale for -Reduction

If x has no free occurrences in E, then

x . (E x)) A) (E x) [ A | x ]

= (E A)

Thus the effect of x . (E x)) on A is the same as the effect of E on A.

Normal Forms

Def. A -expression is in normal form if it contains no -redexes or -redexes.

A -expression has a normal form if there exists a finite sequence of reduction steps that results in a nromal form.

Examples of Normal Forms

1. x is in normal form

2. (x . x x(y . y is not in normal form but has a normal form, since

(x . x x(y . y (y . y(y . y (y . y

Examples of Normal Forms

3. (x . x x(y . y yis not in normal form and has no normal form, since the reduction sequence does not terminate:

(x . x x(y . y y

(y . y y(y . y y . . .

Reduction Order

A -expression can contain several redexes. For example,

(x . (y . y) (z . z)) (u . u)

1 5

An outer redex starts at character 1. An inner redex starts at character 5. In this case, more than one reduction sequence is possible.

Reduction Sequences

Inner redex: (x . (y . y) (z . z)) (u . u) (x . (z . z)) (u . u)

(z . z)

Outer redex: (x . (y . y) (z . z)) (u . u)

(y . y) (z . z)

(z . z)

The normal form is the same for the two.

Reduction Sequences, Example 2

Inner redex:

(y . z . z) ((x . x x) (x . x x))

(y . z . z) ((x . x x) (x . x x)) . . .

Outer redex:

(y . z . z) ((x . x x) (x . x x))

(z . z)

1st sequence is infinite. 2nd has normal form.

Reduction Strategies

1. Normal order strategy - repeatedly reduce the leftmost-outermost redex.

2. Applicative order strategy - repeatedly reduce the leftmost-innermost redex.

Normalization Theorem

If a -expressionhas a normal form, then the normal order strategy will terminate in a normal form. (Curry & Feys, 1958)

Church-Rosser Corollary

The normal form of a -expression, if it exists, is unique.

Church’s Thesis

The class of effectively computable functions is the same as the class of functions that can be defined in -calculus (1936)

Church’s Theorem

The class of Turing-computable functions is the same as the class of -definable functions.

New Models

Australian Mathematician, published a paper16 in late 2001 that stated that “incomputable” problems can be computed by exploiting the laws of Quantum Mechanics

A Quantum computer would be able to perform an infinite search in a finite amount of time and hence would solve the halting problem and would show the computability of incomputable functions.

Question