Journal of Logic Programming
A transformational approach to negation in logic programming
Journal of Logic Programming
A bottom-up semantics for constructive negation
Proceedings of the eleventh international conference on Logic programming
What is failure?: an approach to constructive negation
Acta Informatica
Negation and constraint logic programming
Information and Computation
Compilative Constructive Negation in Constraint Logic Programs
CAAP '94 Proceedings of the 19th International Colloquium on Trees in Algebra and Programming
An Improved Lower Bound for the Elementary Theories of Trees
CADE-13 Proceedings of the 13th International Conference on Automated Deduction: Automated Deduction
Editorial message: special track on the programming languages
Proceedings of the 2004 ACM symposium on Applied computing
Elimination of Local Variables from Definite Logic Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
A generalization of the folding rule for the Clark-Kunen semantics
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
An algorithm for local variable elimination in normal logic programs
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
Hi-index | 0.00 |
In this paper, we present a new proposal for an efficient implementation of constructive negation. In our approach the answers for a literal are bottom-up computed by solving equality constraints, instead of by handling frontiers of subsidiary computation trees. The required equality constraints are given by Shepherdson's operators which are, in a sense, similar to bottom-up immediate consequence operators. However, in order to make the procedure efficient two main techniques are applied. First, we restrict our constraints to a class of success-answers (resp. fail-answers) which are easy to manipulate and to solve (or to prove their unsatisfiability). And, second, we take advantage of the monotonic nature of Shepherdson's operators to make the procedure incremental and to avoid recalculations that are typical in frontiers-based methods. Then, goal computation is made in the usual top-down CLP scheme of collecting the answers for the selected literal into the constraint of the goal. The procedural mechanism for constructive negation is designed not only to generate every correct answer of a goal, but also to detect failure. That is, in spite of the bottom-up nature of the calculation of literal answers, goal computation is not necessarily infinite. The operational semantics that makes use of these ideas, called BCN, is sound and complete with respect to three-valued program completion for the whole class of normal logic programs. A prototype implementation of this approach has been developed and the experimental results are very promising.