A brief description

The book argues for using higher-order intuitionistic logic as the foundations of logic programming. To support this argument, the book presents

  • a sequent calculus based foundation for logic programming;

  • a proof search approach to computation;

  • higher-order logic programming;

  • polymorphic typing;

  • modular programming and abstract data types; and

  • simply-typed lambda-terms and their unification.

The book also emphasizes the practical application of higher-order logic programming by showing that it can be used to provide elegant formalizations and implementations of computations that manipulate bindings in syntax. In addition to a general exposition of this approach, individual chapters present extended examples relating to

  • implementing proof systems,

  • computing with functional programs, and

  • encoding the π-calculus.

The λProlog language is used to illustrated the underlying computation-related ideas and their applications. The website for the book provides all the λProlog code used in the book. The reader can experiment with this code using the Teyjus compiler available from http://teyjus.cs.umn.edu/ or the ELPI interpreter.