<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Look-back Techniques for ASP Programs with Aggregates</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Wolfgang Faber</string-name>
          <email>faber@mat.unical.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nicola Leone</string-name>
          <email>leone@mat.unical.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marco Maratea</string-name>
          <email>maratea@mat.unical.it</email>
          <email>marco@dist.unige.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Ricca</string-name>
          <email>ricca@mat.unical.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DIST, University of Genova</institution>
          ,
          <addr-line>16145 Genova</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Mathematics, University of Calabria</institution>
          ,
          <addr-line>87036 Rende (CS)</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>One of the most significant language extensions to Answer Set Programming (ASP) has been the introduction of aggregates. A significant amount of theoretical and practical work on aggregates in ASP has been published in recent years. In spite of these developments, aggregates are treated in a quite straightforward and ad-hoc way in most ASP systems. For the system DLV, several specialized techniques for aggregates have been described in [6], however still leaving a lot of room for improvement. In this paper, we build upon work on look-back optimization techniques done recently for DLV, and extend its reason calculus for backjumping to include reasons from aggregates. Furthermore, we describe how these reasons can be used in order to tune look-back heuristic counters. We present a preliminary experimental analysis, including also other state-of-the-art ASP systems, showing that our approach is promising.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref8">9</xref>
        ] has become a popular logic programming
framework during the last decade, the reason being mostly its intuitive declarative
reading, a mathematically precise expressivity, and last but not least the availability
of efficient systems. One of the most important extensions of the language of
ASP has been the introduction of aggregates. Aggregates significantly enhance the
language of ASP, allowing for natural and concise modelling of many problems. A
lot of work has been done both theoretically (mostly for determining the semantics
of aggregates that occur in recursion) [
        <xref ref-type="bibr" rid="ref15 ref19 ref4">16, 20, 5</xref>
        ] and practically, for endowing
systems with a selection of aggregate functions [
        <xref ref-type="bibr" rid="ref1 ref18 ref5 ref7">19, 2, 6, 8</xref>
        ].
      </p>
      <p>
        However, work on optimizing system performance with respect to aggregates
is still sparse, and current implementations use more or less ad-hoc techniques. In
this work, we report on improvements in this field. In particular, we build upon a
technique for backjumping, which had been developed in the setting of the solver
DLV in [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ]. As a main contribution, we describe how the reason calculus
defined in [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ] can be extended for keeping track of the reasons for several types of
aggregates supported in DLV. The information collected in this way can then be
exploited directly for backjumping, using the original method described in [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ].
      </p>
      <p>
        Importantly, reasons for aggregates can also be exploited for look-back
heuristic. Indeed, we show how the look-back heuristics presented in [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ] can be extended
to the aggregate case. For this task, a key issue is the initialization of heuristic
values: since look-back heuristics use information of the computation done so far,
it would be completely uninformed at the beginning of the computation, as no
information can be looked back on. In order to tackle this issue, we consider an
aggregate-free program, which corresponds to the given program with aggregates,
and use standard techniques for initializing the heuristic values. Importantly, in
our technique we make sure to not materialize this aggregate-free program, but
use the knowledge about its structure for computing the initialization values. This
method is exact in the aggregate-stratified case, in the sense that the aggregate-free
program is equivalent to the original program with aggregates. While the program
is in general not equivalent to the original one in the aggregate-unstratified case,
it can still be used for the purpose of a heuristics, as it will still be a reasonable
approximation.
      </p>
      <p>We have implemented the proposed techniques for the aggregate-stratified
setting, and report on a performance evaluation of the obtained prototype on selected
benchmarks, in which we could observe performance benefits for the system
relying on our optimization techniques.
2
2.1</p>
      <sec id="sec-1-1">
        <title>Syntax</title>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Answer Set Programming with Aggregates</title>
      <p>
        We assume that the reader is familiar with standard logic programming; we refer
to the respective constructs as standard atoms, standard literals, standard rules,
and standard programs. Two literals are said to be complementary if they are of
the form p and not p for some atom p. Given a literal L, ¬.L denotes its
complementary literal. Accordingly, given a set A of literals, ¬.A denotes the set
{¬.L | L ∈ A}. For further background, see [
        <xref ref-type="bibr" rid="ref8">1, 9</xref>
        ].
      </p>
      <p>Set Terms. A DLPA set term is either a symbolic set or a ground set. A symbolic
set is a pair {Vars : conj }, where Vars is a list of variables and conj is a
conjunction of standard atoms.1 A ground set is a set of pairs of the form ht : conj i, where
t is a list of constants and conj is a ground conjunction of standard atoms.
Aggregate Functions. An aggregate function is of the form f (S), where S is a
set term, and f is an aggregate function symbol. Intuitively, an aggregate function
can be thought of as a (possibly partial) function mapping multisets of constants to
a constant.</p>
      <p>1Intuitively, a symbolic set {X : a(X, Y ), p(Y )} stands for the set of X-values making
a(X, Y ), p(Y ) true, i.e., {X | ∃Y s.t. a(X, Y ), p(Y ) is true}.
Example 1. In the examples, we adopt the syntax of DLV to denote aggregates.
Aggregate functions currently supported by the DLV system are: #count (number
of terms), #sum (sum of non-negative integers), #min (minimum term), #max
(maximum term)2.</p>
      <p>Aggregate Literals. An aggregate atom is f (S) ≺ T , where f (S) is an
aggregate function, ≺∈ {=, &lt;, ≤, &gt;, ≥} is a predefined comparison operator, and T is
a term (variable or constant) referred to as guard.</p>
      <p>Example 2. The following aggregate atoms are in DLV notation, where the latter
