Results 1 -
6 of
6
Splitting a Logic Program
- Principles of Knowledge Representation
, 1994
"... In many cases, a logic program can be divided into two parts, so that one of them, the \bottom " part, does not refer to the predicates de ned in the \top " part. The \bottom " rules can be used then for the evaluation of the predicates that they de ne, and the computed values can be ..."
Abstract
-
Cited by 229 (15 self)
- Add to MetaCart
In many cases, a logic program can be divided into two parts, so that one of them, the \bottom " part, does not refer to the predicates de ned in the \top " part. The \bottom " rules can be used then for the evaluation of the predicates that they de ne, and the computed values can be used to simplify the \top " de nitions. We discuss this idea of splitting a program in the context of the answer set semantics. The main theorem shows how computing the answer sets for a program can be simpli ed when the program is split into parts. The programs covered by the theorem may use both negation as failure and classical negation, and their rules may have disjunctive heads. The usefulness of the concept of splitting for the investigation of answer sets is illustrated by several applications. First, we show that a conservative extension theorem by Gelfond and Przymusinska and a theorem on the closed world assumption by Gelfond and Lifschitz are easy consequences of the splitting theorem. Second, (locally) strati ed programs are shown to have a simple characterization in terms of splitting. The existence and uniqueness of an answer set for such a program can be easily derived from this characterization. Third, we relate the idea of splitting to the notion of order-consistency. 1
The Declarative Semantics of the Prolog Selection Rule
- In Proceedings of the Ninth Annual IEEE Symposium on Logic in Computer Science, LICS ’94
, 1994
"... We axiomatize the Prolog selection rule which always selects the leftmost literal in a goal. We introduce a new completion of a logic program which we call the #-completion of the program. The #-completion is formulated as a first-order theory in a language extended by new predicate symbols which e ..."
Abstract
-
Cited by 10 (4 self)
- Add to MetaCart
We axiomatize the Prolog selection rule which always selects the leftmost literal in a goal. We introduce a new completion of a logic program which we call the #-completion of the program. The #-completion is formulated as a first-order theory in a language extended by new predicate symbols which express success, failure and left-termination of queries. The main results of the paper are the following. If a query succeeds, fails or is left-terminating under the Prolog selection rule, then the corresponding formula in the extended language is provable from the #-completion. Conversely, if a logic program and a query are correct with respect to some mode assignment and if one can prove in the #-completion that the query succeeds and is leftterminating, then the goal is successful and Prolog, using its depth first search, will compute an answer substitution for the goal. This result can even be extended to so called non-floundering queries. 1
Loop Checking and the Well-Founded Semantics
- Proceedings of the 12th International Conference on Logic Programming, Japan
, 1995
"... . Using a calculus of goals, we define the success and failure of a goal for propositional programs in the presence of loop checking. The calculus is sound with respect to the well-founded semantics; for finite programs, it is also complete. A Prolog-style proof search strategy for a modification of ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
. Using a calculus of goals, we define the success and failure of a goal for propositional programs in the presence of loop checking. The calculus is sound with respect to the well-founded semantics; for finite programs, it is also complete. A Prolog-style proof search strategy for a modification of this calculus provides a query evaluation algorithm for finite propositional programs under the well-founded semantics. This algorithm is implemented as a meta-interpreter. 1
First-order theories for pure Prolog programs with negation
- Archive for Mathematical Logic
, 1995
"... The standard theory of logic programming is not applicable to Prolog programs even not to pure code. Modifying the theory to take account of reality more is the motivation of this article. For this purpose we introduce the #-completion and the inductive extension of a logic program. Both are first-o ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
The standard theory of logic programming is not applicable to Prolog programs even not to pure code. Modifying the theory to take account of reality more is the motivation of this article. For this purpose we introduce the #-completion and the inductive extension of a logic program. Both are first-order theories in a language with operators for success, failure and termination of goals. The #-completion of a logic program is a sound and complete axiomatization of the Prolog depth-first search under certain natural conditions; the inductive extension of the #-completion is a suitable theory for proving termination and equivalence of pure Prolog programs with negation. 1
A Transformation of Propositional Prolog Programs into Classical Logic
- Archive for Mathematical Logic
, 1995
"... . We transform a propositional Prolog program P into a set of propositional formulas prl(P ) and show that Prolog, using its depth-first left-to-right search, is sound and complete with respect to prl(P ). This means that a goal succeeds in Prolog if and only if it follows from prl(P ) in classical ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
. We transform a propositional Prolog program P into a set of propositional formulas prl(P ) and show that Prolog, using its depth-first left-to-right search, is sound and complete with respect to prl(P ). This means that a goal succeeds in Prolog if and only if it follows from prl(P ) in classical propositional logic. The generalization of prl(P ) to predicate logic leads to a system for which Prolog is still sound but unfortunately not complete. If one changes, however, the definition of the termination operator, then one obtains a theory that allows to prove termination of arbitrary non-floundering goals under Prolog. 1
Loop Checking and the Well-Founded Semantics
, 1995
"... . Using a calculus of goals, we define the success and failure of a goal for propositional programs in the presence of loop checking. The calculus is sound with respect to the well-founded semantics; for finite programs, it is also complete. A Prolog-style proof search strategy for a modificatio ..."
Abstract
- Add to MetaCart
. Using a calculus of goals, we define the success and failure of a goal for propositional programs in the presence of loop checking. The calculus is sound with respect to the well-founded semantics; for finite programs, it is also complete. A Prolog-style proof search strategy for a modification of this calculus provides a query evaluation algorithm for finite propositional programs under the well-founded semantics. This algorithm is implemented as a meta-interpreter. 1 Introduction A "loop check" in a logic programming system is a mechanism that allows the system to avoid some infinite loops. For instance, the execution of the program p / not q; not r; q / r; p; r / q; p (1) under Prolog would lead to an infinite loop, because Prolog would attempt to "derive" q from r and then r from q. A system with a loop check may be able to recognize this fact and to conclude that the goals q and r fail, and, accordingly, the goal p succeeds. In this paper, we make the idea of loop ch...

