The coupling of resolution techniques for automatic theorem proving with what is termed the procedural interpretation of logic (Kowalski 1979) has resulted in efforts to implement predicate logic as a programming language. These efforts have already resulted in the language PROLOG. The semantics of predicate logic as a programming language have been formulated with an orientation toward the precedural interpretation of logic in van Emden and Kowalski (1976) and Apt and van Emden (1980). The predicate logic core of PROLOG is a restriction to universally quantified Horn sentences with atomic conclusions, so-called definite clauses, and therefore prevents the user from fully expressing logical negation. In the procedural interpretation of logic, a logic program is regarded as its and only if'' version of which half is explicitly presented. The precise definition of this and only if version is given in Clark (1980). The interpretations of a logic program are then restricted to the Herbrand models of the and only if,' version of the program, and the formula F is Herbrand valid in logic program P iff F is valid in all such Herbrand interpretations of P. Although the user does not have negation available the control features of PROLOG do allow the user to have a useful but still limited form of negation: to infer ~A from a proof of the unprovability of A. This is sound, as we shall see, in the procedural interpretation of logic. Our purpose here is to use a connection between the semantics of predicate logic as a programming language and the well-studied theory of inductive definability to given a measure to the incompleteness of the negation as failure rule for proving Herbrand valid negations of formulas, and then to show that the negation as failure rule is very highly incomplete in the sense of the measure. Moreover, the general problem of deciding whether a formula is Herbrand
Read full abstract