contains a ground set and could be a ground instance of the former:
#max{Z : r(Z), a(Z, V )} &gt; Y</p>
      <p>#max{h2 : r(2), a(2, k)i, h2 : r(2), a(2, c)i} &gt; 1</p>
      <p>An atom is either a standard atom or an aggregate atom. A literal L is an atom
A or an atom A preceded by the default negation symbol not; if A is an aggregate
atom, L is an aggregate literal.</p>
      <p>DLPA Programs. A DLPA rule r is a construct</p>
      <p>a1 v · · · v an :- b1, . . . , bk, not bk+1, . . . , not bm.
where a1, · · · , an are standard atoms, b1, · · · , bm are atoms, and n ≥ 1, m ≥
k ≥ 0. The disjunction a1 v · · · v an is referred to as the head of r while the
conjunction b1, ..., bk, not bk+1, ..., not bm is the body of r. We denote the set
of head atoms by H(r), and the set {b1, ..., bk, not bk+1, ..., not bm} of the body
literals by B(r). B+(r) and B−(r) denote, respectively, the set of positive and
negative literals in B(r). Note that this syntax does not explicitly allow integrity
constraints (rules without head atoms). They can, however, be simulated in the
usual way by using a new symbol and negation.</p>
      <p>A DLPA program is a set of DLPA rules. In the sequel, we will often drop
DLPA, when it is clear from the context. A global variable of a rule r appears in a
standard atom of r (possibly also in other atoms); all other variables are local.
Safety. A rule r is safe if the following conditions hold: (i) each global variable
of r appears in a positive standard literal in the body of r; (ii) each local variable
of r appearing in a symbolic set {Vars : conj } appears in an atom of conj ; (iii)
each guard of an aggregate atom of r is a constant or a global variable. A program
P is safe if all r ∈ P are safe. In the following we assume that programs are safe.</p>
      <p>2The first two aggregates roughly correspond, respectively, to the cardinality and weight
constraint literals of Smodels. #min and #max are undefined for empty set.
Stratification. A DLPA program P is aggregate-stratified if there exists a
function || ||, called level mapping, from the set of (standard) predicates of P to
ordinals, such that for each pair a and b of standard predicates, occurring in the head
and body of a rule r ∈ P, respectively: (i) if b appears in an aggregate atom, then
||b|| &lt; ||a||, and (ii) if b occurs in a standard atom, then ||b|| ≤ ||a||.
Example 3. Consider the program consisting of a set of facts for predicates a and
b, plus the following two rules:
q(X) :- p(X), #count{Y : a(Y, X), b(X)} ≤ 2.</p>
      <p>p(X) :- q(X), b(X).</p>
      <p>The program is aggregate-stratified, as the level mapping ||a|| = ||b|| = 1, ||p|| =
||q|| = 2 satisfies the required conditions. If we add the rule b(X) :- p(X), then
no such level-mapping exists and the program becomes aggregate-unstratified.</p>
      <p>
        Intuitively, aggregate-stratification forbids recursion through aggregates. While
the semantics of aggregate-stratified programs is more or less agreed upon,
different and disagreeing semantics for aggregate-unstratified programs have been
defined in the past, cf. [
        <xref ref-type="bibr" rid="ref15 ref19 ref4">16, 20, 5</xref>
        ]. In this work, we will consider only
aggregatestratified programs, but all considerations should apply also to aggregate-unstratified
programs under any of the proposed semantics.
2.2
      </p>
      <sec id="sec-2-1">
        <title>Answer Set Semantics</title>
        <p>Universe and Base. Given a DLPA program P, let UP denote the set of
constants appearing in P, and BP be the set of standard atoms constructible from the
(standard) predicates of P with constants in UP . Given a set X, let 2X denote the
set of all multisets over elements from X. Without loss of generality, we assume
that aggregate functions map to I (the set of integers).</p>
        <p>N
Example 4. #count is defined over 2UP, #sum over 2 , #min and #max are</p>
        <p>N
defined over 2 − {∅}.</p>
        <p>Instantiation. A substitution is a mapping from a set of variables to UP . A
substitution from the set of global variables of a rule r (to UP ) is a global
substitution for r; a substitution from the set of local variables of a symbolic set S (to
UP ) is a local substitution for S. Given a symbolic set without global variables
S = {Vars : conj }, the instantiation of S is the following ground set of pairs
inst(S): {hγ(Vars) : γ(conj )i | γ is a local substitution for S}.3
A ground instance of a rule r is obtained in two steps: (1) a global substitution
σ for r is first applied over r; (2) every symbolic set S in σ(r) is replaced by its
instantiation inst(S). The instantiation Ground(P) of a program P is the set of
all possible instances of the rules of P.</p>
        <p>3Given a substitution σ and a DLPA object Obj (rule, set, etc.), we denote by σ(Obj) the object
obtained by replacing each variable X in Obj by σ(X).
Interpretations. An interpretation for a DLPA program P is a consistent set of
standard ground literals, that is I ⊆ (BP ∪ ¬.BP ) such that I ∩ ¬.I = ∅. A
standard ground literal L is true (resp. false) w.r.t I if L ∈ I (resp. L ∈ ¬.I). If
a standard ground literal is neither true nor false w.r.t I then it is undefined w.r.t
I. We denote by I+ (resp. I−) the set of all atoms occurring in standard positive
(resp. negative) literals in I. We denote by I¯ the set of undefined atoms w.r.t. I (i.e.
BP \ I+ ∪ I−). An interpretation I is total if I¯ is empty (i.e., I+ ∪ ¬.I− = BP ),
otherwise I is partial.</p>
        <p>An interpretation also provides a meaning for aggregate literals. Their truth
