<!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>Enhancing Compilation-based ASP Solving with Postponed Atom Discovery</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Andrea Cuteri</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>Department of Mathematics and Computer Science, University of Calabria</institution>
          ,
          <addr-line>Rende</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <abstract>
        <p>Answer Set Programming (ASP) systems following the Ground&amp;Solve approach are afected by the grounding bottleneck problem, where the grounding phase can cause a combinatorial explosion in program size, making solving unfeasible. Compilation-based ASP solving addresses this by simulating rule inferences through ad hoc propagators, avoiding the grounding phase. However, existing approaches require all propositional atoms to be computed upfront, resulting in overhead as the number of generated atoms grows. In this paper, we investigate how compilation-based technique can be enhanced by deferring the evaluation of rules generating large number of atoms, and so enabling atoms to be discovered lazily during solving. Preliminary results demonstrate significant performance improvements over traditional compilation-based solvers.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Answer Set Programming</kwd>
        <kwd>Grounding Bottleneck</kwd>
        <kwd>Compilation-based ASP Solving</kwd>
        <kwd>Compiled propagators</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Answer Set Programming (ASP) [1, 2] is a well-established declarative paradigm based on the stable
model semantics [2, 3]. Nowadays, ASP has found extensive applications in a variety of fields, including
Planning [4], Scheduling [5, 6, 7], Robotics [8], Natural Language Processing [9, 10, 11, 12], and
Databases [13, 14, 15], among many others [16, 17]. The success of ASP stems from the two main
strengths of such formalism. First, it provides a highly expressive language that enables the concise
modeling of hard combinatorial problems [18]. Second, powerful solvers [19] make it a practical solution
for tackling real-world context [17, 20] as well as industrial applications [21, 22, 23, 24].</p>
      <p>Standard ASP systems, such as clingo [25] and dlv [26], follow the Ground&amp;Solve approach [27].
Basically, the evaluation of a program is performed in two phases: grounding, which instantiates rules
by replacing variables with constants, and solving, where answer sets are computed using CDCL-based
algorithms [28]. While this workflow is efective in many scenarios, it sufers from a major limitation
known as the grounding bottleneck [19]. In several practical cases [29, 30], the grounding phase
causes a combinatorial explosion in the size of the program, making the solving unfeasible. Thus, the
optimization of ASP systems continues to be a pivotal research area, as system performance plays a
critical role in enabling the development of eficient applications [19].</p>
      <p>To overcome this limitation, various techniques have been proposed, including hybrid approaches [31,
25, 30, 32], lazy grounding [33, 34, 35, 36, 37], complexity-aware rewritings [38], and compilation-based
solving [39, 40, 41, 42].</p>
      <p>Compilation-based techniques tackle the grounding bottleneck by translating non-ground rules
into specialized procedures, known as propagators, which simulate rules’ inferences during solving
without materializing the corresponding ground rules. Empirical evidence showed that these techniques
efectively tackled the grounding bottleneck problem by solving instances that were out-of-reach for
state-of-the-art systems [41, 42, 43]. However, compilation-based systems require propositional atoms,
needed to compute an answer set, to be generated ahead of solving. As it has been pointed out by Dodaro
et al. (2023) when the number of atoms grows large, this upfront computation leads to considerable
overhead.</p>
      <p>In this paper, we describe by examples a possible strategy to overcome this limitation and apply it to
a few use cases. The idea is to discover some of the atoms incrementally during solving. These atoms
are created dynamically, only when needed for truth assignment, instead of being precomputed, thus
eliminating the overhead of the upfront atom computation. In particular, we propose an
implementation of such technique on top of the compilation-based ASP system proasp [42, 43] and preliminary
experiments aimed at assessing the impact of the proposed technique. Obtained results show that lazy
atom discovery significantly reduces both memory usage and runtime, ofering a scalable and eficient
alternative to traditional compilation-based solving.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <p>In this section we provide an overview of the ASP language, focusing on the concepts relevant for
understanding the contribution of this paper. A more comprehensive description can be found in the
existing literature. [1, 44, 45].</p>
      <p>ASP Syntax. A term can either be a variable or a constant. A variable is a string starting with upper case
letter, while a constant is a number or a string starting with lowercase letter. An atom is an expression
of the form (1, . . . , ) where  is a predicate of arity  ≥ 0 and 1, . . . ,  are terms. A literal is either
an atom  or its negation ∼ , where ∼ represents negation as failure. Given a literal  =  (resp. ∼ ), 
denotes the complement of l that is ∼  (resp. ); while () denotes the set of terms appearing in
literal . A literal  is ground if it does not contain any variable. A positive literal is of the form , where 
is an atom, while ∼  is a negative literal. For a set of literals , + (resp. − ) denotes the set of positive
(resp. negative) literals appearing in . A rule is an expression of the form ℎ ←  1, . . . ,  where ℎ is
an atom referred to as head that can be also omitted, and 1, . . . , , with  &gt; 0, is a conjunction of
literals referred to as . Given a rule , () is the set of literals appearing in the body of  while
() is the set of atoms appearing in the head of . A rule  is a constraint if () = ∅; or it is a fact
if () = ∅. Moreover,  is safe if each variable appearing in  appears also in ()+. A program Π
is a set of safe rules. Given an ASP expression  (a program, a rule etc.), () and () denotes
respectively the set of predicates and variables appearing in  . Given a rule , ℎ() ⊆ () is the
set of predicates appearing in (). This notation extends also to programs, and so ℎ(Π) is the set
of predicates appearing in the head of some rules in Π. Given a program Π, the Herbrand Universe Π
is the set of constants occurring in Π, while the Herbrand base Π is the set of ground atoms that can
be obtained from predicates of Π and constants in Π. The dependency graph of program Π is a labeled
graph Π = ⟨, ⟩, where  is the set of predicates appearing in Π and  contains a positive (resp.
negative) edge from  to  if there exists a rule  ∈ Π such that  appears in ()+ (resp.  appears
in ()− ) and  ∈ ℎ(). Program Π is said to be stratified if there exist no loop in Π involving
negative edges; tight if Π does not contain positive loops [46]. We focus on tight ASP programs,
as this class is suficiently expressive for our purposes while remaining amenable to modeling many
complex problems [29], and corresponds to the class supported by proasp [42, 43].
Stable Model Semantics. Given a program Π, an interpretation  is a set of literals over atoms in Π. A
literal  is true w.r.t.  (i.e.,  |= ) if  ∈ ; false (i.e.  ̸|= ) if  ∈ ; undefined otherwise. A conjunction
of literals  is true w.r.t.  (i.e.,  |= ) if  |=  for each  in ; false (i.e.  ̸|= ) if
there exists  in  such that  ̸|= ; undefined otherwise. An interpretation  is total if for each
atom  ∈ Π,  ∈  or ∼  ∈ . An interpretation  is consistent if it does not exist  ∈  such that
 ∈ . An atom  ∈ Π is supported in Π w.r.t.  if there exists  ∈ (Π) such that () = 
