Introduction to [lambda]-trees


Book Description

The theory of o-trees has its origin in the work of Lyndon on length functions in groups. The first definition of an R -tree was given by Tits in 1977. The importance of o-trees was established by Morgan and Shalen, who showed how to compactify a generalisation of Teichmller space for a finitely generated group using R -trees. In that work they were led to define the idea of a o-tree, where o is an arbitrary ordered abelian group. Since then there has been much progress in understanding the structure of groups acting on R -trees, notably Rips'' theorem on free actions. There has also been some progress for certain other ordered abelian groups o, including some interesting connections with model theory. Introduction to o-Trees will prove to be useful for mathematicians and research students in algebra and topology. Contents: o-Trees and Their Construction; Isometries of o-Trees; Aspects of Group Actions on o-Trees; Free Actions; Rips'' Theorem. Readership: Mathematicians and research students in algebra and topology."




Introduction to [lambda]-trees


Book Description

The theory of ?-trees has its origin in the work of Lyndon on length functions in groups. The first definition of an R-tree was given by Tits in 1977. The importance of ?-trees was established by Morgan and Shalen, who showed how to compactify a generalisation of Teichmller space for a finitely generated group using R-trees. In that work they were led to define the idea of a ?-tree, where ? is an arbitrary ordered abelian group. Since then there has been much progress in understanding the structure of groups acting on R-trees, notably Rips' theorem on free actions. There has also been some progress for certain other ordered abelian groups ?, including some interesting connections with model theory.Introduction to ?-Trees will prove to be useful for mathematicians and research students in algebra and topology.




An Introduction to Functional Programming Through Lambda Calculus


Book Description

Well-respected text for computer science students provides an accessible introduction to functional programming. Cogent examples illuminate the central ideas, and numerous exercises offer reinforcement. Includes solutions. 1989 edition.




Lambda-Calculus and Combinators


Book Description

Combinatory logic and lambda-calculus, originally devised in the 1920's, have since developed into linguistic tools, especially useful in programming languages. The authors' previous book served as the main reference for introductory courses on lambda-calculus for over 20 years: this long-awaited new version is thoroughly revised and offers a fully up-to-date account of the subject, with the same authoritative exposition. The grammar and basic properties of both combinatory logic and lambda-calculus are discussed, followed by an introduction to type-theory. Typed and untyped versions of the systems, and their differences, are covered. Lambda-calculus models, which lie behind much of the semantics of programming languages, are also explained in depth. The treatment is as non-technical as possible, with the main ideas emphasized and illustrated by examples. Many exercises are included, from routine to advanced, with solutions to most at the end of the book.




Lecture Notes on the Lambda Calculus


Book Description

This is a set of lecture notes that developed out of courses on the lambda calculus that the author taught at the University of Ottawa in 2001 and at Dalhousie University in 2007 and 2013. Topics covered in these notes include the untyped lambda calculus, the Church-Rosser theorem, combinatory algebras, the simply-typed lambda calculus, the Curry-Howard isomorphism, weak and strong normalization, polymorphism, type inference, denotational semantics, complete partial orders, and the language PCF.




Lambda Calculus with Types


Book Description

This 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.




Concrete Abstractions


Book Description

CONCRETE ABSTRACTIONS offers students a hands-on, abstraction-based experience of thinking like a computer scientist. This text covers the basics of programming and data structures, and gives first-time computer science students the opportunity to not only write programs, but to prove theorems and analyze algorithms as well. Students learn a variety of programming styles, including functional programming, assembly-language programming, and object-oriented programming (OOP). While most of the book uses the Scheme programming language, Java is introduced at the end as a second example of an OOP system and to demonstrate concepts of concurrent programming.




Selected Papers on Automath


Book Description

The present volume contains a considered choice of the existing literature on Automath. Many of the papers included in the book have been published in journals or conference proceedings, but a number have only circulated as research reports or have remained unpublished. The aim of the editors is to present a representative selection of existing articles and reports and of material contained in dissertations, giving a compact and more or less complete overview of the work that has been done in the Automath research field, from the beginning to the present day. Six different areas have been distinguished, which correspond to Parts A to F of the book. These areas range from general ideas and motivation, to detailed syntactical investigations.




Mathematical Logic and Theoretical Computer Science


Book Description

Mathematical Logic and Theoretical Computer Science covers various topics ranging from recursion theory to Zariski topoi. Leading international authorities discuss selected topics in a number of areas, including denotational semanitcs, reccuriosn theoretic aspects fo computer science, model theory and algebra, Automath and automated reasoning, stability theory, topoi and mathematics, and topoi and logic. The most up-to-date review available in its field, Mathematical Logic and Theoretical Computer Science will be of interest to mathematical logicians, computer scientists, algebraists, algebraic geometers, differential geometers, differential topologists, and graduate students in mathematics and computer science.




An Experiential Introduction to Principles of Programming Languages


Book Description

A textbook that uses a hands-on approach to teach principles of programming languages, with Java as the implementation language. This introductory textbook uses a hands-on approach to teach the principles of programming languages. Using Java as the implementation language, Rajan covers a range of emerging topics, including concurrency, Big Data, and event-driven programming. Students will learn to design, implement, analyze, and understand both domain-specific and general-purpose programming languages. Develops basic concepts in languages, including means of computation, means of combination, and means of abstraction. Examines imperative features such as references, concurrency features such as fork, and reactive features such as event handling. Covers language features that express differing perspectives of thinking about computation, including those of logic programming and flow-based programming. Presumes Java programming experience and understanding of object-oriented classes, inheritance, polymorphism, and static classes. Each chapter corresponds with a working implementation of a small programming language allowing students to follow along.