value is first defined for total interpretations, and then generalized to partial ones.</p>
        <p>Let I be a total interpretation. A standard ground conjunction is true (resp.
false) w.r.t I if all (resp. any of) its literals are true (resp. false). The meaning
of a set, an aggregate function, and an aggregate atom under an interpretation, is
a multiset, a value, and a truth-value, respectively. Let f (S) be a an aggregate
function. The valuation I(S) of S w.r.t. I is the multiset of the first constant of the
elements in S whose conjunction is true w.r.t. I. More precisely, let I(S) denote
the multiset [t1 | ht1, ..., tn : conj i ∈ S∧ conj is true w.r.t. I ]. The valuation
I(f (S)) of an aggregate function f (S) w.r.t. I is the result of the application of f
on I(S). If the multiset I(S) is not in the domain of f , I(f (S)) = ⊥ (where ⊥ is
a fixed symbol not occurring in P ).</p>
        <p>An instantiated aggregate atom A of the form f (S) ≺ k is true w.r.t. I if: (i)
I(f (S)) 6= ⊥, and, (ii) I(f (S)) ≺ k holds; otherwise, A is false. An instantiated
aggregate literal notA = notf (S) ≺ k is true w.r.t. I if (i) I(f (S)) 6= ⊥, and, (ii)
I(f (S)) ≺ k does not hold; otherwise, A is false.</p>
        <p>If I is a partial interpretation, an aggregate literal A is true (resp. false) w.r.t. I
if it is true (resp. false) w.r.t. each total interpretation J extending I (i.e., ∀ J s.t.
I ⊆ J , A is true (resp. false) w.r.t. J ); otherwise it is undefined.</p>
        <p>
          Example 5. Consider the atom A = #sum{h1 : p(2, 1)i, h2 : p(2, 2)i} &gt; 1. Let S
be the ground set in A. For the interpretation I = {p(2, 2)}, each extending total
interpretation contains either p(2, 1) or notp(2, 1). Therefore, either I(S) = [
          <xref ref-type="bibr" rid="ref1">2</xref>
          ]
or I(S) = [
          <xref ref-type="bibr" rid="ref1">1, 2</xref>
          ] and the application of #sum yields either 2 &gt; 1 or 3 &gt; 1, hence
A is true w.r.t. I.
        </p>
        <p>Remark 1. Our definitions of interpretation and truth values preserve “knowledge
monotonicity”. If an interpretation J extends I (i.e., I ⊆ J ), then each literal
which is true w.r.t. I is true w.r.t. J , and each literal which is false w.r.t. I is false
w.r.t. J as well.</p>
        <p>
          Minimal Models. Given an interpretation I, a rule r is satisfied w.r.t. I if some
head atom is true w.r.t. I whenever all body literals are true w.r.t. I. A total
interpretation M is a model of a DLPA program P if all r ∈ Ground(P ) are satisfied
w.r.t. M . A model M for P is (subset) minimal if no model N for P exists such
that N + ⊂ M +. Note that, under these definitions, the word interpretation refers
to a possibly partial interpretation, while a model is always a total interpretation.
Answer Sets. We now recall the generalization of the Gelfond-Lifschitz
transformation and answer sets for DLPA programs from [
          <xref ref-type="bibr" rid="ref4">5</xref>
          ]: Given a ground DLPA
program P and a total interpretation I, let PI denote the transformed program
obtained from P by deleting all rules in which a body literal is false w.r.t. I. I is an
answer set of a program P if it is a minimal model of Ground(P)I .
        </p>
        <p>Example 6. Consider interpretation I1 = {p(a)}, I2 = {notp(a)} and two