and  |= (). Given a rule  ∈ (Π), then  is satisfied w.r.t.  if  |= () or  ̸|= (). A
total and consistent interpretation  is a model of Π if all rules in (Π) are satisfied. Let  be a
model of Π, then  is a supported model if each positive literal in  is supported in Π w.r.t. . Moreover,
 is a stable model (or an answer set) of Π if  is a ⊂ -minimal model of its Gelfond-Lifschitz reduct [2].
For a program Π, (Π) denotes the set of answer set of Π. For the class of programs considered in
this paper (i.e., tight programs) supported models coincide with answer sets.</p>
    </sec>
    <sec id="sec-3">
      <title>3. The ProASP system</title>
      <p>Standard ASP systems [26, 25] compute stable models of a program Π in two stages. First, a grounder
module computes (Π), and then a solver module computes answer sets of Π by implementing
an extension of the CDCL (Conflict Driven Clause Learning) with propagators specific for ASP [ 27].
Such an approach is afected by a limitation known as grounding bottleneck. In many cases of practical
interest (Π) contains a large number of rules and atoms that cannot be stored in memory, thus
preventing the solving stage from even beginning. Compilation-based ASP solvers tackle such an issue
by compiling a logic program into an ad-hoc solver, made of rule-specific propagators, that simulate
inferences deriving from (Π) without explicitly materializing ground rules. In what follows we
recall how the compilation-based ASP solver proasp works and we discuss possible limitations of this
approach.</p>
      <sec id="sec-3-1">
        <title>3.1. Compilation of ASP prorgams in proasp</title>
        <p>proasp is a compilation-based ASP solver which supports the class of tight ASP programs. The main
idea behind the proasp approach is the following: “Given an ASP program Π, we build an ad-hoc solver
for evaluating Π. Then, for each set of facts  the ad-hoc solver searches for an answer set of Π ∪  .”
Consider the following program Π:
1 : () ← (),  ()
2 : () ← (),  ()
3 : ← (), ( ),  &lt; .</p>
        <p>If we consider rules 1 and 2, and a possible constant , then the following propagations may derive
from them:
• () is true if and only if () is true and () is false.</p>
        <p>• () is true if and only if () is true and () is false.</p>
        <p>These propagations guarantee that rules 1 and 2 are satisfied and atoms over predicates  and  are
supported w.r.t. Π. On the other hand, if we consider the constraint 3 the following propagation may
derive from it:
• if there exists  such that () is true then for each value  &gt; , () must be false;
• if there exists  such that () is true then for each value  &lt; , () must be false.
Such propagations guarantee that the constraint 3 is satisfied.</p>
        <p>Based on these inferences we can design a rule-specific propagator for each  ∈ Π. For space reasons
we report only a possible propagator for 1 (Algorithm 1) and 3 (Algorithm 2), since the propagator for
2 is equal to (Algorithm 1) modulo predicate renaming.</p>
        <p>
          Given the set of facts  = {(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          )}, if we want to compute an answer set of Π ∪  we need
to generate the set of relevant atoms that is needed to compute such an answer set (i.e. a subset of
the Herbrand Base), which is {(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          )}. By giving as input generated atoms to an
implementation of CDCL (i.e., a SAT solver) equipped with rule-specific propagators we can compute
an answer set of Π ∪  as follows.
        </p>
        <p>Classical CDCL implementations follow the choose-propagate-learn pattern starting from an empty
interpretation . At each step, a literal  is heuristically chosen and added to . Then  is propagated
for deriving further literals from rules in Π. In our setting propagation is demanded to rule-specific
propagators (Algorithms 1 and 2) which infer new literals to be added to . During propagation, if
the interpretation  becomes inconsistent, then the learn phase is started for analyzing conflicting
literals (i.e.,  ∈  and  ∈ ) to restore consistency of . If consistency can be restored, then the process
Algorithm 1 Propagator for () ← (),  ().</p>
        <p>Input : An interpretation , and a literal  ∈ 
1 begin
2 if () = “a”:
3  := [0]
4 if  ∈ +:
5 propagate {(), ∼ ()}
6 else:
7 if () ∈ +:
8 propagate {()}
9 else if ∼ () ∈ − :
10 propagate {∼ ()}
Algorithm 2 Propagator for ← (), ( ),  &lt; .</p>
        <p>Input : An interpretation , and a literal  ∈ 
1 begin
2 if () = “a” and  ∈ +:
3  := [0]
4 for all  ∈ Π s.t.  &gt; :
5 propagate ∼ ()
6  := [0]
7 for all  ∈ Π s.t.  &lt; :
8 propagate ∼ ()
back-jumps to the choices that led to the conflict and continues the search. On the other hand, if
consistency cannot be restored, then the algorithm stops since program Π has no models. Finally, as
soon as  is total and consistent then  is an answer set of Π ∪  .</p>
        <p>The compilation-based ASP solver proasp generalizes the example discussed so far, allowing the
compilation of tight ASP programs into ad-hoc solvers [43].</p>
        <p>Given a (non-ground) program Π, at compilation stage proasp extracts two subprograms, namely a
propagator and generator program from Π. The propagator program is obtained by normalizing rules
of Π in specific rule forms which allow to have a uniform compilation approach while preserving
inferences of the original program. Conversely, the generator program is made of rules defining the
domain of each predicate appearing in the propagator program and so it will be used to generate the
subset of relevant atoms needed for computing answer sets of Π. Propagator and generator programs
are compiled, respectively, into two modules, namely Propagator and Generator module. The resulting
solver, namely Π-solver, is obtained by integrating Propagator and Generator modules together with
the SAT Solver Glucose.</p>
        <p>As reported in Figure 1, at the solving stage, the Π-solver takes as input a program instance  (i.e., a
set of facts) and starts by generating ground atoms appearing in the propagator program, by means of
the Generator module. Generated atoms are fed into the Glucose SAT solver which starts the CDCL
from an empty interpretation . During the CDCL, as soon as a literal is added to , the SAT solver
notifies the Propagator which computes new inferences (if any). By proceeding in this way, the SAT
solver stops if  becomes total, and so  is an answer set, or consistency cannot be restored and so
Π ∪  does not have any answer set.</p>
        <p>Empirical evaluations [41, 42, 43] show that compiled solvers allow to efectively tackle the grounding
