This is an archive of an inactive wiki and cannot be modified.

What is "Pure Prolog"

The following is by MichaelKifer

There is no generally accepted definition for Pure Prolog.

Some people take this term as synonymous with Horn Clauses - the subset of Prolog that has a well-defined and generally accepted semantics (minimal model=least fixed point).

References that support this point of view are:

Some researchers use the following definition: Set of Prolog rules with no built-ins and no cut. This definition allows negation, but only "safe" one, i.e., negative literals are allowed only if all their variables appear in positive literals to the left of that negative literal. Note that here "negation" means Prolog-style negation as failure, which does not have a good semantics and which has been criticized for producing unintuitive results.

References that support the second definition are:

Conclusion: It is better to stay away from this notion for three reasons:

  1. There is no single and accepted use of the term "Pure Prolog"
  2. If we adopt the first definition, then it would be just an obfuscation of the more clear term "Horn Clauses".
  3. We cannot use the second definition because it relies on Prolog-style negation as failure, which has no model-theoretic semantics.