Abstract
The λ-calculus is an elegant computational model used extensively in the formal semantics of programming languages. It was first described by Alonzo Church in 1932, as a foundation of mathematics based not on sets, but directly on functions. λ-calculus was, in part, the inspiration for the programming language Lisp, and its typed versions have become the foundation for a family of modern type-safe languages that includes Haskell and ML. In its original untyped form, the λ-calculus is an extremely simple rewrite system with the concise syntax e :: x | e 1 e 2 |λ x.e, where x ranges over variable names, e 1 e 2 is called an application, and λ x.e is called an abstraction. An abstraction is analogous to a function; x is the formal parameter and e is the body. Effectively, there is just one rewrite rule, called β-reduction: (λ x.e 1 ) e 2 →β e 1 [ e 2/ x ], where e 1 [ e 2 / x ] means that we substitute e 2 for occurrences of x in the expression e 1 Voilà---Turing equivalence. Actually, there are a few technicalities we are glossing over, having to do with renaming bound variables and such. And in modern usage we generally augment the system with natural numbers, arithmetic, and boolean logic as primitives, although these can be completely encoded in the raw calculus. This book is about types (a familiar notion in both mathematical logic and programming languages) and a family of typed λ- calculi. Armed with these formalisms, Di Cosmo explores various isomorphisms of types, which then prove useful in building a software engineering tool to classify and retrieve software components! Specifically, " Chapters 1-3 present a quick introduction to the various typed λ-calculi, sketch some isomorphisms, and then prove important results about confluence, decidability, and normalization. " Chapters 4-5 contain the meat of the theoretical contribution of this work, presenting complete theories for first- and second-order isomorphic types. " Chapters 6-7 demonstrate the utility of these isomorphisms in a software engineering application, and sketch other potential applications and extensions.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.