bottleneck problem by allowing to solve instances that were out-of-reach for standard systems while
remaining competitive on problems that do not present grounding issues. However, as it has been
pointed out by Dodaro et al. (2023), compiled solvers sufer whenever the number of (auxiliary) atoms
obtained in the generation phase increases. In these cases, compiled solvers require a lot of computational
resources, even more than standard ones.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Lazy atom generation in proasp</title>
      <p>To reduce the number of atoms that are generated upfront by proasp, we propose a novel
compilationbased technique that postpones the evaluation of problematic rules (i.e., rules generating a large number
of atoms) to the solving phase. To present our approach we first introduce the notion of lazy program
split which identifies the syntactic restrictions under which rules can be compiled with lazy atom
generation.</p>
      <p>Definition 1 (Lazy Program Split). Let Π be a program and  ⊆ Π . Then  is a lazy program split
for Π if  is stratified and ℎ() ∩ ℎ(Π ∖ ) = ∅.</p>
      <p>Intuitively, a lazy program split is a stratified subprogram  ⊆ Π such that predicates in the head of
some rule in  do not appear in the head of any rule of Π ∖ . Stratification is required to ensure that
only deterministic inferences can be derived from . The second condition instead allows to separate
the evaluation of  from the standard proasp pipeline.</p>
      <p>To evaluate a program Π, state-of-the-art ASP solvers transform rules in (Π) by applying
the well-known Clark’s completion [47]. By means of this transformation, solvers are able to compute
supported models by leveraging unit propagation of program clauses. However, this transformation may
generate a large number of clauses and requires ground rules to be materialized, which is detrimental
when the program is grounding intensive. To avoid such transformation for rules in a lazy program
split , it is possible to leverage the Fitting operator [48]. Such an operator guarantees that rules in
() are satisfied and that each positive literal in an answer set is supported.
Definition 2 (Fitting 1985).
is defined as:</p>
      <p>Given a program Π and a (partial) interpretation I, the Fitting operator ΦΠ
• ΦΠ() = Π() ∪  Π()
• Π() = {() |  ∈ (Π) ∧  |= ()}
•  Π() = { ∈ Π | ∀ ∈ (Π) .. () = ,  ̸|= ()}.</p>
      <p>Intuitively, given an interpretation , the operator Π() derives the head of each rule in (Π)
having a true body w.r.t. . In this way rules in Π are satisfied and atoms in Π() are supported in Π
w.r.t. . On the other hand,  Π() derives all those atoms that cannot be supported in Π w.r.t. . Thus,
such atoms cannot be true in an answer set of Π that extends .</p>
      <p>Based on the aforementioned properties of the Fitting operator, a lazy program split  of a program Π
can be compiled into ad-hoc propagators, namely Consequence and Support propagators, which mimic,
respectively, the application of  and   on rules in .</p>
      <p>More in detail, the Consequence operator is implemented via a bottom-up evaluation that builds
instantiations of rules in  that have a true body w.r.t. a (partial) interpretation  and infers the head of
such rules. Conversely, the Support operator is implemented via a top-down evaluation that, given an
atom  searches for an instantiation of a rule in  that () has  in the head; and () whose body is not
false w.r.t. .</p>
      <sec id="sec-4-1">
        <title>4.1. Lazy atom discovery in ProASP</title>
        <p>Here we discuss in a more detailed way, how we implemented our techniques on top of the proasp
system. To enable lazy atom discovery during solving we extended both the compilation and solving
pipelines that are reported in Figures 2 and 3.</p>
        <p>Extended Compilation. Let Π be a program and  be a lazy program split of Π. Our objective is to
compile  into ad-hoc propagators that simulate the application of the Fitting operator on rules in .
Whereas, the program Π ∖  follows the aforementioned proasp compilation pipeline.</p>
        <p>According to the definition of lazy program split, we know that predicates in ℎ() do not appear
in the head of any rule of Π ∖ . However, it is important to point out that predicates in ℎ() may
appear in the body of some rules in Π ∖ . In this case, proasp propagators require knowledge of the
existence of such atoms, and thus, it is required that proasp’s Generator module generates those atoms
over predicates in ℎ() appearing in the body of rules of Π ∖ , referred to as interface atoms. To
this end, we introduce a rewriting technique which produces the rules needed for generating interface
atoms.</p>
        <p>Definition 3 (Interface Program). Given a program Π and a lazy program split  of Π, then
 (Π, ) contains, for each  ∈ Π ∖ , the following rules:
 ←   ()
 ←   ()
∀ ∈  ()+
∀ ∈  ()−
where  () denotes the conjunction of literals  ∈ () such that () ∈ ℎ() and  () denotes
the conjunction of literals  ∈ () such that () ∈ ℎ(Π ∖ ).
Example 4.1. Let Π be the following program:</p>
        <p>() ← (), ∼ ()
() ← (), ∼ ()</p>
        <p>() ← (), ∼ ()
() ← (), ∼ ()
(,  ) ← (), ( )</p>
        <p>← (1,  ), ( )
Let  = {(,  ) ← (), ( )} then  is a lazy program split for Π, since it is stratified and  does
not appear in the head of any rule of Π ∖ . In this case the interface program  (Π, ) contains
only the rule (1,  ) ← ( ), which is obtained from the constraint ← (1,  ), ( ).</p>
        <p>However, there could be cases in which rules of the interface program are unsafe. If in program Π
from Example 4.1 we add the rule ← (,  ), ( ) to Π, then  (Π, ) contains also the rule
(,  ) ← ( ) which is unsafe since variable  appears only in the head of the rule. To avoid these
cases, we restrict our approach to programs that satisfy a stronger notion of safety, namely lazy safety.
Definition 4 (Lazy Safety). Given a program Π and a split , Π is lazy safe if for each rule  ∈ Π
( ()) ⊆ (  ()+), where  () denotes the conjunction of literals  ∈ () such that
() ∈ ℎ() and  () denotes the conjunction of literals  such that () ∈ ℎ(Π ∖ ).
Intuitively, lazy safety requires that atoms over predicate in ℎ() are bounded by variables
appearing in positive literals not in ℎ(Π ∖ ). If a program is lazy safe then the interface program,
 (Π, ) only contains safe rules. Note that, this restriction does not introduce any loss of
