Negation and Constraint Logic Programming

Almost all constraint logic programming systems include negation, yet nowhere has a sound operational model for negation in CLP been discussed. The SLDNF approach of only allowing ground negative subgoals to execute is very restrictive in constraint logic programming where most variables appearing in a derivation never become ground. By describing a scheme for constructive negation in constraint logic programming we give a sound and complete operational model for negation in these languages. Constructive negation was first formulated for logic programming in the Herbrand Universe and involves introducing framework for describing constructive negation. In this paper we describe a framework for constructive negation for constraint logic programming over arbitrary structures which is sound and complete with respect to the three-valued consequences of the completion of a program. Through this description, we arrive at a simpler, more efficient form of constructive negation for the Herbrand Universe. Finally we characterize what makes a structure particularly suited to the use of constructive negation and show this suitability condition for a number of structures and classes of structures. The constraint viewpoint of constraint logic programming is well matched with constructive negation. Not only is constructive negation easier to understand from this point of view, but more importantly it gives the first clean approach to negation in constraint logic programming.

[1]  Donald W. Loveland,et al.  Simplifying Interpreted Formulas , 1980, CADE.

[2]  Michael J. Maher,et al.  A Unified Treatment of Resolution Strategies for Logic Programs , 1984, ICLP.

[3]  J. W. LLOYD,et al.  Making Prolog more Expressive , 1984, J. Log. Program..

[4]  Melvin Fitting,et al.  A Kripke-Kleene Semantics for Logic Programs , 1985, J. Log. Program..

[5]  Lee Naish,et al.  Negation and Control in Prolog , 1986, Lecture Notes in Computer Science.

[6]  Michael J. Maher Logic Semantics for a Class of Committed-Choice Programs , 1987, ICLP.

[7]  Mark Wallace,et al.  Negation by Constraints: A Sound and Efficient Implementation of Negation in Deductive Databases , 1987, SLP.

[8]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[9]  Kenneth Kunen,et al.  Negation in Logic Programming , 1987, J. Log. Program..

[10]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[11]  Pascal Van Hentenryck,et al.  The Constraint Logic Programming Language CHIP , 1988, FGCS.

[12]  Michael J. Maher Complete axiomatizations of the algebras of finite, rational and infinite trees , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[13]  David Chan,et al.  Constructive Negation Based on the Completed Database , 1988, ICLP/SLP.

[14]  Melvin Fitting,et al.  Stratified and Three-valued Logic Programming Semantics , 1988, ICLP/SLP.

[15]  Deduced Relevant Types and Constructive Negation , 1988, ICLP/SLP.

[16]  D. Chan,et al.  An experiment with programming using pure negation , 1989 .

[17]  Teodor C. Przymusinski On Constructive Negation in Logic Programming , 1989, NACLP.

[18]  Kenneth Kunen,et al.  Signed Data Dependencies in Logic Programs , 1989, J. Log. Program..

[19]  Jan Maluszynski,et al.  Fail Substitutions for Negation as Failure , 1989, NACLP.

[20]  David Chan,et al.  An Extension of Constructive Negation and its Application in Coroutining , 1989, NACLP.

[21]  Taisuke Sato,et al.  A Complete Top-Down Interpreter for First Order Programs , 1991, ISLP.

[22]  Wlodzimierz Drabent What is failure? or: constructive negation by fail answers , 1992, Proceedings ICCI `92: Fourth International Conference on Computing and Information.

[23]  Michael J. Maher A Logic Programming View of CLP , 1993, ICLP.