Higher Level Meta Programming in Qu-Prolog 3: 0

For representing high level knowledge, such as the mathematical knowledge used in interactive theorem provers and verificaton systems, it is desirable to extend Prolog's concept of data object. A basic reason is that Prolog data objects - Herbrand objects - are terms of a minimal object language, which does not include its own object variables, or quantification over thse variables. Qu-Prolog (Quantifier Prolog) is an extended logic programming concept which takes as its data objects, object terms which may include object level variables, free or bound, and arbitrary quantifiers to bind these variables. Qu-Prolog is unique in allowing its data objects to include free occurrences of object variables. This paper describes Qu-Prolog's data objects and its facilities for computing on those objects. The Qu-Prolog unification algorithm unifies Qu-Prolog terms up to changes of bound variables. The power of Qu-Prolog unification is greatly increased by the inclusion in the language of an evaluable substitution operator which correctly substitutes at unification time for free occurrences of object variables. Some related Qu-Prolog facilities for implementing theorem proving algorithms are described, including a new method for persisting data across queries. Qu-Prolog 3.0 is a compiled implementation which is in experiemntal use, supporting the development of interactive reasoning systems.