programs P1 = {p(a) :- #count{X : p(X)} &gt; 0.} and P2 = {p(a) :- #count{X : p(X)}
&lt; 1.}. Ground(P1) = {p(a) :- #count{ha : p(a)i} &gt; 0.} and Ground(P1)I1 = Ground(P1),
Ground(P1)I2 = ∅. Furthermore, Ground(P2) = {p(a) :- #count{ha : p(a)i} &lt; 1.},
and Ground(P2)I1 = ∅, Ground(P2)I2 = Ground(P2) hold. I2 is the only answer
set of P1 (since I1 is not a minimal model of Ground(P1)I1 ), while P2 admits no
answer set (I1 is not a minimal model of Ground(P2)I1 , and I2 is not a model of
Ground(P2) = Ground(P2)I2 ).</p>
        <p>Note that any answer set A of P is also a model of P because Ground(P)A ⊆
Ground(P), and rules in Ground(P) − Ground(P)A are satisfied w.r.t. A.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Backjumping and Reason Calculus in DLV</title>
      <p>
        DLV is the state-of-the-art disjunctive ASP system. DLV relies on backtracking
search similar to the DPLL procedure for SAT solving (most other competitive ASP
systems exploit similar techniques). Basically, starting from the empty (partial)
interpretation, the solver repeatedly assumes truth-values for atoms (chosen
according to an heuristic), subsequently computing their deterministic consequences
(propagation). This is done until either an answer set is found or an
inconsistency is detected. In the latter case, (chronological) backtracking occurs. Since
the last choice does not necessarily influence the inconsistency, the procedure may
perform a lot of useless computations. In [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ], DLV has been enhanced by
backjumping [
        <xref ref-type="bibr" rid="ref16 ref6">7, 17</xref>
        ], which allows for going back to a choice which is relevant for the
found inconsistency.4 A crucial point is how relevance for an inconsistency can be
determined. In [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ], the necessary information for deciding relevance is recorded
by means of a reason calculus, which collects information about the choices
(“reasons”) whose truth-values have caused truth-values of other deterministically
derived atoms.
      </p>
      <p>
        In practice, once an atom has been assigned a truth-value during the
computation, we can associate a reason to it. For instance, given a rule a :- b, c, not d.,
if b and c are true and d is false in the current partial interpretation, then a will
be derived as true. In this case, a is true because b and c are true and d is false.
Therefore, the reasons for a will consist of the reasons for b, c, and d. Chosen
literals are seen as their own reason. So each literal l derived during the
propagation has an associated set of positive integers R(l) representing the reasons for l,
which contains essentially the recursion levels of the choices which entail l. In the
4For more details, see [
        <xref ref-type="bibr" rid="ref2">3</xref>
        ] for the basic DLV algorithm and [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ] for backjumping.
following, we will describe the inference rules needed for correctly implementing
aggregates [
        <xref ref-type="bibr" rid="ref1 ref18">19, 2</xref>
        ], and we present the associated extension of the reason calculus
which allows for dealing with aggregates.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Reason Calculus for Aggregates</title>
      <p>We next report the reason calculus for each aggregate supported by DLV.
Hereafter, a partial interpretation (here a set of literals) I is assumed to be given.</p>
      <p>Consider a pair ht : conji where t is a sequence of terms and conj a
conjunction of literals. We denote by Cconj (resp. Sconj ) the reason for conj to
be false (resp. true) w.r.t. I. In particular, Cconj is the reason of a false literal
in conj5, while Sconj = Sl∈conj R(l), i.e. all reasons for the literals in conj.
Moreover, let A = {ht1 : conj1i, . . . , htn : conjni} be a set term, define CA =
Sht:conji∈A∧conj∈/I Cconj and SA = Sht:conji∈A∧conj∈I Sconj, where a true (resp.
false) conjunction w.r.t. interpretation I is denoted by conj ∈ I (resp. conj ∈/ I).
Intuitively, CA represents the reasons for false conjunctions in A, while SA
represents the reason for true conjunctions in A.</p>
      <p>In the following, each propagation rule and the corresponding reason
calculus are detailed. Without loss of generality, we focus on rules h : −f (A)Θk,
Θ ∈ {&lt;, &gt;}, since the calculus can easily be extended to the general case. More
in detail, we consider two different scenarios depending on whether the
propagation proceeds from literals in A to aggregate literals f (A)Θk (forward inference)
or the other-way round (backward inference). Basically, in the first case we derive
the truth/falsity of the aggregate literal f (A)Θk from the truth/falsity of some
conjunction occurring in A; whereas, in the second case, given a rule containing an
aggregate atom which is already known to be true or false w.r.t. the current
interpretation,6 we infer some literals occurring in the conjunctions in A to be true/false.
4.1</p>
      <sec id="sec-4-1">
        <title>Forward Inference</title>
        <p>This kind of propagation rules apply when it is possible to derive an aggregate
literal f (A)Θk to be true or false because some conjunction in A is true or false
w.r.t. I. As an example consider the program:
a(1).</p>
        <p>a(2).</p>
        <p>h : −#count{h1 : a(1)i, h1 : a(2)i} &lt; 1.</p>
        <p>
          Since both a(1) and a(2) are facts, they are first assumed to be true; then, since
the actual count for the aggregate is 2, the aggregate literal is inferred to be false
by forward inference. In the following, we report in a separate paragraph both
5Since a satisfied conjunction can have several “satisfying literals”, the literal should be chosen
as the reason that allows for the “longest jump,” as argued in [
          <xref ref-type="bibr" rid="ref17">18</xref>
          ].
        </p>
        <p>
          6This can happen in our setting as a consequence of the application of either contraposition for
true head or contraposition for false head propagation rules, see [
          <xref ref-type="bibr" rid="ref17">18</xref>
          ].
propagation rules and corresponding reason calculus for the aggregates supported
by DLV; #max{A}Θk is symmetric to #min{A}Θk and is not reported.
#count{A} &lt; k (resp. #count{A} &gt; k). Suppose that there exists7 a set
A′ ⊆ A s.t. for each ht : conji ∈ A′,8 conj is true (resp. false) in I and |A′| ≥ k
(resp. |A′| ≥ |A| − k), then #count{A} &lt; k (resp. #count{A} &gt; k) is inferred
to be false and its reasons are set to SA′ (resp. CA′ ). Conversely, suppose that there
exists a set A′ ⊆ A s.t. for each ht : conji ∈ A′, conj is false (resp. true) in I
and |A′| &gt; |A| − k (resp. |A′| &gt; k), then we infer that #count{A} &lt; k (resp.
#count{A} &gt; k) is true and we set its reason to CA′ (resp. SA′ ).
#min{A} &lt; k (resp. #min{A} &gt; k). Let A′ be the set of all pairs hv, t :
conji ∈ A s.t. v &lt; k (resp. v ≤ k). If for each hv, t : conji ∈ A′, conj is false
in I , then #min{A} &lt; k is derived to be false (resp. #min{A} &gt; k derived to
be true) and we set its reasons to Sconjm . Conversely, suppose there exists a pair
hv, t : conji ∈ A s.t. conj is true in I and v &lt; k (resp. v ≤ k), then we infer that
#min{A} &lt; k is true (resp. #min{A} &gt; k is false) and set its reason to Sconj .
#sum{A} &lt; k (resp. #sum{A} &gt; k). Suppose that there exists a set A′ ⊆ A s.t.
for each hv, t : conji ∈ A′, conj is true (resp. false) in I and Σ{v|hv,t:conji∈A′}v ≥
k (resp. Σ{v|hv,t:conji∈A}v − Σ{v|hv,t:conji∈A′}v ≤ k), then #sum{A} &lt; k (resp.
#sum{A} &gt; k) is false and we set its reason to SA′ (resp. CA′ ). Conversely,
suppose that there exists a set A′ ⊆ A s.t. for each hv, t : conji ∈ A′, conj
is false (resp. true) in I and Σ{v|hv,t:conji∈A}v − Σ{v|hv,t:conji∈A′}v &lt; k (resp.
Σ{v|hv,t:conji∈A′}v &gt; k), then #sum{A} &lt; k (resp. #sum{A} &gt; k) is true and its
reason is CA′ (resp. SA′ ).
4.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Backward Inference</title>
        <p>This kind of propagation rules apply when an aggregate literal f (A)Θk, Θ ∈ {&lt;
, &gt;} has been derived true (or false), and there is a unique way9 to satisfy it by
inferring that some literals belonging to the conjunctions in A is true or false. For
example, suppose that I is empty and consider the program:
:- not h.</p>
        <p>h : −#count{h1 : ai, h1 : bi} &gt; 1.</p>
        <p>During propagation we first infer h to be true for satisfying the constraint,
and then, in order to satisfy the rule, also the aggregate literal is inferred to be
7As far as the implementation is concerned, in case there are several different sets with this
property, a safe choice is to consider their union. Another, less expensive, solution is to build A′ by
iterating over the elements of A until the condition is met.</p>
        <p>8Hereafter, hv, t : conji is a syntactic shorthand for hv, t1, · · · , tni, where v is a constant and t
is the list of constants t1, · · · , tn, n ≥ 0.</p>
        <p>9Since the propagation process must be deterministic.
true (independently by its aggregate set). At this point, backward propagation can
happen, since the unique way to satisfy the aggregate literal is to infer both a
and b to be true. Thus, backward propagation happens when an aggregate literal
f (A)Θk has been derived true (or false) in the current interpretation, and there
is only one way to satisfy it by deterministically setting some conji (s.t. hti :
conjii ∈ A) true (or false) w.r.t I. For doing so, an implementation detail of
DLV is exploited, which internally replaces conjunctions in aggregates by freshly
introduced auxiliary atoms, along with a rule defining the auxiliary atom by means
of the conjunction. So inside DLV, conji will always be an atom, which can simply
be set to true or false, and its defining rule will then act as a constraint eventually
enforcing truth or falsity of the conjunction conji. As far as the reason calculus
is concerned, literals are inferred to be true or false by this operation because both
the aggregate literal is true/false and some conjunctions in A (being either true or
false) made the process deterministic; thus, the reason for each literal li inferred by
backward inference is set to R(li) = R(f (A)Θk) ∪ CA ∪ SA.</p>
        <p>The following paragraphs report sufficient conditions for applying backward
inference in the case of the aggregates supported by DLV. Since conditions for
f (A) &gt; k to be true (resp. false) basically coincides with the ones of f (A) &lt; k + 1
to be false (resp. true), only one of the two cases is reported for each aggregate.
Moreover, from now on, we assume that, whenever backward inference requires to
derive something, this action can be done deterministically (if this is not possible
then backward inference is not performed).
#count{A} &lt; k. Let TA be the set TA = {hti : conjii ∈ A s.t. conji is true
w.r.t. I}, and FA be the set FA = {hti : conjii ∈ A s.t. conji is false w.r.t. I},
and suppose #count{A} &lt; k is true w.r.t. I and |TA| = k − 1, then all undefined
conjunctions in A are made false. Conversely, suppose #count{A} &lt; k is false
w.r.t. I and |A| − |FA| = k, then all undefined conjunctions in A are made true.
#min{A} &lt; k. Suppose that, #min{A} &lt; k is true w.r.t. I, and there is only
one hv, t : conji ∈ A such that v &lt; k and conj is neither true or false w.r.t. I;
suppose also that, all the remaining hvi, ti : conjii ∈ A s.t. vi &lt; k are such
that conji is false w.r.t. I, then conj is made true. Conversely, suppose that
#min{A} &lt; k is false w.r.t. I and, there is no hv, t : conji ∈ A such that
v &lt; k and conj is true w.r.t. I. In addition, suppose that either (i) there exist
hv′, t′ : conj′i ∈ A s.t. v′ &gt; k and conj′ is true w.r.t. I or (ii) there is only one
hv′′, t′′ : conj′′i ∈ A s.t. v′′ &gt; k with conj′′ undefined w.r.t. I. Then all the conji
such that hvi, ti : conjii ∈ A and vi &lt; k are made to be false, and, if case (ii)
holds, also conj′′ is made true w.r.t. I.
#max{A} &lt; k. Suppose that, #max{A} &lt; k is false w.r.t. I, and there is
only one hv, t : conji ∈ A such that v &gt; k and conj is neither true or false
w.r.t. I; suppose also that, all the remaining hvi, ti : conjii ∈ A s.t. vi &gt; k
are such that conji is false w.r.t. I, then conj is made true. Conversely, suppose
that #max{A} &lt; k is true w.r.t. I and, there is no hv, t : conji ∈ A such that
v &gt; k and conj is true w.r.t. I. In addition, suppose that either (i) there exist
hv′, t′ : conj′i ∈ A s.t. v′ &lt; k and conj′ is true w.r.t. I or (ii) there is only one
hv′′, t′′ : conj′′i ∈ A s.t. v′′ &lt; k with conj′′ undefined w.r.t. I. Then all the conji
such that hvi, ti : conjii ∈ A and vi &lt; k are made to be false, and, in if case (ii)
holds, also conj′′ is made true w.r.t. I.
#sum{A} &lt; k. Let us denote by S(X) the sum S(X) = Phvi,ti:conjii∈X vi, and
suppose that #sum{A} &lt; k is true w.r.t. I and S(TA) = k − 1, then all undefined
atoms in A are made false. Conversely, suppose that #sum{A} &lt; k is false in I
and S(A) − S(FA) = k, then all undefined atoms in A are made true.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Look-back Heuristics in the Presence of Aggregates</title>
      <p>
        Look-back heuristics, which have been originally exploited in SAT solvers like
