How to Incorporate Negation in a Prolog Compiler

Knowledge representation based applications require a more complete set of capabilities than those offered by conventional Prolog compilers. Negation is, probably, the most important one. The inclusion of negation among the logical facilities of LP has been a very active area of research, and several techniques have been proposed. However, the negation capabilities accepted by current Prolog compilers are very limited. In this paper, we discuss the possibility to incorporate some of these techniques in a Prolog compiler in an efficient way. Our idea is to mix some of the existing proposals guided by the information provided by a global analysis of the source code.

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

[2]  Saumya K. Debray,et al.  Lower Bound Cost Estimation for Logic Programs , 1997, ILPS.

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

[4]  Franco Turini,et al.  Intensional Negation of Logic Programs: Examples and Implementation Techniques , 1987, TAPSOFT, Vol.2.

[5]  Lee Naish,et al.  Negation and Quantifiers in NU-Prolog , 1986, ICLP.

[6]  Keith L. Clark,et al.  Negation as Failure , 1987, Logic and Data Bases.

[7]  John W. Lloyd,et al.  The Gödel programming language , 1994 .

[8]  John W. Lloyd,et al.  The Go¨del programming language , 1994 .

[9]  Manuel V. Hermenegildo,et al.  The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems , 1995, APPIA-GULP-PRODE.

[10]  Krzysztof R. Apt,et al.  Logic Programming , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[11]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[12]  Robert F. Stärk Cut-Property and Negation as Failure , 1994, Int. J. Found. Comput. Sci..

[13]  Manuel V. Hermenegildo,et al.  Parallelism and implementation of logic and constraint logic programming , 1999 .

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

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

[16]  Peter J. Stuckey,et al.  Constructive negation for constraint logic programming , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

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

[18]  Peter J. Stuckey,et al.  Efficient Analysis of Logic Programs with Dynamic Scheduling , 1995, ILPS.

[19]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

[20]  Maurizio Martelli,et al.  Negation as Instantiation , 1995, Inf. Comput..

[21]  Pascal Van Hentenryck,et al.  Cardinality Analysis of Prolog , 1994, ILPS.

[22]  Kenneth A. Ross,et al.  The well-founded semantics for general logic programs , 1991, JACM.

[23]  Andrei Voronkov,et al.  Logic Programming with Bounded Quantifiers , 1990, RCLP.

[24]  Mats Carlsson,et al.  Freeze, Indexing, and Other Implementation Issues in the WAM , 1987, ICLP.

[25]  Peter J. Stuckey,et al.  Optimization of Logic Programs with Dynamic Scheduling , 1997, ICLP.

[26]  Franco Turini,et al.  A Transformational Approach to Negation in Logic Programming , 1990, J. Log. Program..