  In logic programming under the answer set semantics, preferences on rules are
used to choose which of the conflicting rules are applied. Many interesting
semantics have been proposed. Brewka and Eiter's Principle I expresses the
basic intuition behind the preferences. All the approaches that satisfy
Principle I introduce a rather imperative feature into otherwise declarative
language. They understand preferences as the order, in which the rules of a
program have to be applied. In this paper we present two purely declarative
approaches for preference handling that satisfy Principle I, and work for
general conflicts, including direct and indirect conflicts between rules. The
first approach is based on the idea that a rule cannot be defeated by a less
preferred conflicting rule. This approach is able to ignore preferences between
non-conflicting rules, and, for instance, is equivalent with the answer set
semantics for the subclass of stratified programs. It is suitable for the
scenarios, when developers do not have full control over preferences. The
second approach relaxes the requirement for ignoring conflicting rules, which
ensures that it stays in the NP complexity class. It is based on the idea that
a rule cannot be defeated by a rule that is less preferred or depends on a less
preferred rule. The second approach can be also characterized by a
transformation to logic programs without preferences. It turns out that the
approaches form a hierarchy, a branch in the hierarchy of the approaches by
Delgrande et. al., Wang et. al., and Brewka and Eiter. Finally, we show an
application for which the existing approaches are not usable, and the
approaches of this paper produce expected results.
