Gracefully adding negation and disjunction to Prolog

  • David L. Poole
  • Randy Goebel
Session 6b: Theory And Negation
Part of the Lecture Notes in Computer Science book series (LNCS, volume 225)


We show how one can add negation and disjunction to Prolog, with the property that there is no overhead in run time if we do not use the negation, and we only pay for the negation when we actually use it. The extension is based on Loveland's MESON proof procedure, which requires that a negative ancestor search and availability of contrapostive forms of formulae be added to Prolog. We identify a property of literals that can be statically determined, in order to avoid using the full generality of the full clausal proof procedure when not required.


Logic Program Predicate Symbol Horn Clause Proof Tree Proof Procedure 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Bowen82]
    K. Bowen and R.A. Kowalski (1982), Amalgamating language and metalanguage in logic programming, btLogic Programming, A.P.I.C. Studies in Data Processing 16, K.L. Clark and S.-A. Tarnlund (eds.), Academic Press, New York, 153–172.Google Scholar
  2. [Bowen85]
    K.A. Bowen and T. Weinberg (1985), A meta-level extension of Prolog, IEEE 1985 Symposium on Logic Programming, July 15–18, Boston, Massachusetts, 48–53.Google Scholar
  3. [Chang73]
    C.L. Chang and R.C.T. Lee (1973), Symbolic Logic and Mechanical Theorem Proving, Academic Press, New York.Google Scholar
  4. [Genesereth85]
    M.R. Genesereth (1985), The use of design descriptions in automated diagnosis, Qualitative Reasoning about Physical Systems, D.G. Bobrow (eds.), MIT Press, Cambridge, Massachusetts, 411–436.Google Scholar
  5. [Loveland78]
    D.W. Loveland (1978), Automated theorem proving: a logical basis, North-Holland, Amsterdam, The Netherlands.Google Scholar
  6. [Poole84]
    D. Poole (1984), Making “clausal” theorem provers “non-clausal”, Proceedings of the Fifth Biennal Conference of the Canadian Society for the Computational Studies of Intelligence, May 15–17, University of Western Ontario, London, Ontario, 124–126.Google Scholar
  7. [Poole86]
    D.L. Poole, R.G. Goebel, and R. Aleliunas (1986), Theorist: a logical reasoning system for defaults and diagnosis, Knowledge Representation, N.J. Cercone and G. McCalla (eds.), Springer-Verlag, New York [invited chapter, submitted September 10, 1985].Google Scholar
  8. [Robinson65]
    J.A. Robinson (1965), A machine-oriented logic based on the resolution principle, ACM Journal 12(1), 23–41.Google Scholar
  9. [Robinson79]
    J.A. Robinson (1979), Logic: Form and Function, Artificial Intelligence Series 6, Elsevier North Holland, New York.Google Scholar
  10. [Umrigar85]
    Z.D. Umrigar and V. Pitchumani (1985), An experiment in programming with full first-order logic, IEEE 1985 Symposium on Logic Programming, July 15–18, Boston, Massachusetts, 40–47.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • David L. Poole
    • 1
  • Randy Goebel
    • 1
  1. 1.Logic Programming and Artificial Intelligence Group Department of Computer ScienceUniversity of WaterlooWaterlooCanada

Personalised recommendations