Simplifying Negative Goals Using Typed Existence Properties

A method for extracting positive information from negative goals is proposed. It makes use of typed existence properties between arguments of a predicate to rewrite negative goals in a logic program. A typed existence property is a generalization of functional dependencies in that an input value maps to a fixed number of output values. Types are used to specify the domains of the input and output values. An implementation of the simplification method is presented and its complexity is analyzed. A key algorithm of the implementation checks if an atom in a negative goal can be extracted using a given typed existence property. A digraph links an atom to the quantified variables occurring in the atom and is used to quickly retrieve atoms in the negative goal that may become extractable after some other atom is extracted.

[1]  Ehud Shapiro,et al.  A Type System for Logic Programs , 1988, J. Log. Program..

[2]  Elena Marchiori On Termination of General Logic Programs w.r.t. Constructive Negation , 1996, J. Log. Program..

[3]  John G. Cleary,et al.  Constructive Negation Using Typed Existence Properties , 1998, PLILP/ALP.

[4]  Moreno Falaschi,et al.  Conditional Narrowing with Constructive Negation , 1992, ELP.

[5]  Juan José Moreno-Navarro,et al.  Implementing Constructive Intensional Negation , 2008, New Generation Computing.

[6]  Juan José Moreno-Navarro,et al.  Default Rules: An Extension of Constructive Negation for Narrowing-based Languages , 1994, ICLP.

[7]  Agostino Dovier,et al.  A necessary condition for Constructive Negation in Constraint Logic Programming , 2000, Inf. Process. Lett..

[8]  Juan José Moreno-Navarro,et al.  Implementation Results in Classical Constructive Negation , 2004, ICLP.

[9]  Wlodzimierz Drabent,et al.  What is failure? An approach to constructive negation , 1995, Acta Informatica.

[10]  Giorgio Levi,et al.  Compilative Constructive Negation in Constraint Logic Programs , 1994, CAAP.

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

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

[13]  Agostino Dovier,et al.  Constructive negation and constraint logic programming with sets , 2001, New Generation Computing.

[14]  J. Davenport Editor , 1960 .

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

[16]  Alan Mycroft,et al.  A Polymorphic Type System for Prolog , 1984, Logic Programming Workshop.

[17]  Juan José Moreno-Navarro,et al.  How to Incorporate Negation in a Prolog Compiler , 2000, PADL.

[18]  John G. Cleary Constructive Negation of Arithmetic Constraints Using Dataflow Graphs , 2004, Constraints.

[19]  Jorge Lobo,et al.  On Constructive Negation for Disjunctive Logic Programs , 1990, NACLP.

[20]  Juan José Moreno-Navarro,et al.  Extending Constructive Negation for Partial Functions in Lazy Functional-logic Languages , 1996, ELP.

[21]  Pascal Van Hentenryck Proceedings of the eleventh international conference on Logic programming , 1994 .

[22]  Juan José Moreno-Navarro,et al.  Constructive Intensional Negation , 2004, FLOPS.

[23]  Peter J. Stuckey,et al.  Negation and Constraint Logic Programming , 1995, Inf. Comput..

[24]  Annalisa Bossi,et al.  A Bottom-up Semantics for Constructive Negation , 1994, International Conference on Logic Programming.

[25]  Agostino Dovier,et al.  Compiling Intensional Sets in CLP , 1994, ICLP.

[26]  François Fages,et al.  Constructive Negation by Pruning , 1997, J. Log. Program..

[27]  Thom W. Frühwirth,et al.  Logic programs as types for logic programs , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[28]  Juan José Moreno-Navarro,et al.  Efficient Negation Using Abstract Interpretation , 2001, LPAR.