Higher-Order Horn Logic Programming

We describe a fragment of higher-order Horn logic which can be used as a higher-order extension of Prolog. It allows the programmer to axiomatize predicates of predicates and operations on predicates. The restrictions defining the fragment ensure that the higher-order predicates and operations defined are monotonic and continuous—that they are enumeration operators. As a result, the fragment is well behaved both denotationally and operationally. Denotationally, the meaning of a program is its minimal Herbrand model, using standard extensional higher-order model theory. Operationally, it can still be implemented efficiently with standard techniques, using an adapted resolution theorem prover. The fragment is in fact (almost) a subset of HiLog—a “pure” subset with simple semantics and a straightforward implementation.