<!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>Compilation of ASP programs: Recent developments</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Carmine Dodaro</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giuseppe Mazzotta</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Ricca</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Calabria</institution>
          ,
          <addr-line>Rende CS, 87036</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Answer Set Programming (ASP) is a well-known declarative AI formalism developed in the area of logic programming and nonmonotonic reasoning. Modern ASP systems are based on the ground&amp;solve approach. Although efective in industrial and academic applications ground&amp;solve ASP systems are still unable to handle some classes of programs because of the so-called grounding bottleneck problem. Compilation of ASP programs demonstrated to be an efective technique for overcoming the grounding bottleneck. In the paper titled “Compilation of Aggregates in ASP Systems”, which we presented in the Thirty-Sixth AAAI Conference on Artificial Intelligence (AAAI 2022), the first compilation-based approach for ASP programs that contain aggregates has been presented. In this paper, we outline the benefits of compiling ASP programs and mention possible developments in this line of research.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is a fully declarative AI formalism. ASP was developed in
the Logic Programming and Knowledge Representation communities and represents the most
well-known logic formalism that is based on stable model semantics [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. ASP demonstrated to
be very useful for representing and solving many classes of problems. Indeed, ASP features
both a standardized first-order language and several eficient systems [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. ASP has many
applications both in academia and in industry such as planning, scheduling, robotics, decision
support, natural language understanding, and more (cfr. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]). ASP is supported by eficient
systems, but the improvement of their performance is still an open and challenging research
topic. State-of-the-art ASP systems are based on the ground&amp;solve approach [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The
firstorder input program is transformed by the grounder module in its propositional counterpart,
whose stable models are computed by the solver, implementing a Conflict-Driven Clause
Learning (CDCL) algorithm [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. ASP implementations based on ground&amp;solve, basically, enabled
the development of ASP applications. However, there are classes of ASP programs whose
evaluation is not eficient (sometimes not feasible) due to the combinatorial blow-up of the
program produced by the grounding step. This issue is known under the term grounding
bottleneck [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ]. Many attempts have been done to approach the grounding bottleneck, from
language extensions [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13 ref6 ref8 ref9">6, 8, 9, 10, 11, 12, 13</xref>
        ] to lazy grounding [
        <xref ref-type="bibr" rid="ref14 ref15 ref16">14, 15, 16</xref>
        ]. These techniques
obtained good preliminary results, but lazy grounding systems are still not competitive with
ground&amp;solve systems on common problems [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Recent research suggests that
compilationbased techniques can mitigate the grounding bottleneck problem due to constraints [
        <xref ref-type="bibr" rid="ref17 ref18">17, 18</xref>
        ].
Essentially, their idea is to identify the subprograms causing the grounding bottleneck, and
subsequently translate them to propagators, which are custom procedures that lazily simulate
the ground&amp;solve on the removed subprograms. Problematic constraints are removed from
the non-ground input program and the corresponding propagator is dynamically linked to the
solver to simulate their presence at running time. Compilation of ASP programs demonstrated
to be an efective technique for overcoming the grounding bottleneck. This approach is meant
to speed-up computation by avoiding full grounding and exploiting information known at
compilation time to create custom procedures that are specific to the program at hand. In the
paper titled “Compilation of Aggregates in ASP Systems”, that we presented in the
ThirtySixth AAAI Conference on Artificial Intelligence (AAAI 2022) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], the rfist compilation-based
approach for ASP programs that contain aggregates [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] has been presented1, despite aggregates
are among the most relevant and commonly-employed constructs of ASP [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. In this paper,
we propose a compilation-based approach for ASP programs with aggregates. We identify the
syntactic conditions under which a program with aggregates can be compiled, thus extending
the definition of compilable subprograms of [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Then, we implement the approach on top
of the state-of-the-art ASP solver wasp [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. In this paper we overview our compilation
technique, outline the benefits of compiling ASP programs, and mention possible developments
in this line of research. In the following, we assume the reader familiar with Answer Set
Programming syntax and semantics, and refer the reader to introductory and founding papers
for details [
        <xref ref-type="bibr" rid="ref1 ref2 ref20">1, 2, 20</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Compilation-based approaches</title>
      <p>
        In recent years, compilation-based approaches have been proposed to overcome the grounding
bottleneck problem. Basically, the idea behind these approaches is to compile the
groundingintensive part of an ASP program into a dedicated procedure, named propagator, that simulates
it into an ASP solver during the solving phase. A first attempt has been proposed in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] where
the authors identified some syntactic conditions that allow the compilation of a subprogram into
a lazy propagator. In this approach, the compiled program is omitted in the original program
and is simulated by a procedure that, as soon as a candidate stable model,  , of the remaining
program is computed, checks whether  is coherent or not with omitted subprogram. If it
is the case then the candidate stable model is also a model of the original program otherwise
violated constraints are added into the solver and the model computation process restarts. This
strategy proved to be very efective on grounding-intensive benchmarks and so it motivated the
idea to push forward the concept of propagators. Another compilation-based approach for ASP
constraints has been proposed in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. This work introduced the translation of constraints of
an ASP program into a propagator of the CDCL algorithm that works on partial interpretation.
More precisely, constraints are removed from the input program and they are compiled into an
eager propagator, that simulates the propagation of the omitted constraints during the solving
phase. In this approach solver and propagator works together in order to prevent constraints
failure and so, unlike lazy propagators, the candidate stable model produced by the solver
will be coherent also with the omitted constraints. Eager compilation of grounding-intensive
1Recipient of the “Outstanding student paper award honorable mention of AAAI2022”
constraints introduced significant improvements outperforming traditional ASP solvers but,
unfortunately, it is limited to simple constraints that do not contain aggregates. Aggregates are
among the most used constructs that make ASP efective in representing complex problems in a
very compact way and very often their grounding could be a bottleneck. An attempt to extend
the compilation also to constraints with aggregate has been proposed in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Basically, this
approach provides a compilation strategy for constraints with a count aggregate into an eager
propagator. Count aggregates are normalized under a unique comparison operator, ≥ , and then,
following the idea described in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], they are compiled into a custom procedure that simulates
aggregates propagations. Results obtained by this extension highlighted the strength of the
contribution solving more instances than state-of-the-art system wasp on hard benchmarks
from ASP competitions [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] containing constraints with count aggregate. Starting from the
idea proposed in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] we generalized the compilation of aggregates to rules with sum or count
aggregate [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
      </p>
      <sec id="sec-2-1">
        <title>2.1. Conditions for Splitting and Compiling Programs</title>
        <p>An ASP program  is a set of rules of the form:
ℎ ← 1, . . . , , ∼ +1, . . . , ∼ 
(1)
with  ≥  ≥ 0, where ℎ is a standard atom referred to as head and it can absent, whereas
1, . . . , , ∼ +1, . . . , ∼  is the body, 1, . . . ,  are atoms, and +1, . . . ,  are standard
atoms. Moreover, for a rule ,  and  are two sets containing the head and the body of a
rule , respectively, + and − are two sets containing the positive and the negative body of
, respectively,  denotes the set of aggregate atoms appearing in , and Conj +() and
Conj − () denotes the set of positive and negative standard literals appearing in the aggregate
atoms of the body, respectively. Given a program  , a sub-program of  is a set of rules  ⊆  .
In what follows, we denote with preds() the set of predicate names appearing in  where
 is a structure (literal, conjunction, rule, program, etc). Moreover, given a set of rules  , let
head ( ) = { |  ∈ ,  ∈  }.</p>
        <p>Definition 1. Given an ASP program  , the dependency graph of  , denoted  , is a labeled
graph (, ) where  is the set of predicate names appearing in some head of  , and  contains
(i) (1, 2, +), if there is  ∈  | 1 ∈ preds(+) ∪ preds(Conj +()), 2 ∈ preds(); (ii)
(1, 2, − ), if there is  ∈  | 1 ∈ preds(− ) ∪ preds(Conj − ()), 2 ∈ preds().
Definition 2. Given an ASP program  , an ASP sub-program  ⊆  is compilable w.r.t.  if (i)
 has no loop in it; (ii) for each  ∈ pred (head ( )),  ∈/ pred ( ∖  ); (iii) given two rules
1, 2 ∈ ,  1 ̸= 2, preds(1 ) ∩ preds(2 ) = ∅; and (iv) for each  ∈  , || ≤ 1.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Normalization of the Input Program</title>
        <p>In the following, we describe the main preprocessing steps that are performed to compile the
input sub-program. First of all the sub-program  is analyzed in order to be split into two
sub-programs, namely  lazy and  eager . This analysis consists of navigating the dependency
graph starting from nodes that have no incoming edges and recursively label predicates that
appear in the body of a rule whose head predicate has been already labeled. In this way, the rules
whose head predicate has not been labeled could be treated in a lazy way ( lazy ); other rules are
in  eager . For  eager , we perform a rewriting to obtain a normalized form with rules of a specific
format in order to have a uniform treatment of all the rules to compile. Also, for a structure (set,
list, conjunction, etc.) of elements , let vs() be the set of all variables appearing in .
Step 1. Each rule  ∈  eager of the form (1), with || = 1,  ({Vars : Conj }) ≺  ∈ ,
and ≺∈ { &lt;, ≤ , &gt;, ≥} , is replaced by the following rules:
1. as(Vars,  ) ← Conj ;
2. bd (,  ) ←  ∖ ;
3. aggr (,  ) ← dm(,  ),  ({Vars : as(Vars,  )}) ≥ , where  =  if ≺∈ {≥
and  =  + 1 if ≺∈ {≤ , &gt;};
4. ℎ ← bd (,  ), aggr (,  ) if ≺∈ { &gt;, ≥} and
ℎ ← bd (,  ), ∼ aggr (,  ) if ≺∈ { &lt;, ≤} ;
, &lt;},
where  is vs(Conj ) ∩ vs( ∖ ). Intuitively,  is a set of all variables appearing in both
aggregate set and body.</p>
        <sec id="sec-2-2-1">
          <title>Example 1. Let assume  to be the following rule:</title>
          <p>Then,  is replaced by the following rules:
(,  ) ←
(,  ), (,  ),
#{ : (, ), ∼ ()} ≥ .
1 : as(, ) ← (, ), ∼ ()
2 : bd (,  ) ← (,  ), (,  )
3 : aggr (,  ) ← dm(,  ),</p>
          <p>#{ : as(, )} ≥ 
4 : (,  ) ← bd (,  ), aggr (,  )
Step 2. Each rule  ∈  eager of the form (1), with || = 1,  ({Vars : Conj }) ≺  ∈ ,
and ≺∈ { =}, is replaced by the rules 1., 2., and by the following rules:
5. aggr 1(,  ) ← dm(,  ),  ({Vars : as(Vars,  )}) ≥  ;
6. aggr 2(,  ) ← dm(,  ),  ({Vars : as(Vars,  )}) ≥  + 1;
7. ℎ ← bd (,  ), aggr 1(,  ), ∼ aggr 2(,  ).</p>
          <p>Step 3. Each rule  ∈  eager , with || = 0, is replaced by the following rules:
8. ℎ ←
9. ←
10. ←</p>
          <p>aux (vs(+));
aux (vs(+)), 
, ∼ aux (vs(+)).</p>
          <p>This step is applied also to rules from steps 1 and 2.
∀ ∈ {1, . . . , };</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Example 2. Let assume  to be the following rule:</title>
          <p>(, ) ← (, ), ∼ ().
8 : (, ) ←
9′ :
9′′ :
10 :</p>
          <p>aux (, )
← aux (, ), ∼ (, )
← aux (, ), ()
← (, ), ∼ (), ∼ aux (, ).</p>
          <p>
            Intuitively, the normalization ensures that aggregate functions are applied to a set of atoms,
and rules are subject to a form of completion [
            <xref ref-type="bibr" rid="ref24">24</xref>
            ]. After applying the normalization step the
program contains only rules of the form:
(1) ℎ ← 
(2) ℎ ← , #({  : }) ≥ 
(3) ℎ ← , #({  : }) ≥ 
(4) ← 1, ..., 
Thus, the compiler will only have to produce propagators simulating the above-mentioned four
rule types. Finally, it is important to emphasize that atoms of the form dm(· ) and aux (· ) do
not appear in the head of any rule in the program, and thus the ASP semantics would make them
false in all stable models. Therefore, in our approach, they are treated as external atoms [
            <xref ref-type="bibr" rid="ref25">25</xref>
            ],
whose instantiation and truth values are defined at running time in the propagator when the
base  eager is determined.
          </p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Compilation</title>
        <p>
          The compilation step, basically, follows the baseline described in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. In particular, a rewritten
subprogram  will be compiled into a C++ procedure that includes propagator code for each
rule  ∈  . Afterward, the eager propagator procedure is nested into the state-of-the-art system
wasp as a dynamic library. In order to better understand the idea behind our approach let us
consider the following rules produced by the normalization step:
1 : () :– (,  ).
        </p>
        <p>2 : () :– (), #{ : (, )} ≥ 2.</p>
        <p>
          Basically, the idea behind generated propagators is reported in Algorithms 1 and 2. For more
details on the automatic generation of such propagators we refer the reader to [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Experiments</title>
      <p>
        Our approach has been evaluated in three diferent settings: () A simple benchmark used to
show the limits of ground&amp;solve (cfr. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]). () All benchmarks from ASP competitions [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
including at least one rule with aggregates that can be compiled under our conditions. ()
Grounding-intensive benchmarks from the literature: Component Assignment Problem [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ],
Dynamic In-Degree Counting and Exponential-Save [27].
      </p>
      <p>Algorithm 1 Propagator example for 1
1: if ∃ () ∈  then
2:  = { : (,  )is true}
3:  = { : (,  )is not assigned}
4: if |  ∪  |= 1 then
5:  =  ∪ {(,  ) |  ∈ }
6: end if
7: else
Algorithm 2 Propagator example for 2
1: for all  : ∃ () do
2:  = { : (, )  }
3:  = { : (, )  }
4:  = { : (, )   }
5: if ∼ () ∈  then
6: if |  |= 1 then
7:  =  ∪ {∼ () |  ∈ }
8: end if
9: else
10: if () ∈  then
11: if |  ∪  |= 2 then
12:  =  ∪ {() |  ∈ }
13: end if
8: if ∃ ∼ () ∈  then
9:  =  ∪ {(,  ) |</p>
      <p>
        (,  )   }
10: else
11: if ∃ | (,  ) ∈  then
12:  =  ∪ {()}
13: end if
14: end if
15: end if
14: else
15: if |  ∪  |&lt; 2 then
16:  =  ∪ {∼ ()}
17: else
18: if |  |&gt;= 2 then
19:  =  ∪ {()}
20: end if
21: end if
22: end if
23: end if
24: end for
Hardware and Software. In all the experiments, the compilation-based approach, reported
as wasp-comp, has been compared with the plain version of wasp [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] v. 169e40d and with the
state-of-the-art system clingo v. 5.4.0 [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. Moreover, for Dynamic In-Degree Counting and
Exponential-Save we considered also the system alpha [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], which is based on lazy-grounding
techniques. alpha cannot be used for other experiments since it does not support some of the
language constructs used in the benchmarks (e.g., choice rules with bounds). Experiments were
executed on Xeon(R) Gold 5118 CPUs running Ubuntu Linux (kernel 5.4.0-77-generic), time and
memory are limited to 2100 seconds and 4GB, respectively.
Results. Concerning the setting (), we report execution time (t) and used memory (mem)
for each instance in Table 1. In particular, we observe that clingo and wasp cannot solve
instances with  ≥ 8000, whereas wasp-comp can eficiently handle instances up to values
of  = 40000. Concerning the setting () and () we report for each solver the number
of solved instances (sol.), the sum of running times (sum t) in seconds and the average used
memory (avg mem) in MB. Concerning wasp-comp we report also the compile time in seconds
(comp t) that in general cases is not included in the sum of the time, since the compilation
is done only once for each benchmark (with the exception of Exponential-Save) and, thus,
can be done ofline. Concerning the setting (), we observe that clingo obtains the best
performance overall, and it is faster than wasp and wasp-comp. This setting is useful to analyze
the performance of the proposed technique on benchmarks that do not present a grounding
issues and comparing wasp-comp and wasp, we observe that the former is competitive with the
latter in all the benchmarks but Abstract Dialectical Framework and Partner Units, where wasp
solves 6 and 17 more instances than wasp-comp. Nonetheless, wasp-comp performs better than
wasp on the benchmark Incremental Scheduling, solving 12 more instances. Interestingly, on
this benchmark, wasp-comp also uses less memory than wasp and clingo. Indeed, if only 512
MB are available (as reasonable in some cases) wasp-comp solves 57 and 53 instances more than
wasp and clingo, respectively. Concerning the setting (), wasp-comp outperforms wasp in
all the tested benchmarks solving 133 more instances overall. It is important to observe that each
instance of Exponential-Save requires to be compiled since aggregates to be compiled are part of
the instances. Therefore, in this benchmark, the solving time includes also the compilation time.
Concerning Dynamic In-Degree Counting, wasp-comp and wasp solve the same number of
instances, but wasp-comp is much faster. Moreover, we observe that wasp-comp solves 84 more
instances than clingo overall. Finally, we observe that wasp-comp is competitive also with
alpha, since the latter solves 80 instances of Dynamic In-Degree Counting in 492.0 seconds
using 649.1 MB, and 27 instances of Exponential-Save in 332.9s using 227.8 MB.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Discussion</title>
      <p>
        The grounding bottleneck is a limiting factor for ASP systems based on the ground&amp;solve
architecture. Compilation-based approaches proposed by [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] ofer the possibility to mitigate
this issue in presence of constraints while keeping the benefits of state-of-the-art approaches.
Compilation of aggregates introduced significant improvements in grounding-intensive domains
outperforming state-of-the-art systems. It is worth observing that, compilation techniques
currently are applicable to a limited class of programs. Indeed, the conditions for a subprogram
to be compilable cover many cases of practical interest (constraint-like subprograms) and they
are orthogonal to many available constructs, such as weak constraints, cautious reasoning and
qualitative preferences among answer sets [28], but are far from covering the entire range of
possible cases. Indeed, the support for the compilation of rules is limited, since the system does
not support: unfounded sets propagation, and answer-sets-generator rules (eg., disjunction,
choice rules, and unrestricted negation). The missing constructs are not easy to support, thus
there is a long promising route to follow to deliver a system able to compile any ASP program
that sufers from grounding bottleneck.
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Acknowledgements</title>
      <p>This work was partially supported by the Italian Ministry of Industrial Development (MISE)
under project MAP4ID “Multipurpose Analytics Platform 4 Industrial Data”, N.
F/190138/0103/X44 and by Italian Ministry of Research (MUR) under PRIN project “exPlaInable
kNowledgeaware PrOcess INTelligence” (PINPOINT), CUP H23C22000280006.
[27] J. Bomanson, T. Janhunen, A. Weinzierl, Enhancing lazy grounding with lazy normalization
in answer-set programming, in: AAAI, AAAI Press, 2019, pp. 2694–2702.
[28] E. Di Rosa, E. Giunchiglia, M. Maratea, A new approach for solving satisfiability problems
with qualitative preferences, in: ECAI, volume 178 of FAIA, IOS Press, 2008, pp. 510–514.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G.</given-names>
            <surname>Brewka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Truszczynski</surname>
          </string-name>
          ,
          <article-title>Answer set programming at a glance</article-title>
          ,
          <source>Commun. ACM</source>
          <volume>54</volume>
          (
          <year>2011</year>
          )
          <fpage>92</fpage>
          -
          <lpage>103</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          ,
          <article-title>Classical negation in logic programs</article-title>
          and disjunctive databases,
          <source>New Gener. Comput</source>
          .
          <volume>9</volume>
          (
          <year>1991</year>
          )
          <fpage>365</fpage>
          -
          <lpage>386</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</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>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          ,
          <article-title>Evaluation techniques and systems for answer set programming: a survey, in: IJCAI, ijcai</article-title>
          .org,
          <year>2018</year>
          , pp.
          <fpage>5450</fpage>
          -
          <lpage>5456</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Erdem</surname>
          </string-name>
          , U. Öztok,
          <article-title>Generating explanations for biomedical queries</article-title>
          ,
          <source>TPLP</source>
          <volume>15</volume>
          (
          <year>2015</year>
          )
          <fpage>35</fpage>
          -
          <lpage>78</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>B.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          , T. Schaub,
          <article-title>Grounding and solving in answer set programming</article-title>
          ,
          <source>AI Mag</source>
          .
          <volume>37</volume>
          (
          <year>2016</year>
          )
          <fpage>25</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ostrowski</surname>
          </string-name>
          , T. Schaub,
          <article-title>ASP modulo CSP: the clingcon system</article-title>
          ,
          <source>TPLP</source>
          <volume>12</volume>
          (
          <year>2012</year>
          )
          <fpage>485</fpage>
          -
          <lpage>503</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Calimeri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>Design and results of the fifth answer set programming competition</article-title>
          ,
          <source>Artif. Intell</source>
          .
          <volume>231</volume>
          (
          <year>2016</year>
          )
          <fpage>151</fpage>
          -
          <lpage>181</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balduccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          ,
          <article-title>Constraint answer set solver EZCSP and why integration schemas matter</article-title>
          ,
          <source>TPLP</source>
          <volume>17</volume>
          (
          <year>2017</year>
          )
          <fpage>462</fpage>
          -
          <lpage>515</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balduccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          ,
          <article-title>Integration schemas for constraint answer set programming: a case study</article-title>
          ,
          <source>TPLP</source>
          <volume>13</volume>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Aziz</surname>
          </string-name>
          , G. Chu,
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Stuckey</surname>
          </string-name>
          ,
          <article-title>Stable model semantics for founded bounds</article-title>
          ,
          <source>TPLP</source>
          <volume>13</volume>
          (
          <year>2013</year>
          )
          <fpage>517</fpage>
          -
          <lpage>532</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B. D.</given-names>
            <surname>Cat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Denecker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bruynooghe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Stuckey</surname>
          </string-name>
          ,
          <article-title>Lazy model expansion: Interleaving grounding with search</article-title>
          ,
          <source>J. Artif. Intell. Res</source>
          .
          <volume>52</volume>
          (
          <year>2015</year>
          )
          <fpage>235</fpage>
          -
          <lpage>286</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>B.</given-names>
            <surname>Susman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          ,
          <article-title>Smt-based constraint answer set solver EZSMT (system description)</article-title>
          ,
          <source>in: ICLP (Technical Communications)</source>
          , volume
          <volume>52</volume>
          <source>of OASICS</source>
          , Schloss Dagstuhl - LeibnizZentrum
          <source>für Informatik</source>
          ,
          <year>2016</year>
          , pp.
          <volume>1</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          :
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Redl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Schüller</surname>
          </string-name>
          ,
          <article-title>Problem solving using the HEX family</article-title>
          , in: Computational Models of Rationality, College Publications,
          <year>2016</year>
          , pp.
          <fpage>150</fpage>
          -
          <lpage>174</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>A. D. Palù</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Dovier</surname>
            , E. Pontelli,
            <given-names>G.</given-names>
          </string-name>
          <article-title>Rossi, GASP: answer set programming with lazy grounding</article-title>
          ,
          <source>Fundam. Informaticae</source>
          <volume>96</volume>
          (
          <year>2009</year>
          )
          <fpage>297</fpage>
          -
          <lpage>322</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C.</given-names>
            <surname>Lefèvre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Nicolas</surname>
          </string-name>
          ,
          <article-title>The first version of a new ASP solver : Asperix</article-title>
          , in: LPNMR, volume
          <volume>5753</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2009</year>
          , pp.
          <fpage>522</fpage>
          -
          <lpage>527</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Weinzierl</surname>
          </string-name>
          ,
          <article-title>Blending lazy-grounding and CDNL search for answer-set solving</article-title>
          ,
          <source>in: LPNMR</source>
          , volume
          <volume>10377</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2017</year>
          , pp.
          <fpage>191</fpage>
          -
          <lpage>204</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Cuteri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Schüller</surname>
          </string-name>
          ,
          <article-title>Partial compilation of ASP programs</article-title>
          ,
          <source>TPLP</source>
          <volume>19</volume>
          (
          <year>2019</year>
          )
          <fpage>857</fpage>
          -
          <lpage>873</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>B.</given-names>
            <surname>Cuteri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Schüller</surname>
          </string-name>
          ,
          <article-title>Overcoming the grounding bottleneck due to constraints in ASP solving: Constraints become propagators</article-title>
          ,
          <source>in: IJCAI, ijcai.org</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>1688</fpage>
          -
          <lpage>1694</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzotta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <article-title>Compilation of aggregates in ASP systems</article-title>
          , in:
          <source>ThirtySixth AAAI Conference on Artificial Intelligence</source>
          ,
          <source>AAAI 2022, Thirty-Fourth Conference on Innovative Applications of Artificial Intelligence, IAAI</source>
          <year>2022</year>
          ,
          <source>The Twelveth Symposium on Educational Advances in Artificial Intelligence, EAAI 2022 Virtual Event, February 22 - March 1</source>
          ,
          <year>2022</year>
          , AAAI Press,
          <year>2022</year>
          , pp.
          <fpage>5834</fpage>
          -
          <lpage>5841</lpage>
          . URL: https://ojs.aaai.org/index.php/ AAAI/article/view/20527.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <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>
          ,
          <article-title>Semantics and complexity of recursive aggregates in answer set programming</article-title>
          ,
          <source>Artif. Intell</source>
          .
          <volume>175</volume>
          (
          <year>2011</year>
          )
          <fpage>278</fpage>
          -
          <lpage>298</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>The sixth answer set programming competition</article-title>
          ,
          <source>J. Artif. Intell. Res</source>
          .
          <volume>60</volume>
          (
          <year>2017</year>
          )
          <fpage>41</fpage>
          -
          <lpage>95</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Alviano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , Advances in WASP, in: LPNMR, volume
          <volume>9345</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2015</year>
          , pp.
          <fpage>40</fpage>
          -
          <lpage>54</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzotta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Cuteri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>Compilation of aggregates in ASP: preliminary results</article-title>
          , in: F.
          <string-name>
            <surname>Calimeri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Perri</surname>
          </string-name>
          , E. Zumpano (Eds.),
          <source>Proceedings of the 35th Italian Conference on Computational Logic - CILC</source>
          <year>2020</year>
          , Rende, Italy,
          <source>October 13-15</source>
          ,
          <year>2020</year>
          , volume
          <volume>2710</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>278</fpage>
          -
          <lpage>296</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2710</volume>
          /paper18.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>K. L. Clark</surname>
          </string-name>
          ,
          <article-title>Negation as failure, in: Logic and Data Bases, Advances in Data Base Theory</article-title>
          , Plemum Press, New York,
          <year>1977</year>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>322</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kaminski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          , M. Ostrowski,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          , P. Wanko,
          <article-title>Theory solving made easy with clingo 5</article-title>
          , in:
          <source>ICLP (Technical Communications)</source>
          , volume
          <volume>52</volume>
          <source>of OASICS, Schloss Dagstuhl - Leibniz-Zentrum für Informatik</source>
          ,
          <year>2016</year>
          , pp.
          <volume>2</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>2</lpage>
          :
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>M.</given-names>
            <surname>Alviano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          ,
          <article-title>Shared aggregate sets in answer set programming</article-title>
          ,
          <source>TPLP</source>
          <volume>18</volume>
          (
          <year>2018</year>
          )
          <fpage>301</fpage>
          -
          <lpage>318</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>