lambda calculus

Post on 17-Feb-2017

225 Views

Category:

Science

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

rafael de f. ferreira (@rafaeldff)

lambda calculus

David Hilbert

2

“Wir müssen wissen. Wir werden wissen.”

We must know.We will know.

3

Alonzo Church

Syntax

4

t ::= x λx. t t t

terms: variable

abstraction application

Example expressions

5

x x y λx. x λx. y

(λx. x) y (λx. x x) z (λx. x x) (λx. x x) (λf. (λx. f (λy. x x y)) (λx. f (λy. x x y)))

Example expressions

6

(λx. x) yvariable

abstraction

variable

application

Substitution

7

[y↦z](λx. (λx. y x)) y=

(λx. (λx. z x)) z

Semantics

8

(λx. t1) t2 ⟶ [x↦t2]t1 beta reduction

redex

Semantics - examples

9

(λx. x) y ⟶ y

Semantics - examples

10

(λx. x) (λy. y y) ⟶ (λy. y y)

Semantics - examples

11

(λx.(λz.x z)) y ⟶ (λz.y z)

12

Church Booleans

booleans

13

(λt. (λf. t))

(λt. (λf. f))

(λb. (λt. (λf. b t f))

true

false

if

booleans - example

14

if false (λx. x) (λz. z)(λb. (λt. (λf. b t f)) false (λx. x) (λz. z) (λt. (λf. false t f)) (λx. x) (λz. z) (λf. false (λx. x) f) (λz. z) false (λx. x) (λz. z)

=

booleans - example

15

false (λx. x) (λz. z)(λt. (λf. f)) (λx. x) (λz. z)(λf. f) (λz. z) (λz. z)

=

booleans - example

16

if false (λx. x) (λz. z) ⟶* (λz. z)

17

Church Numerals

numerals

18

λs. λz. z

λs. λz. s z

λs. λz. s (s z)

λs. λz. s (s (s z))

c0

c1

c2

c3

numerals

19

succ = λn. λs. λz. s (n s z)

numerals

20

succ c1(λn. λs. λz. s (n s z)) c1

λs. λz. s ((λs. λz. s z) s z) λs. λz. s ((λz. s z) z) λs. λz. s (s z) = c2 …

=

=

numerals

21

plus = λm. λn. λs. λz. m s (n s z)

booleans - example

22

plus c0 c1 ⟶* c1

plus c1 c1 ⟶* c2

plus c2 c2 ⟶* c4

23

Recursion

recursion

24

ω = (λx. x x) (λx. x x)

recursion

25

ω = (λx. x x) (λx. x x) (λx. x x) (λx. x x) (λx. x x) (λx. x x) (λx. x x) (λx. x x) …

recursion

26

Y = λf. (λx. f (λy. x x y)) (λx. f (λy. x x y))

recursion

27

Y = λf. (λx. f (λy. x x y)) (λx. f (λy. x x y))

Y f = f (Y f) for all f

recursion

28

g = λfct. λn if (eq n c0) c1 (times n (fct (pred n)))factorial = Y g

Y f = f (Y f) for all f

Propositions as TypesPhilip Wadler

Introduction to Lambda Calculus

Barendregt, Barendsen

top related