Extensions to Logic Programming Motivated by the Construction of a Generic Theorem Prover

In this article, we discuss several possible extensions to traditional logic programming languages. The specific extensions proposed here fall into two categories: logical extensions and the addition of constructs to allow for increased control. There is a unifying theme to the proposed logical extensions, and that is the scoped introduction of extensions to a programming context. More specifically, these extensions are the ability to introduce variables whose scope is limited to the term in which they occur (i.e. λ-bound variables within λ-terms), the ability to introduce into a goal a fresh constant whose scope is limited to the derivation of that goal, and the ability to introduce into a goal a program clause whose scope is limited to the derivation of that goal. The purpose of the additions for increased control is to facilitate the raising and handling of failures.