generality since it is possible to use an auxiliary predicate that gives bound to unsafe variables by
considering all possible constants in the Herbrand universe. However, this is not ideal since the
Generator will produce more atoms than the ones produced by standard grounders such as gringo [49] and
i-dlv [50] that perform an intelligent bottom-up grounding.</p>
        <p>We are now ready to discuss the extended proasp’s compilation pipeline reported in Figure 2.</p>
        <p>Given a program Π, and a lazy program split , the Rewriter module rewrites all the rules in Π ∖ 
by following the standard proasp methodology [43]. Thus, it produces as output the generator and the
propagator program, while rules in  remain in their original form.</p>
        <p>At this point, the generator program obtained by proasp does not contain any rule defining interface
atoms, and this is an issue since such atoms, as it has been previously pointed out, may appear in the
body of some rule in Π ∖ . In this case the proasp solver may erroneously consider interface atoms as
false whereas they could be discovered lazily during solving.</p>
        <p>To this end, the Split Rewriter computes  (Π, ) which will be used to generate ad-hoc
generator procedures, nested into the Generator module, that are able to produce the interface atoms.</p>
        <p>At this point, each  ∈  is ready to be compiled into ad-hoc post-propagators which simulate the
application of both  and   operators on the rule . In the following section we report an example
of compiled propagators which will clarify how compiled post-propagators work. As a result of the
compilation of , we obtain two modules, namely Consequence and Support which will be integrated in
the compiled solver for postponing the evaluation of the lazy program split .</p>
        <p>Extended Solving. The architecture of the resulting proasp solver is depicted in Figure 3. At the
solving stage, the compiled solver takes as input a program instance  , that is a set of facts, and the
generator module produces the subset of relevant atoms that appear in the propagator program. Among
atoms generated by the generator module, we need to distinguish between those over predicates in
ℎ(Π ∖ ) and those over predicates in ℎ() (i.e., the interface atoms). Atoms whose predicate is
in ℎ(Π ∖ ) are entirely handled by the SAT solver and the propagator module. Conversely, the
truth value of atoms whose predicate is in ℎ() must be determined through the Consequence and
Support modules. Among possible atoms over predicates in ℎ(), only the interface atoms have
been generated while the remaining one are unknown to the solver. Since interface atoms are indeed
solver’s decision variables then the solver can decide their truth value; while unknown ones can only
be discovered by post-propagators during solving. To guarantee that solver choices are consistent with
rules in , at each post-propagator call, the SAT solver uses the Consequence module for deriving both
interface and unknown atoms as true. In particular, interface atoms will be assigned into the SAT solver,
while unknown atoms are lazily discovered and added to the current interpretation. Unknown atoms
that are never derived by the Consequence module can be inferred as false. Note that, in this setting, false
atoms can only be derived after that all solver’s decision variables have been assigned to a truth value.
Even though this approach guarantees correctness, it is not applicable in practice, since lazy program
splits may contain negation and so we may propagate atoms too late during solving. To anticipate
such propagations, when some unknown atoms are encountered during bottom-up evaluation of the
Consequence module, the Support module is leveraged to infer false unknown atoms. On the other hand,
to infer false interface atoms the SAT solver calls Support module at each post-propagator call. As soon
as atoms derived either from Consequence or Support module were already assigned by the solver to a
diferent truth value (i.e., we obtained an inconsistent interpretation), a conflict is generated. Such a
conflict is handled by the SAT solver which resolves it, if possible, by analyzing the literals that derived
conflictual literals (i.e., reasons of the propagations). If the conflict can be resolved then the solving
restarts up to a total and consistent interpretation is constructed (i.e., an answer set is found) or the
incoherence of the program is proved.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. An example of compilation</title>
        <p>In this section we provide an example of compilation of lazy program split into post-propagators. Recall
that post-propagators are lower priority propagators that are used in ASP systems to perform additional
checks required by stable model semantics [51]. Consider the following program Π:
() ← (), ∼ ().
() ← (), ∼ ().</p>
        <p>() ← (), ∼ ().</p>
        <p>() ← (), ∼ ().
(,  ) ← (), ( ).</p>
        <p>← (, 1), ().</p>
        <p>In this case, the rule (,  ) ← (), ( ) is itself the lazy program split. Thus, we consider
 = {(,  ) ← (), ( )} as the subprogram whose evaluation should be postponed and Π ∖ 
as the subprogram, made of remaining rules of Π, that follows the standard proasp approach. We
now describe how the compiled solver is obtained. As first step of the compilation stage, the compiler
takes as input the program Π where rules in  are labeled as lazy program split. The rewriting
process transforms program Π ∖  into the corresponding Generator and Propagator programs. Note
that the generator program is augmented with generation rules in  (Π, ). In this case, the
predicate  appears only in the constraint ← (, 1), () and so the only rule in  (Π, ) is
(, 1) ← () . At this point, we are ready to compile generator and propagator programs, as well as
the lazy program split . The former are compiled into Generator and Propagator modules while the
latter is compiled into Consequence and Support modules. More precisely, since  only contains the rule
(,  ) ← (), ( ) then the Consequence module only contains the compiled procedure reported
in Algorithm 3. Analogously, the Support module only contains the compiled procedure reported in
Algorithm 4. At this point, the compiled solver is obtained by integrating together compiled modules
and the Glucose SAT solver.</p>
        <p>
          We are now ready to describe how a program instance  is solved by the compiled solver. Let
 = {(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )}, the Generator module takes  as input and generates the subset of relevant
Algorithm 4 Compiled Support for (,  ) ← (), ( ).
        </p>
        <p>
          Input : An atom , an interpretation , a set of literal 
1 begin
2 if pred() = “b”
3  := [0]
4  := [1]
5 if ∼ () ∈/ 
6 if ∼ () ∈/ 
7 return ⊥
8 else  :=  ∪ {()}
9 else  :=  ∪ {()}
10 return ⊤
atoms needed to compute an answer set of Π ∪  , that are:
⎧ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
⎪⎪⎪⎪ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
 = ⎨ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
⎪⎪⎪ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
⎪⎩ (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          )
        </p>
        <p>Note that only a part of the domain of predicate  is generated. More precisely, only the relevant part
that appears in the constraint ← (, 1), ().</p>
        <p>Generated atoms in  become decision variables of the SAT solver, which starts the CDCL to build
an answer set of Π ∪  starting from an empty interpretation .</p>
        <p>
          As first step, the SAT solver adds  to  and then makes the first heuristic choice. Let us suppose that