Chaff [
        <xref ref-type="bibr" rid="ref12">13</xref>
        ] (where the heuristic is called VSIDS), have also been considered for
DLV in [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ], in conjunction with backjumping, leading to positive results.
      </p>
      <p>
        A key factor of this type of heuristic is the initialization of the weights of the
literals [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ], to be updated with the reasons calculus during the search. A common
practice is to initialize those values with the number of occurrences in the input
(ground) programs. But, if there are aggregates in the program, we would like to
take them into account in order to guide the search. The idea is thus to implicitly
consider the equivalent10 standard program for an aggregate and count also these
occurrences for the heuristic. It is worth noting that this equivalent program does
not have to be “materialized” in memory. As before, we consider only rules of
the form h : −f (A)Θk for simplicity. We denote by li1, . . . , lim the literals
belonging to each conji ∈ A, (m &gt; 0). Table 1 summarizes the formulas employed
for computing literal occurrences. Note that equivalent programs in the case of
#sum are quite involved, rendering the computation of the exact values fairly
inefficient (many binomial coefficients). Therefore we decided to approximate the
corresponding heuristic value, replacing #sum{A} by #count{A∗} where A∗
contains vi different elements, one for each hvi, ti : conjii ∈ A.
      </p>
      <p>As an example, consider a rule of the form h : −#min{A} &lt; k. The
