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 h a ve disjunctive heads. The usefulness of the concept of splitting for the investigation of answer sets is illustrated by s e v eral applications. First, we s h o w 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.
Algorithm AAS is based on an idea that appears in the work of REF , where they show that in many cases a logic program can be divided into two parts, such that one part, the \bottom" part, does not refer to the predicates de ned in the \top" part.
Splitting a Logic Program
Principles of Knowledge Representation
Computer Science