the SAT solver chooses (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) and adds it to . At this point the Propagator module computes inferences
coming from Π ∖ . More precisely, (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is derived as false, from rule () ← (), ∼ (), and so
∼ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is added to . Since there are no further derivations from rules in Π ∖  then the SAT solver calls
the post-propagator and in particular Consequence and Support modules. The Consequence module takes
as input  and evaluates the rule  : (,  ) ← (), ( ) . Since (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is true, then the Consequence
module is able to find an instantiation of  having a true body w.r.t. , that is (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          ) ← (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) . Thus,
(
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          ) is inferred as true. On the other hand, the Support module searches for a supporting rule for atoms
(
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ). By proceeding in a top-down fashion (i.e., substituting first (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ) and then (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          )
to the head of ), the Support module builds the instantiations of  of the form (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ) ← (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) , and
(
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) ← (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ), (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) that have an undefined body w.r.t. . Thus, the Support module does not derive
any of (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) since they can still be supported w.r.t. . Therefore, the post-propagator infers
only (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          ) that matches Φ() = {(
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          )}. At this point, the SAT solver propagates the inferences of
the post-propagator that cause further inferences from the constraint ← (, 1), () and the rule
() ← (), ∼ (). In particular, (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is inferred as false and (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is inferred as true. As a result,
∼ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) are added to . Since no further inferences are computed by the Propagator module and
the post-propagator one, then the SAT solver makes a new choice. Let (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) be that choice, then (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) is
added to . As in the previous case, the Propagator module infers ∼ (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) from rules in Π∖ and then the
SAT solver invokes the post-propagator. Similarly to the previous call, the Consequence module derives
(
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
          ), (
          <xref ref-type="bibr" rid="ref2 ref2">2, 2</xref>
          ); whereas the Support module checks whether (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) can be supported. Since (
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
is undefined w.r.t.  and (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) is true, then (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) can still be supported. In this case, we can observe that
(
          <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
          ) and (
          <xref ref-type="bibr" rid="ref2 ref2">2, 2</xref>
          ) are lazily discovered atoms since they were not generated upfront but they must be
true in  in order to let it become an answer set. On the other hand, (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ) is known to the SAT solver
and so it is propagated causing further inferences from rules in Π ∖ . In particular, from constraint
← (, 1), () and rule () ← (), ∼ (), ∼ (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) are added to . At this point, the
SAT solver makes another choice, for example ∼ (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ). As a consequence, the propagator module derives
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) as true and so (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) is added to . Afterwards, the SAT solver calls the post-propagator. Here,
the Consequence module does not infer further atoms; while the Support module is not able to find a
supporting rule for (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) and so ∼ (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) is inferred. The inference of ∼ (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ) does not cause any
derivations and so the SAT solver makes the last choice. Assume that (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) is chosen as true, then the
Propagator module infers ∼ (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) and the SAT solver stops since all decision variables are assigned.
Finally, (
          <xref ref-type="bibr" rid="ref1 ref3">1, 3</xref>
          ), (
          <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
          ), (
          <xref ref-type="bibr" rid="ref2 ref3">3, 2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3 ref3">3, 3</xref>
          ) that are never discovered by the Consequence module are inferred
as false and the compiled solver returns the following answer set of Π ∪  :
 =
⎧ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ),
⎪⎪⎪ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ),
⎪
⎪
⎪⎪⎪⎪ ∼ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ),
⎪⎨ ∼ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ),
⎪ (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ),
⎪⎪⎪ (
          <xref ref-type="bibr" rid="ref1 ref1">1, 1</xref>
          ), (
          <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref1 ref3">3, 1</xref>
          ),
⎪
⎪
⎪⎪ (
          <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
          ), (
          <xref ref-type="bibr" rid="ref2 ref2">2, 2</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref2 ref3">3, 2</xref>
          ),
⎪
⎪
⎩ ∼ (
          <xref ref-type="bibr" rid="ref1 ref3">1, 3</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
          ), ∼ (
          <xref ref-type="bibr" rid="ref3 ref3">3, 3</xref>
          )
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Preliminary Experiments</title>
      <p>For measuring the impact of lazy atom discovery on proasp performance, we conducted an empirical
evaluation over synthetic benchmarks that were considered by Dodaro et al. (2023) for highlighting
strengths and weaknesses of the compiled solver.</p>
      <p>The first benchmark we considered is Synth1 on which compilation-based solvers showed significant
overhead. More precisely, the compiled program in this benchmark is the following:
1 : 1(, , ,  ) : −(), ( ), (), ( ),   1(, , ,  )
2 : 1(, , ,  ) : −(), ( ), (), ( ),   1(, , ,  )
3 : 2(, , ,  ) : −(), ( ), (), ( ),   2(, , ,  )
4 : 2(, , ,  ) : −(), ( ), (), ( ),   2(, , ,  )
5 : (, , ) : − 1(, _, _,  ), 2(, _, _, )
6 : (, , ) : − 1(, _, _,  ), 2(, _, _, )
7 : : −( 1, , ), (, , 2)
Synth1 is made of two four-arity predicates guesses, two rules that compute a join over the guessed
predicates and one constraint for trashing a portion of the guessed models. For this benchmark we
consider a lazy program split that contains rules 5, 6 and 7. By compiling such a split with our
technique into post-propagators, we are able to lazily generate atoms for predicates  and . The
corresponding version of proasp without lazy atom discovery is forced to generate all  and  atoms
plus the auxiliary atoms produced by the proasp rewriting described in [42].</p>
      <p>Conversely, the second benchmark we considered is Synth2 on which compilation resulted to be very
efective. The program considered in Synth2 benchmark is the following:
1 : 1(,  ) : −(), ( ),   1(,  )
2 : 1(,  ) : −(), ( ),   1(,  )
. . .
11 : 6(,  ) : −(), ( ),   6(,  )
12 : 6(,  ) : −(), ( ),   6(,  )
13 : (1, . . . , 7) : − 1(1, 2), 2(2, 3), . . . , 6(6, 7)
14 : (1, . . . , 7) : − 1(1, 2), 2(2, 3), . . . , 6(6, 7)
15 : : −(_, _, _, , , , ), (, , , , _, _, _)
As it can be observed, it has a structure that is similar to Synth1, except that this time there is a guess
over six two-arity predicates. Also for this benchmark we consider a split which consists of the two
rules that define a join over the result of the guessed predicated (namely 13 and 14) and the constraint
clingo
wasp
proasp
proasp-postP</p>
      <p>2 4 6</p>
      <p>Number of solved instances
