Lambda Calculus with TypesThis handbook with exercises reveals in formalisms, hitherto mainly used for hardware and software design and verification, unexpected mathematical beauty. The lambda calculus forms a prototype universal programming language, which in its untyped version is related to Lisp, and was treated in the first author's classic The Lambda Calculus (1984). The formalism has since been extended with types and used in functional programming (Haskell, Clean) and proof assistants (Coq, Isabelle, HOL), used in designing and verifying IT products and mathematical proofs. In this book, the authors focus on three classes of typing for lambda terms: simple types, recursive types and intersection types. It is in these three formalisms of terms and types that the unexpected mathematical beauty is revealed. The treatment is authoritative and comprehensive, complemented by an exhaustive bibliography, and numerous exercises are provided to deepen the readers' understanding and increase their confidence using types. |
Other editions - View all
Common terms and phrases
A-model A-terms A₁ algebraic lattices atoms axiom B₁ CDHL(t Church-Rosser theorem closed terms compact elements complete lattice computable constants Corollary defined Definition Let denoted derivation elements equivalent example Exercise function functional programming functor FV(M Galois connection hence hereditarily finite induction hypothesis inhabited interpretation intersection types invertible isomorphism lambda calculus lambda structures lambda terms Lemma Let logical relation M₁ morphism n-sound natural numbers notation pair primitive recursive primitive recursive functionals problem Proposition Let prove recursive types result rule satisfies Scott Section semantic set of types simultaneous recursion strongly normalizing subset subterm Suppose surjective syntactic Theorem tree typable type algebra type assignment system type structures type theories untyped lambda variables write βη ΓΕ λμ μα μα.Α Πμ


