Strongly equivalent logic programs
ACM Transactions on Computational Logic (TOCL) - Special issue devoted to Robert A. Kowalski
Knowledge Representation, Reasoning, and Declarative Problem Solving
Knowledge Representation, Reasoning, and Declarative Problem Solving
Strong equivalence made easy: nested expressions and weight constraints
Theory and Practice of Logic Programming
A common view on strong, uniform, and other notions of equivalence in answer-set programming*
Theory and Practice of Logic Programming
Relativized Hyperequivalence of Logic Programs for Modular Programming
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
On solution correspondences in answer-set programming
IJCAI'05 Proceedings of the 19th international joint conference on Artificial intelligence
Theory and Practice of Logic Programming
Hi-index | 0.00 |
The study of different notions of equivalence is one of the cornerstones of current research in answer-set programming. This is mainly motivated by the needs of program simplification and modular programming, for which ordinary equivalence is insufficient. A recently introduced equivalence notion in this context is hyperequivalence , which includes as special cases strong, uniform, and ordinary equivalence. We study in this paper the question of replacing programs by syntactically simpler ones preserving hyperequivalence (we refer to such a replacement as a casting ). In particular, we provide necessary and sufficient semantic conditions under which the elimination of disjunction, negation, or both, in programs is possible, preserving hyperequivalence. In other words, we characterise in model-theoretic terms when a disjunctive logic program can be replaced by a hyperequivalent normal, positive, or Horn program, respectively. Furthermore, we study the computational complexity of the considered tasks and, based on similar results for strong equivalence developed in previous work, we provide methods for constructing the respective hyperequivalent programs. Our results contribute to the understanding of problem settings in logic programming in the sense that they show in which scenarios the usage of certain constructs are superfluous or not.