equivalent standard program contains a rule of the type h : −conji, for each vi, 1 ≤ i ≤ n
s.t. vi &lt; k. In this way, h becomes true if one of the conji having vi &lt; k becomes
true, i.e. if the minimum computed by the aggregate is less than k in current answer
set. Thus, the number of occurrences of h in the corresponding standard program
are occ(h) = |{vi : hvi, ti : conjii ∈ A, vi &lt; k}|, while for each literal liz, i.e. the
z-th literal of conji, occ(liz) = 1 if vi &lt; k, otherwise occ(liz) = 0.</p>
      <p>10Equivalence in general holds only in a stratified setting, which however can serve as an
approximation also in non-recursive settings.</p>
    </sec>
    <sec id="sec-6">
      <title>Experimental analysis</title>
      <p>
        We have performed an experimental analysis on benchmarks with aggregates. In
particular, we have considered some domains of the last ASP Competition11
belonging to the MGS class, together with other benchmarks reported in [
        <xref ref-type="bibr" rid="ref1">2</xref>
        ]. For
the domains of the ASP Competition, we have downloaded the benchmarks at
“http://asparagus.cs.uni-potsdam.de/contest/downloads/benchmarks-mgs.tgz” and
selected the logic programs with aggregates.
      </p>
      <p>
        All the experiments were performed on a 3GHz PentiumIV equipped with 1GB
of RAM, 2MB of level 2 cache running Debian GNU/Linux. Time measurements
have been done using the time command shipped with the system, counting total
CPU time for the respective process. We report the results in terms of execution
time for finding one answer set, if any, within 20 minutes. Results are summarized
in Table 2, where the first column reports the domain name, the second column the
total number of instances considered (in the given domain), the third and fourth
columns report the results for the standard version of DLV ver. of 2007-10-11 in
the standard settings and the new system DLVBJA featuring both backjumping and
look-back heuristics, and the remaining columns report the results for CLASP [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ]
ver. 1.0.4, CMODELS [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ] ver. 3.75, SMODELS [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ] ver. 2.31 and
SMODELSCC [
        <xref ref-type="bibr" rid="ref20">21</xref>
        ] ver 1.08, which use LPARSE12 for grounding. The results for the systems
are presented as the mean CPU time of solved instances, along with the number of
instances solved within the time limit (in parentheses). Regarding SMODELS-CC,
two results are missing (i.e., there is a “no enc.” in the Table) because it can not
deal with weight constraint rules.
      </p>
      <p>Domain #I DLV DLVBJA CLASP CMODELS SMODELS SMODELS-CC
BoundedSpanningTree 8 0.13 (8) 0.04 (8) 6.01 (8) 5.69 (8) 101.47 (5) 343.35 (8)
TowerOfHanoi 8 1.16 (8) 1.1 (8) 32.84 (8) 117.32 (7) 259.82 (8) 154.74 (7)
WeightedSpanningTree 8 0.04 (8) 0.02 (8) 2.16 (8) 2.31 (8) 28.51 (6) no enc.
WeightedLatinSquares 8 542.23 (6) 140.83 (7) 0.03 (8) 0.34 (8) 326.2 (8) no enc.
TimeTabling 9 4.49 (9) 0.34 (9) 1.15(9) 0.84 (9) 5.12 (3) 96.39 (9)</p>
      <p>It is useful to know what kinds of aggregates each domain involves: the third
and fourth domains involve “#count” and “#sum”, the first and last domains
involve “#count”, while the second domain contains only the “#max” aggregate.</p>
      <p>We can see that the first three domains presented are easily solved by both DLV
