138x Filetype PDF File size 0.38 MB Source: www21.in.tum.de
Lambda Calculus Prof. Tobias Nipkow August 2, 2012 Contents 1 Untyped Lambda Calculus 3 1.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Currying (Sch¨onfinkeln) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.3 Static binding and substitution . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.4 α-conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 β-reduction (contraction) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.1 Confluence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 η-reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4 λ-calculus as an equational theory . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.1 β-conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.2 η-conversion and extensionality . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5 Reduction strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6 Labeled terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.7 Lambda calculus as a programming language . . . . . . . . . . . . . . . . . . . . 16 1.7.1 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.7.2 Recursive functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7.3 Computable functions on IN: . . . . . . . . . . . . . . . . . . . . . . . . . 19 2 Typed Lambda Calculi 21 2.1 Simply typed λ-calculus (λ→) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.1 Type checking for explicitly typed terms . . . . . . . . . . . . . . . . . . . 22 2.2 Termination of →β . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3 Type inference for λ→ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4 let-polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3 The Curry-Howard Isomorphismus 29 A Relational Basics 33 A.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.2 Confluence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.3 Commuting relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 1 2 CONTENTS Chapter 1 Untyped Lambda Calculus 1.1 Syntax 1.1.1 Terms Definition 1.1.1 In lambda calculus the set of terms are defined as follows: t ::= c | x | (t t ) | (λx.t) 1 2 (t t ) is called application and represents the application of a function t to an argument t . 1 2 1 2 (λx.t) is called abstraction and represents the function with formal parameter x and body t; x is bound in t. Convention: x,y,z variables c,d,f,g,h constants a,b atoms = variables ∪ constants r,s,t,u,v,w terms In lambda calculus there is one computation rule called β-reduction: ((λx.s) t) can be reduced to s[t/x], the result of replacing the arguments t for the formal parameter x in s. Examples: ((λx.((f x)x))5) → ((f 5)5) β ((λx.x)(λx.x)) → (λx.x) β (x(λy.y)) cannot be reduced The precise definition of s[t/x] needs some work. Notation: • Variables are listed after λ: λx ...x .s ≡ λx ....λx .s 1 n 1 n • Application associates to the left: (t1 ...tn) ≡ (((t1 t2)t3)...tn) • λ binds to the right as far as possible. Example: λx.x x ≡ λx.(x x) 6≡ (λx.x) x • Outermost parentheses are omitted: t1...tn ≡ (t1...tn) 3
no reviews yet
Please Login to review.