(b) Synth1: Execution Time
600
clingo
wasp
proasp
proasp-postP
8
8
)
B
G
(
m
e
M
n
o
i
t
u
c
e
x
E
)
B
G
(
m
e
M
n
o
i
t
u
c
e
x
E
clingo
wasp
proasp
proasp-postP</p>
      <p>2 4 6</p>
      <p>Number of solved instances
(a) Synth1: Memory Usage
12
clingo
wasp
proasp
proasp-postP
8
8
2 4 6
Number of solved instances
2 4 6
Number of solved instances
(c) Synth2: Memory Usage
(d) Synth2: Execution Time
that trashes part of the guessed models. Just like the previous benchmark, the version of proasp with
post-propagators able to lazily generate atoms of predicates  and . All the experiments were run on an
Intel(R) Xeon(R) CPU E5-4610 v2 @ 2.30GHz running Debian Linux (3.16.0-4-amd64), with memory and
CPU time (i.e. user+system) limited to 12GB and 1200 seconds, respectively. Each system was limited to
run on a single core.</p>
      <p>Obtained results showed that our technique is capable of improving proasp performance. In particular,
the introduction of lazy atom discovery in the synth2 benchmark allowed to improve already good
results obtained by proasp by allowing lazy generation of atoms for predicates  and . Concerning
Synth1 instead, we can see that the version of proasp with lazy atom discovery was capable not only
to improve proasp performance, but to make the system achieve better results w.r.t. Ground &amp; Solve
systems that were winners for the benchmark. This is due to two reasons: the first is that atoms for
predicates  and  were lazily generated, and the second is that the compilation of rules defining  and
 into post-propagator allowed to avoid the proasp rewriting that introduces auxiliary atoms.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Related work</title>
      <p>Tackling the grounding bottleneck in ASP evaluation is a crucial problem which inspired a significant
body of literature. Existing proposals tackled the grounding problem in diferent ways and each one
present its strengths and limitations. Hybrid formalisms, such as Constraints Answer Set Programming
(CASP) [52, 31, 53, 30, 32], ASP Modulo Theories [25], and HEX programs [54], integrate ASP systems
with external sources of computation in order to shift the problem out of the ASP systems realm.
Conversely, Lazy grounding systems [33, 34, 35, 36, 37], materialize ground rules only when their body
is satisfied during solving. Albeit promising, these systems follow a novel solving strategy that still does
not match the performance of state-of-the-art systems [55]. The techniques presented in this paper,
instead, keeps the well-matured CDCL approach at solving stage but shifts the evaluation of program
splits without materializing ground rules.</p>
      <p>Complexity-driven program rewritings [38, 56] tackle the grounding bottleneck by translating
programs into diferent formalisms, such as propositional epistemic logic programs, or into disjunctive
programs. Such translation can be exponential in the worst case but the obtained programs feature
smaller ground instantiations.</p>
      <p>Compilation-based approaches [39, 40, 41, 42], are at the core of the technique presented in this paper.
These approaches mitigate the grounding bottleneck by translating non-ground rules into specialized
procedures that simulate inferences avoiding (entirely) the grounding phase [41, 42, 43]. As it has
already been discussed in previous sections, these techniques present some overhead when the number
of generated atoms increases, but by enabling lazy atom discovery, it is possible to reduce such overhead.</p>
    </sec>
    <sec id="sec-7">
      <title>7. Conclusions</title>
      <p>ASP systems based on the Ground &amp; Solve approach are afected by the Grounding Bottleneck. In the
last years, proposed compilation-based ASP solvers were able to efectively address this issue. However,
existing compilation-based systems still require the upfront materialization of ground atoms, which
can be detrimental in certain cases, as noted by [42]. In this work, we describe how to extend the
compilation-based technique to avoid the generation of all atoms in advance. We implemented this idea
on top of proasp. Achieved results showed substantial performance gains. As future work, we plan to
extend our technique and experiments, and also to study how to support recursive programs that at the
moment cannot be handled by proasp.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgments</title>
      <p>This work was supported by the Italian Ministry of Industrial Development (MISE) under project
EITWIN n. F/310168/05/X56 CUP B29J24000680005; and by the Italian Ministry of Research (MUR) under
projects: PNRR FAIR - Spoke 9 - WP 9.1 CUP H23C22000860006, and Tech4You CUP H23C22000370006.</p>
    </sec>
    <sec id="sec-9">
      <title>Declaration on Generative AI</title>
      <p>The author(s) have not employed any Generative AI tools.
[55] A. Weinzierl, R. Taupe, G. Friedrich, Advancing lazy-grounding ASP solving techniques - restarts,
phase saving, heuristics, and more, Theory Pract. Log. Program. 20 (2020) 609–624.
[56] A. Beiser, M. Hecher, K. Unalan, S. Woltran, Bypassing the ASP bottleneck: Hybrid grounding by
splitting and rewriting, in: IJCAI, ijcai.org, 2024, pp. 3250–3258.</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>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="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Son</surname>
          </string-name>
          , E. Pontelli,
          <string-name>
            <given-names>M.</given-names>
            <surname>Balduccini</surname>
          </string-name>
          , T. Schaub,
          <article-title>Answer set planning: A survey, Theory Pract</article-title>
          . Log. Program.
          <volume>23</volume>
          (
          <year>2023</year>
          )
          <fpage>226</fpage>
          -
          <lpage>298</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          , G. Galatà,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Porro</surname>
          </string-name>
          ,
          <article-title>Operating room scheduling via answer set programming</article-title>
          ,
          <source>in: AI*IA</source>
          , volume
          <volume>11298</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2018</year>
          , pp.
          <fpage>445</fpage>
          -
          <lpage>459</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Cardellini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. D.</given-names>
            <surname>Nardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Galatà</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Giardini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Porro, A two-phase ASP encoding for solving rehabilitation scheduling</article-title>
          , in: RuleML+RR, volume
          <volume>12851</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2021</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>125</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Grasso</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Iiritano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Scalise</surname>
          </string-name>
          ,
          <article-title>An asp-based system for team-building in the gioia-tauro seaport</article-title>
          ,
          <source>in: PADL</source>
          , volume
          <volume>5937</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2010</year>
          , pp.
          <fpage>40</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E.</given-names>
            <surname>Erdem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Patoglu</surname>
          </string-name>
          ,
          <article-title>Applications of ASP in robotics</article-title>
          ,
          <source>Künstliche Intell</source>
          .
          <volume>32</volume>
          (
          <year>2018</year>
          )
          <fpage>143</fpage>
          -
          <lpage>149</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Cuteri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Reale</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>A logic-based question answering system for cultural heritage</article-title>
          , volume
          <volume>11468</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2019</year>
          , pp.
          <fpage>526</fpage>
          -
          <lpage>541</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mitra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Tafjord</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Baral</surname>
          </string-name>
          ,
          <article-title>Declarative question answering over knowledge bases containing natural language text with answer set programming</article-title>
          , AAAI Press,
          <year>2019</year>
          , pp.
          <fpage>3003</fpage>
          -
          <lpage>3010</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Schüller</surname>
          </string-name>
          ,
          <article-title>Modeling variations of first-order horn abduction in answer set programming</article-title>
          ,
          <source>Fundam. Informaticae</source>
          <volume>149</volume>
          (
          <year>2016</year>
          )
          <fpage>159</fpage>
          -
          <lpage>207</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ishay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <article-title>Coupling large language models with logic programming for robust and general reasoning from text</article-title>
          ,
          <source>Association for Computational Linguistics</source>
          ,
          <year>2023</year>
          , pp.
          <fpage>5186</fpage>
          -
          <lpage>5219</lpage>
          .
        </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>M.</given-names>
            <surname>Fink</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Greco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lembo</surname>
          </string-name>
          ,
          <article-title>Repair localization for query answering from inconsistent databases</article-title>
          ,
          <source>ACM Trans. Database Syst</source>
          .
          <volume>33</volume>
          (
          <year>2008</year>
          )
          <volume>10</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          :
          <fpage>51</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M.</given-names>
            <surname>Arenas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. E.</given-names>
            <surname>Bertossi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Chomicki</surname>
          </string-name>
          ,
          <article-title>Consistent query answers in inconsistent databases</article-title>
          , ACM Press,
          <year>1999</year>
          , pp.
          <fpage>68</fpage>
          -
          <lpage>79</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Manna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , G. Terracina,
          <article-title>Taming primary key violations to query large inconsistent data via ASP, Theory Pract</article-title>
          . Log. Program.
          <volume>15</volume>
          (
          <year>2015</year>
          )
          <fpage>696</fpage>
          -
          <lpage>710</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>G.</given-names>
            <surname>Amendola</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>
          ,
          <article-title>On the application of answer set programming to the conference paper assignment problem</article-title>
          , in: G. Adorni,
          <string-name>
            <given-names>S.</given-names>
            <surname>Cagnoni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gori</surname>
          </string-name>
          , M. Maratea (Eds.),
          <source>AI*IA 2016: Advances in Artificial Intelligence - XVth International Conference of the Italian Association for Artificial Intelligence</source>
          , Genova, Italy,
          <source>November 29 - December 1</source>
          ,
          <year>2016</year>
          , Proceedings, volume
          <volume>10037</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2016</year>
          , pp.
          <fpage>164</fpage>
          -
          <lpage>178</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -49130-1_
          <fpage>13</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -49130-1\_
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>E.</given-names>
            <surname>Erdem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <article-title>Applications of answer set programming</article-title>
          ,
          <source>AI Mag</source>
          .
          <volume>37</volume>
          (
          <year>2016</year>
          )
          <fpage>53</fpage>
          -
          <lpage>68</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>E.</given-names>
            <surname>Dantsin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          ,
          <article-title>Complexity and expressive power of logic programming</article-title>
          ,
          <source>ACM Comput. Surv</source>
          .
          <volume>33</volume>
          (
          <year>2001</year>
          )
          <fpage>374</fpage>
          -
          <lpage>425</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <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="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Falkner</surname>
          </string-name>
          , G. Friedrich,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schekotihin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Taupe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. C.</given-names>
            <surname>Teppan</surname>
          </string-name>
          ,
          <article-title>Industrial applications of answer set programming</article-title>
          ,
          <source>Künstliche Intell</source>
          .
          <volume>32</volume>
          (
          <year>2018</year>
          )
          <fpage>165</fpage>
          -
          <lpage>176</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>G.</given-names>
            <surname>Francescutto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schekotihin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. M. S.</given-names>
            <surname>El-Kholany</surname>
          </string-name>
          ,
          <article-title>Solving a multi-resource partial-ordering lfexible variant of the job-shop scheduling problem with hybrid ASP</article-title>
          , volume
          <volume>12678</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>313</fpage>
          -
          <lpage>328</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>V.</given-names>
            <surname>Barbara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Guarascio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Manco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Quarta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , E. Ritacco,
          <article-title>Neuro-symbolic AI for compliance checking of electrical control panels</article-title>
          ,
          <source>Theory Pract. Log. Program</source>
          .
          <volume>23</volume>
          (
          <year>2023</year>
          )
          <fpage>748</fpage>
          -
          <lpage>764</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>L.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wanko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Haubelt</surname>
          </string-name>
          , T. Schaub,
          <article-title>Investigating methods for aspmt-based design space exploration in evolutionary product design</article-title>
          ,
          <source>Int. J. Parallel Program</source>
          .
          <volume>52</volume>
          (
          <year>2024</year>
          )
          <fpage>59</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>D.</given-names>
            <surname>Rajaratnam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wanko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Chen</surname>
          </string-name>
          , S. Liu, T. C.
          <article-title>Son, Solving an industrial-scale warehouse delivery problem with answer set programming modulo diference constraints</article-title>
          ,
          <source>Algorithms</source>
          <volume>16</volume>
          (
          <year>2023</year>
          )
          <fpage>216</fpage>
          .
        </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>
          , volume
          <volume>52</volume>
          <source>of OASICS</source>
          ,
          <string-name>
            <surname>Schloss</surname>
            <given-names>Dagstuhl</given-names>
          </string-name>
          ,
          <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>F.</given-names>
            <surname>Calimeri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Fuscà</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>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Veltri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zangari</surname>
          </string-name>
          ,
          <source>The ASP system DLV2</source>
          , volume
          <volume>10377</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2017</year>
          , pp.
          <fpage>215</fpage>
          -
          <lpage>221</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <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="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>J.</given-names>
            <surname>Marques-Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Lynce</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Malik</surname>
          </string-name>
          ,
          <article-title>Conflict-driven clause learning SAT solvers</article-title>
          , volume
          <volume>336</volume>
          <source>of Frontiers in Artificial Intelligence and Applications</source>
          , IOS Press,
          <year>2021</year>
          , pp.
          <fpage>133</fpage>
          -
          <lpage>182</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <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="ref30">
        <mixed-citation>
          [30]
          <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>Theory Pract. Log. Program</source>
          .
          <volume>12</volume>
          (
          <year>2012</year>
          )
          <fpage>485</fpage>
          -
          <lpage>503</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <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>Theory Pract. Log. Program</source>
          .
          <volume>17</volume>
          (
          <year>2017</year>
          )
          <fpage>462</fpage>
          -
          <lpage>515</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <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>
          , volume
          <volume>52</volume>
          of OASIcs, Schloss Dagstuhl,
          <year>2016</year>
          , pp.
          <volume>1</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          :
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bomanson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Janhunen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Weinzierl</surname>
          </string-name>
          ,
          <article-title>Enhancing lazy grounding with lazy normalization in answer-set programming</article-title>
          , AAAI Press,
          <year>2019</year>
          , pp.
          <fpage>2694</fpage>
          -
          <lpage>2702</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <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>
          , volume
          <volume>5753</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2009</year>
          , pp.
          <fpage>522</fpage>
          -
          <lpage>527</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Robbins</surname>
          </string-name>
          , Dualgrounder:
          <article-title>Lazy instantiation via clingo multi-shot framework</article-title>
          , volume
          <volume>12678</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>435</fpage>
          -
          <lpage>441</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <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="ref37">
        <mixed-citation>
          [37]
          <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>
          , volume
          <volume>10377</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2017</year>
          , pp.
          <fpage>191</fpage>
          -
          <lpage>204</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>V.</given-names>
            <surname>Besin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hecher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Woltran</surname>
          </string-name>
          ,
          <article-title>Body-decoupled grounding via solving: A novel approach on the ASP bottleneck, in: IJCAI, ijcai</article-title>
          .org,
          <year>2022</year>
          , pp.
          <fpage>2546</fpage>
          -
          <lpage>2552</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <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>Theory Pract. Log. Program</source>
          .
          <volume>19</volume>
          (
          <year>2019</year>
          )
          <fpage>857</fpage>
          -
          <lpage>873</lpage>
          . URL: https://doi.org/10.1017/S1471068419000231. doi:
          <volume>10</volume>
          .1017/ S1471068419000231.
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <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="ref41">
        <mixed-citation>
          [41]
          <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>
          , AAAI Press,
          <year>2022</year>
          , pp.
          <fpage>5834</fpage>
          -
          <lpage>5841</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzotta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>Compilation of tight ASP programs</article-title>
          , volume
          <volume>372</volume>
          <source>of Frontiers in Artificial Intelligence and Applications</source>
          , IOS Press,
          <year>2023</year>
          , pp.
          <fpage>557</fpage>
          -
          <lpage>564</lpage>
          . URL: https://doi.org/10.3233/ FAIA230316. doi:
          <volume>10</volume>
          .3233/FAIA230316.
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzotta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          ,
          <article-title>Blending grounding and compilation for eficient ASP solving</article-title>
          ,
          <source>in: Proceedings of the 21st International Conference on Principles of Knowledge Representation and Reasoning</source>
          , KR,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kaminski</surname>
          </string-name>
          , B. Kaufmann, T. Schaub, Answer Set Solving in Practice,
          <source>Synthesis Lectures on Artificial Intelligence and Machine Learning</source>
          , Morgan &amp; Claypool Publishers,
          <year>2012</year>
          . URL: https:// doi.org/10.2200/S00457ED1V01Y201211AIM019. doi:
          <volume>10</volume>
          .2200/S00457ED1V01Y201211AIM019.
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>F.</given-names>
            <surname>Calimeri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          , G. Ianni,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kaminski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Krennwallner</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>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , T. Schaub,
          <article-title>Asp-core-2 input language format</article-title>
          ,
          <source>Theory Pract. Log. Program</source>
          .
          <volume>20</volume>
          (
          <year>2020</year>
          )
          <fpage>294</fpage>
          -
          <lpage>309</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>E.</given-names>
            <surname>Erdem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          ,
          <article-title>Tight logic programs</article-title>
          ,
          <source>Theory Pract. Log. Program. 3</source>
          (
          <year>2003</year>
          )
          <fpage>499</fpage>
          -
          <lpage>518</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <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="ref48">
        <mixed-citation>
          [48]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fitting</surname>
          </string-name>
          ,
          <article-title>A deterministic prolog fixpoint semantics</article-title>
          ,
          <source>J. Log. Program. 2</source>
          (
          <year>1985</year>
          )
          <fpage>111</fpage>
          -
          <lpage>118</lpage>
          . URL: https://doi.org/10.1016/
          <fpage>0743</fpage>
          -
          <lpage>1066</lpage>
          (
          <issue>85</issue>
          )
          <fpage>90014</fpage>
          -
          <lpage>7</lpage>
          . doi:
          <volume>10</volume>
          .1016/
          <fpage>0743</fpage>
          -
          <lpage>1066</lpage>
          (
          <issue>85</issue>
          )
          <fpage>90014</fpage>
          -
          <lpage>7</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <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>A.</given-names>
            <surname>König</surname>
          </string-name>
          , T. Schaub,
          <source>Advances in gringo series 3</source>
          , in: LPNMR, volume
          <volume>6645</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2011</year>
          , pp.
          <fpage>345</fpage>
          -
          <lpage>351</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50]
          <string-name>
            <given-names>F.</given-names>
            <surname>Calimeri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Fuscà</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zangari</surname>
          </string-name>
          ,
          <string-name>
            <surname>I-DLV</surname>
          </string-name>
          :
          <article-title>the new intelligent grounder of DLV, Intelligenza Artificiale 11 (</article-title>
          <year>2017</year>
          )
          <fpage>5</fpage>
          -
          <lpage>20</lpage>
          . URL: https://doi.org/10.3233/IA-170104. doi:
          <volume>10</volume>
          .3233/IA-170104.
        </mixed-citation>
      </ref>
      <ref id="ref51">
        <mixed-citation>
          [51]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dodaro</surname>
          </string-name>
          ,
          <article-title>Design and implementation of modern CDCL ASP solvers</article-title>
          ,
          <source>Intelligenza Artificiale</source>
          <volume>18</volume>
          (
          <year>2024</year>
          )
          <fpage>239</fpage>
          -
          <lpage>259</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref52">
        <mixed-citation>
          [52]
          <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>Theory Pract. Log. Program</source>
          .
          <volume>13</volume>
          (
          <year>2013</year>
          )
          <fpage>517</fpage>
          -
          <lpage>532</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref53">
        <mixed-citation>
          [53]
          <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="ref54">
        <mixed-citation>
          [54]
          <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-list>
  </back>
</article>