Negation and constraint logic programming.

*(English)*Zbl 0827.68022Summary: 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.

##### MSC:

68N17 | Logic programming |