Programming with Higher-Order Logic
Formal systems that describe computations over syntactic structures occur frequently in computer science. Logic programming provides a natural framework for encoding and animating such systems. However, these systems often embody variable binding, a notion that must be treated carefully at a computational level. This book aims to show that a programming language based on a simply typed version of higher-order logic provides an elegant, declarative means for providing such a treatment. Three broad topics are covered in pursuit of this goal. First, a proof-theoretic framework that supports a general view of logic programming is identified. Second, an actual language called λProlog is developed by applying this view to higher-order logic. Finally, a methodology for programming with specifications is exposed by showing how several computations over formal objects such as logical formulas, functional programs, and λ-terms and π-calculus expressions can be encoded in λProlog.
- All code fragments in the book are available via the author website associated with the book
- Shows that a programming language based on a simply typed version of higher-order logic provides an elegant, declarative means for providing such a treatment
Reviews & endorsements
'… I am impressed with the depth of the discussion and the clearly well-produced book. The authors have argued successfully for the power and versatility of the fundamental ideas underlying λProlog.' Sara Kalvala, Computing Reviews
Product details
September 2012Hardback
9780521879408
320 pages
235 × 158 × 19 mm
0.55kg
81 b/w illus.
Available
Table of Contents
- 1. First-order terms and representations of data
- 2. First-order horn clauses
- 3. First-order hereditary Harrop formulas
- 4. Typed lambda 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.