and DLVBJA, slightly better by the enhanced system, while the remaining solvers
show higher mean CPU time and/or solve less instances. The last two domains
further show the potential of the enhanced system w.r.t. DLV, given that it is able
to solve more instances (WeightedLatinSquares domain) in considerably shorter
time (DLVBJA is on average 15 times faster on TimeTabling, where the systems
solve the same instances, and significantly faster on WeightedLatinSquares,
solving also more instances): interestingly, if compared to the remaining systems, this
gain leads DLVBJA to be the best performing solver in 4 domains out of 5 and it
performs well in particular in the TimeTabling domain. Also in the
WeightedLatinSquares, DLVBJA has a clear advantage over DLV. However, DLVBJA is still
inferior with respect to CLASP, CMODELS and SMODELS.</p>
      <p>
        We have conducted further investigations regarding the differences in
performance in the particular domain WeightedLatinSquares. One explanation could be
the absence of learning in DLVBJA, but also other factors may be important, as
discussed next. As a matter of fact, two main parameters affecting VSIDS behavior
are the “importance” of literals in reasons (called “reward”, i.e., how much the
related counters for such literals is to be increased) and the constant factor by which
counters are periodically divided (called “aging”) in order to possibly focus the
search on the last literals involved in reasons (see [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ] for details on VSIDS
heuristics). In the experiments we have presented so far, these parameters were set to 1,
and 2, respectively, i.e., to the original values used by Chaff. But obviously, these
might not be the best values for some domains, for example sometimes one would
prefer higher values for these parameters in order to let the heuristic value updates
take effect earlier in the search. We have informally conducted some experiments
with different values for reward and aging. Interestingly, with some of the new
setting we were able to solve all WeightedLatinSquares, indicating that also these
factors may be an important reason for the comparatively poor performance of
DLVBJA for this domain.
      </p>
      <p>
        We have also conducted further benchmarks on selected domains, comparing
only DLVBJA and DLV. Of these, we would like to mention as an example the
Seating benchmarks from [
        <xref ref-type="bibr" rid="ref1">2</xref>
        ]. Here, DLVBJA is able to solve more instances than
DLV, with a mean CPU time of 1.24 for DLVBJA and 31.46 seconds for DLV.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Related Work and Conclusion</title>
      <p>
        Aggregates are an important linguistic enhancement of ASP, and most of the
available systems are already able do deal with them. In particular, SMODELS [
        <xref ref-type="bibr" rid="ref13 ref14">14, 15</xref>
        ],
CMODELS [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ] and CLASP [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ] support cardinality and weight constraints, which
correspond to count and sum aggregates, respectively, while SMODELScc [
        <xref ref-type="bibr" rid="ref20">21</xref>
        ]
implements only cardinality constraints, and both GNT [
        <xref ref-type="bibr" rid="ref9">10</xref>
        ] and ASSAT [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ] do not
support aggregates. About solvers based on look-back techniques, aggregates are
considered explicitly for backjumping in SMODELScc (where additional arcs are
added to the implication graph) and CLASP; conversely, CMODELS translates the
original program into a propositional formula that is then evaluated by a SAT solver
(possibly exploiting backjumping). Notably, none of the existing systems directly
exploits aggegates for the computation of heuristics, indeed for all of them the
conflict analysis works in a similar way as in the case of “normal” programs (i.e., by
exploiting the UIP-based conflict analysis technique borrowed from SAT).
      </p>
      <p>
        In this paper we have described look-back techniques for the evaluation of
aggregates. In particular the main contributions are: (i) an extension of the reason
calculus defined in [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ]; and, (ii) an enhanced version of the heuristic presented in
[
        <xref ref-type="bibr" rid="ref3">4</xref>
        ] that explicitly takes into account the presence of aggregates. Moreover, we have
implemented the proposed techniques in a prototype version of the DLV system
and performed a set of benchmarks, which indicate performance benefits of the
enhanced system.
      </p>
      <p>Encouraged by the results of the performance evaluations, we are currently
continuing our work in order to improve the performance of DLVBJA by
developing further optimizations both by enhancing the implementation of the reason
calculus, by considering different “equivalent programs”, and, thus, different VSIDS
initializations and by tuning various VSIDS parameters. Additionally, we are also
enlarging both the set of domains on which we conduct the performance
evaluation, primarly considering other domains from the ASP Competition, and the set
of systems, by including PBMODELS13 in the analysis.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgements</title>
      <p>Supported by M.I.U.R. within projects “Potenziamento e Applicazioni della
