Book contents
- Frontmatter
- Contents
- Preface
- Introduction
- 1 First-Order Terms and Representations of Data
- 2 First-Order Horn Clauses
- 3 First-Order Hereditary Harrop Formulas
- 4 Typed λ-Terms and Formulas
- 5 Using Quantification at Higher-Order Types
- 6 Mechanisms for Structuring Large Programs
- 7 Computations over λ-Terms
- 8 Unification of λ-Terms
- 9 Implementing Proof Systems
- 10 Computations over Functional Programs
- 11 Encoding a Process Calculus Language
- Appendix The Teyjus System
- Bibliography
- Index
4 - Typed λ-Terms and Formulas
Published online by Cambridge University Press: 05 August 2012
- Frontmatter
- Contents
- Preface
- Introduction
- 1 First-Order Terms and Representations of Data
- 2 First-Order Horn Clauses
- 3 First-Order Hereditary Harrop Formulas
- 4 Typed λ-Terms and Formulas
- 5 Using Quantification at Higher-Order Types
- 6 Mechanisms for Structuring Large Programs
- 7 Computations over λ-Terms
- 8 Unification of λ-Terms
- 9 Implementing Proof Systems
- 10 Computations over Functional Programs
- 11 Encoding a Process Calculus Language
- Appendix The Teyjus System
- Bibliography
- Index
Summary
The previous chapters have dealt with logic programming in the context of first-order logic. We are now interested in moving the discussion to the setting of a higher-order logic. The particular logic that we will use for this purpose is one based on the simply typed λ-calculus, generalized to allow for a form of polymorphic typing. This underlying calculus has several nontrivial computational characteristics that themselves merit discussion. We undertake this task in this chapter, delaying the presentation of the higher-order logic and the logic programming language based on it until Chapter 5.
The first two sections of this chapter describe the syntax of the simply typed λ-calculus and an equality relation called λ-conversion that endows the expressions of this calculus with a notion of functionality. The λ-conversion operation brings with it considerable computational power. We discuss this aspect in Section 4.3. In the logic programming setting, λ-conversion will not be deployed directly as a computational device but instead will be used indirectly in the course of solving unification problems between λ-terms. A discussion of this kind of unification, commonly called higher-order unification, is the focus of the second half of this chapter. Section 4.4 presents a general format for such problems, introduces terminology relating to them, and tries to develop intuitions about the solutions to these problems. Section 4.5 begins to develop the structure for a procedure that might be used to solve higher-order unification problems; this discussion is incomplete and meant only as a prelude to the more detailed treatment of higher-order unification that appears in Chapter 8.
- Type
- Chapter
- Information
- Programming with Higher-Order Logic , pp. 96 - 117Publisher: Cambridge University PressPrint publication year: 2012