Programmazione Logica Disgiuntiva” and “Sistemi basati sulla logica per la
rappresentazione di conoscenza: estensioni e tecniche di ottimizzazione.”</p>
    </sec>
    <sec id="sec-9">
      <title>References</title>
      <p>[1] C. Baral. Knowledge Representation, Reasoning and Declarative Problem</p>
      <p>Solving. Cambridge University Press, 2003.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Dell'Armi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          , G. Ielpa,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Pfeifer</surname>
          </string-name>
          .
          <article-title>Aggregate Functions in DLV</article-title>
          .
          <source>In Proceedings ASP03</source>
          , pages
          <fpage>274</fpage>
          -
          <lpage>288</lpage>
          , CEUR Vol-
          <volume>78</volume>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          .
          <article-title>Enhancing Efficiency and Expressiveness in Answer Set Programming Systems</article-title>
          .
          <source>PhD thesis</source>
          , Institut fu¨r Informationssysteme,
          <source>TU Wien</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          .
          <article-title>Experimenting with LookBack Heuristics for Hard ASP Programs</article-title>
          .
          <source>In Proceedings of LPNMR</source>
          <year>2007</year>
          , LNAI)
          <volume>4483</volume>
          , pages
          <fpage>110</fpage>
          -
          <lpage>122</lpage>
          ,
          <year>2007</year>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Pfeifer</surname>
          </string-name>
          .
          <article-title>Recursive aggregates in disjunctive logic programs: Semantics and complexity</article-title>
          .
          <source>In Proceedings of JELIA</source>
          <year>2004</year>
          , LNAI
          <volume>3229</volume>
          , pages
          <fpage>200</fpage>
          -
          <lpage>212</lpage>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          , G. Pfeifer,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Dell'Armi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Ielpa</surname>
          </string-name>
          .
          <article-title>Design and implementation of aggregate functions in the dlv system</article-title>
          .
          <source>TPLP</source>
          . in press.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Gaschnig</surname>
          </string-name>
          .
          <article-title>Performance measurement and analysis of certain search algorithms</article-title>
          .
          <source>PhD thesis</source>
          , C.M. University, Pittsburgh, USA,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Neumann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          .
          <article-title>Conflict-driven answer set solving</article-title>
          .
          <source>Proc. of IJCAI-07</source>
          , pp
          <fpage>386</fpage>
          -
          <lpage>392</lpage>
          . Morgan Kaufmann,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>Classical Negation in Logic Programs</article-title>
          and
          <string-name>
            <given-names>Disjunctive</given-names>
            <surname>Databases</surname>
          </string-name>
          . New Generation Computing,
          <volume>9</volume>
          :
          <fpage>365</fpage>
          -
          <lpage>385</lpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Janhunen</surname>
          </string-name>
          and
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Niemela¨. Gnt - a solver for disjunctive logic programs</article-title>
          .
          <source>In Proceedings of LPNMR-7, LNAI 2923</source>
          , pages
          <fpage>331</fpage>
          -
          <lpage>335</lpage>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          .
          <article-title>Disjunctive Answer Set Programming via Satisfiability</article-title>
          .
          <source>In Proceedings of LPNMR'05, LNAI 3662</source>
          , pages
          <fpage>447</fpage>
          -
          <lpage>451</lpage>
          . Springer,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Lin</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          .
          <article-title>ASSAT: computing answer sets of a logic program by SAT solvers</article-title>
          .
          <source>Artificial Intelligence</source>
          ,
          <volume>157</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>115</fpage>
          -
          <lpage>137</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M. W.</given-names>
            <surname>Moskewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. F.</given-names>
            <surname>Madigan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Malik</surname>
          </string-name>
          . Chaff:
          <article-title>Engineering an Efficient SAT Solver</article-title>
          .
          <source>In Proceedings of DAC 2001</source>
          , pages
          <fpage>530</fpage>
          -
          <lpage>535</lpage>
          ,
          <string-name>
            <surname>Las</surname>
            <given-names>Vegas</given-names>
          </string-name>
          ,
          <string-name>
            <surname>NV</surname>
          </string-name>
          , USA,
          <year>June 2001</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>I.</given-names>
            <surname>Niemela</surname>
          </string-name>
          ¨ and
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          .
          <article-title>Smodels - An Implementation of the Stable Model and Well-founded Semantics for Normal Logic Programs</article-title>
          .
          <source>In Proceedings of LPNMR'97, LNAI 1265</source>
          , pages
          <fpage>420</fpage>
          -
          <lpage>429</lpage>
          , Dagstuhl, Germany,
          <year>1997</year>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [15]
          <string-name>
            <surname>I. Niemela¨</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Soininen</surname>
          </string-name>
          .
          <article-title>Stable Model Semantics of Weight Constraint Rules</article-title>
          .
          <source>In Proceedings of LPNMR'99)</source>
          ,
          <source>LNAI 1730</source>
          ,
          <year>1999</year>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>N.</given-names>
            <surname>Pelov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Denecker</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Bruynooghe</surname>
          </string-name>
          .
          <article-title>Well-founded and Stable Semantics of Logic Programs with Aggregates</article-title>
          .
          <source>TPLP</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <fpage>301</fpage>
          -
          <lpage>353</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>P.</given-names>
            <surname>Prosser</surname>
          </string-name>
          .
          <article-title>Hybrid Algorithms for the Constraint Satisfaction Problem</article-title>
          .
          <source>Computational Intelligence</source>
          ,
          <volume>9</volume>
          :
          <fpage>268</fpage>
          -
          <lpage>299</lpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          .
          <article-title>A Backjumping Technique for Disjunctive Logic Programming</article-title>
          .
          <source>AI Communications</source>
          ,
          <volume>19</volume>
          (
          <issue>2</issue>
          ):
          <fpage>155</fpage>
          -
          <lpage>172</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          , I. Niemela¨, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Soininen</surname>
          </string-name>
          .
          <article-title>Extending and Implementing the Stable Model Semantics</article-title>
          .
          <source>Artificial Intelligence</source>
          ,
          <volume>138</volume>
          :
          <fpage>181</fpage>
          -
          <lpage>234</lpage>
          ,
          <year>June 2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Son</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Pontelli</surname>
          </string-name>
          .
          <article-title>A Constructive Semantic Characterization of Aggregates in ASP</article-title>
          . TPLP,
          <volume>7</volume>
          :
          <fpage>355</fpage>
          -
          <lpage>375</lpage>
          , May
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ward</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Schlipf</surname>
          </string-name>
          .
          <article-title>Answer Set Programming with Clause Learning</article-title>
          .
          <source>In Proceedings of LPNMR-7, LNAI 2923</source>
          , pages
          <fpage>302</fpage>
          -
          <lpage>313</lpage>
          . Springer, Jan.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>