<!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>Towards a Fully-Parallel DLV System</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Simona Perri</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>
        <contrib contrib-type="author">
          <string-name>Marco Sirianni</string-name>
          <email>sirianni@mat.unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Mathematics University of Calabria 87030 Rende</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we report on the first attempts to customize and exploit in DLV, a state-of-the-art Answer Set Programming system, both novel and existing parallelization methods for the propositional search phase. These techniques, combined with the recently proposed strategies for parallel instantiation, will pave the way for obtaining a fully parallel DLV system. The results of an experimental analysis are also reported, showing the impact of parallel techniques on the performance of the DLV system.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref16 ref26">16, 26</xref>
        ] is a purely declarative
programming paradigm based on nonmonotonic reasoning and logic programming.
      </p>
      <p>
        The idea of answer set programming is to represent a given
computational problem by a logic program the answer sets of which correspond to
solutions, and then, use an answer set solver to find such solutions [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
The main advantage of ASP is its high declarative nature combined with
a relatively high expressive power [
        <xref ref-type="bibr" rid="ref22 ref9">22, 9</xref>
        ]; but this comes at the price of a
high computational cost, which makes the implementation of efficient ASP
systems a difficult task.
      </p>
      <p>
        However, the development of efficient ASP systems [
        <xref ref-type="bibr" rid="ref1 ref15 ref19 ref2 ref20 ref22 ref24 ref25 ref27 ref28 ref35">22, 20, 19, 24, 35,
28, 15, 27, 25, 2, 1</xref>
        ], and among them the state-of-the-art system DLV [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ],
made ASP an ideal tool for developing complex real-world applications, a
fact confirmed by the increasing number of ASP applications in both the
fields of AI and Knowledge Management [
        <xref ref-type="bibr" rid="ref17 ref21 ref32 ref8">17, 32, 8, 21</xref>
        ].
      </p>
      <p>At the time of this writing, the majority of the available ASP
implementations is not able to take advantage during all the steps of the computation
from the latest hardware, featuring multi-core/multi-processor SMP
(Symmetric MultiProcessing) technologies also for entry-level systems and PCs.</p>
      <p>
        In particular, concerning the DLV system, a first step in this direction
has been recently done by applying parallelism to the preliminary program
instantiation phase [
        <xref ref-type="bibr" rid="ref29 ref6">6, 29</xref>
        ]; however model generation and checking, the two
remaining phases of the computation, still rely on serial algorithms. On
the contrary, for some other ASP systems, specialized versions exploiting
parallelism in the propositional phase have been developed, but still rely on
a serial instantiation[
        <xref ref-type="bibr" rid="ref10 ref14 ref18 ref30">14, 10, 18, 30</xref>
        ].1
      </p>
      <p>
        In this paper we report on the first attempts to customize and exploit in
DLV both novel and existing parallelization methods for the propositional
search phase in order to obtain a fully parallel version of the DLV system.
We start by focusing on the computation of a single answer set, and try to
combine well-known parallel lookahead techniques [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] with a multi-heuristics
parallel search strategy.
      </p>
      <p>The results of an experimental analysis are also presented, showing the
impact of parallel techniques on the performance of the DLV system.
2</p>
    </sec>
    <sec id="sec-2">
      <title>The DLV System</title>
      <p>
        In this Section, first we provide a short description of the syntax and the
semantics of the kernel language of DLV which is disjunctive datalog under
the answer sets semantics [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]; then we outline the general architecture of
the system; finally, we focus on the computation performed by the Model
Generator, the module of the system subject of the improvements presented
in this paper.
2.1
      </p>
      <sec id="sec-2-1">
        <title>The Core Language</title>
        <p>Syntax. A variable or a constant is a term. An atom is a(t1, . . . , tn),
where a is a predicate of arity n and t1, . . . , tn are terms. A literal is either
a positive literal p or a negative literal not p, where p is an atom. Given a
literal L, we define its complementary literal not .L as follows: not .L = p
if L is of the form not p, otherwise not .L = not p.</p>
        <p>A disjunctive rule (rule, for short) r is a formula a1 ∨ · · · ∨ an :–
b1, · · · , bk, not bk+1, · · · , not bm. where a1, · · · , an, b1, · · · , bm are atoms
and n ≥ 0, m ≥ k ≥ 0. The disjunction a1 ∨ · · · ∨ an is the head of r,
while the conjunction b1, ..., bk, not bk+1, ..., not bm is the body of r. A
rule without head literals (i.e. n = 0) is usually referred to as an integrity
constraint. If the body is empty (i.e. k = m = 0), it is called a fact.</p>
        <p>An ASP program P is a finite set of safe rules. An atom, a literal, a
rule, or a program is ground if no variables appear in it.</p>
        <p>Semantics. Let P be a program. The Herbrand Universe and the
Herbrand Base of P are defined in the standard way and denoted by UP and
BP , respectively.</p>
        <p>
          1Actually, some studies on parallel instantiation were carried out in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] which remained
at a preliminary stage.
        </p>
        <p>Given a rule r occurring in P, a ground instance of r is a rule obtained
from r by replacing every variable X in r by σ(X), where σ is a
substitution mapping the variables occurring in r to constants in UP ; ground(P)
denotes the set of all the ground instances of the rules occurring in P. An
interpretation for P is a set of ground atoms, that is, an interpretation is a
subset I of BP . A ground positive literal p is true (resp., false) w.r.t. I if
p ∈ I (resp., p 6∈ I). A ground negative literal not p is true w.r.t. I if p is
false w.r.t. I; otherwise not p is false w.r.t. I. Let r be a ground rule in
ground(P). The head of r is true w.r.t. I if H(r) ∩ I 6= ∅. The body of r is
true w.r.t. I if all body literals of r are true w.r.t. I (i.e., B+(r) ⊆ I and
B−(r) ∩ I = ∅) and is false w.r.t. I otherwise. The rule r is satisfied (or
true) w.r.t. I if its head is true w.r.t. I or its body is false w.r.t. I.</p>
        <p>A model for P is an interpretation M for P such that every rule r ∈
ground(P) is true w.r.t. M . A model M for P is minimal if no model N
for P exists such that N is a proper subset of M . The set of all minimal
models for P is denoted by MM(P).</p>
        <p>
          Given a ground program P and an interpretation I, the reduct of P w.r.t.
I is the subset PI of P, which is obtained from P by deleting rules in which
a body literal is false w.r.t. I. Note that the above definition of reduct,
proposed in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], simplifies the original definition of Gelfond-Lifschitz (GL)
transform [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], but is fully equivalent to the GL transform for the definition
of answer sets [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          Let I be an interpretation for a program P. I is an answer set (or stable
model) for P if I ∈ MM(PI ) (i.e., I is a minimal model for the program PI )
[
          <xref ref-type="bibr" rid="ref16 ref31">31, 16</xref>
          ]. The set of all answer sets for P is denoted by AN S(P).
An outline of the general architecture of the system is depicted in Fig.1.
        </p>
        <p>Upon startup, the input specified by the user is parsed and transformed
into the internal data structures of the system. In general, an input program
P contains variables, and the first step of the DLV computation, performed
by the Instantiator module, is to eliminate these variables, generating a
bool ModelGenerator ( Interpretation&amp; I )
{</p>
        <p>I = Propagate ( I );
if ( I == L ) return false; (* inconsistency *)
if ( “no atom is undefined in I” )</p>
        <p>return IsAnswerSet(I);
Literal L;
if ( ! Select(I, L) ) return False;
if ( MG ( I ∪ {L} ) return True;
else return MG ( I ∪ {not .L} );
};
ground instantiation ground(P) of P. This process, called instantiation
(or grounding), is much more than a simple variables-elimination; it allows
to evaluate relevant programs fragments, and produces a ground program
which has precisely the same answer sets as the theoretical instantiation, but
it is sensibly smaller in size. Moreover, if the input program is
disjunctionfree and stratified, then its evaluation is completely done by the instantiator
which computes the single answer set.</p>
        <p>
          The subsequent computations, which constitute the non-deterministic
part of the DLV system, are then performed on ground(P) by both the
Model Generator and the Model Checker. Roughly, the former produces
some “candidate” answer set, whose stability is subsequently verified by the
latter. The computation performed by the Model Generator exploits a
backtracking search algorithm, which works directly on the ground instantiation
of the input program. When the Model Generator produces an answer set
candidate, the Model Checker verifies whether it is an answer set for the
input program. Note that, the task performed by the Model Checker is
as hard as the problem solved by the Model Generator for disjunctive
programs, while it is trivial for non-disjunctive programs. However, there is
also a class of disjunctive programs, called Head-Cycle-Free programs [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ],
for which the task solved by the Model Checker is provably simpler, which
is exploited in the system algorithms. Finally, once an answer set has been
found, it is printed and possibly the Model Generator resumes in order to
look for further answer sets.
2.3
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>The Model Generator</title>
        <p>
          The computation performed by the Model Generator, is outlined in Figure 2.
Note that the description here is quite simplified, since the details of the
actual implementation are not important for this paper. For instance, the
algorithm presented here decides whether an answer set exists, but it can
be straightforwardly extended to compute all or a fixed number of answer
sets as the DLV system does. A more detailed description can be found in
[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
        </p>
        <p>
          The ModelGenerator function is first called with parameter I set to the
empty interpretation. If the program P has an answer set, then the function
returns true setting I to the computed answer set; otherwise it returns false.
The Model Generator is similar to the Davis-Putnam procedure employed by
SAT solvers. It first calls a function Propagate, which returns the extension
of I with the literals that can be deterministically inferred (or the set of all
literals L upon inconsistency). This function is similar to a unit propagation
procedure employed by SAT solvers, but exploits the peculiarities of ASP for
making further inferences (e.g., it exploits the knowledge that every answer
set is a minimal model). If Propagate does not detect any inconsistency,
an undefined2 literal L is selected according to a heuristic criterion (by
a call to the Select procedure) and ModelGenerator is called on I ∪ {L}
and on I ∪ {not .L}. The literal L corresponds to a branching variable in
SAT solvers. And indeed, like for SAT solvers, the selection of a “good”
literal L is crucial for the performance of an ASP system. To this end
DLV employes look-ahead heuristics [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] where the system looks ahead by
tentatively assuming each undefined literal L and its complement. Then,
the heuristic value of L (which is a measure of the “quality” of the resulting
interpretations) is exploited to select the next branching literal.
        </p>
        <p>
          Looking ahead is a comparatively costly operation, the computation of
this kind of heuristics can be very expensive, since the number of literals
to be “looked-ahead” may be very large; thus, the lookahead step is a good
candidate for exploiting parallelism [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Moreover, no heuristics measure
fits perfectly all cases, and it might even be the case that the costs of the
lookahead largely overcome its benefits; parallelism might help also in this
case by allowing for concurrently exploring different search paths.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Pushing Parallelism in the Model Generator</title>
      <p>In this Section we present the first attempts to exploit parallelism in the
Model Generator. In this preliminary work, we focus on the computation
of a single answer set and we investigate two directions: first, we act on the
evaluation of the heuristically best literal, by making use of techniques of
parallel look-ahead; then we exploit a multi-heuristics parallel search
strategy taking advantage of different heuristic criteria.</p>
      <p>2The interpretations built during the computation are 3-valued, that is a literal can be
true, false or undefined (if its value has not been set yet) w.r.t. to an interpretation I.
3.1</p>
      <sec id="sec-3-1">
        <title>Parallel Lookahead</title>
        <p>We now sketch a framework which exploits parallelism for the selection of
branching literals, according to a heuristic criterion.</p>
        <p>The general procedure evaluating the heuristically best literal is shown in
Figure 3. Roughly, some threads are spawned which run function Lookahead
(calls to pthread create). Each thread takes a different undefined literal A
to perform a look-ahead step by considering first I ∪ {A} and then I ∪
{not .A}. Lookahead, either calculates the two heuristic values (results are
stored in IA+ and IA−) by calling function Propagate, or if an inconsistency is
encountered (IA+ = L or IA− = L), stores the complement of the propagated
literal in the detChoices set. Once all threads have terminated (they reach
the barrier), literals in detChoices, which can be deterministically assumed,
are propagated. If an inconsistency arises at this point, then no literal can
be chosen at this level (the assumption of both A and its complement not .A
leads to inconsistency) and the function Select returns false, in order to cause
a backtracking.3 Otherwise, the best literal according to a given heuristic
criterion hC is selected among the candidate ones.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Multi-Heuristics Parallel Search Strategy</title>
        <p>The heuristics for the selection of the branching literal dramatically affects
the performance of an ASP system; and, obviously, there is no heuristics
performing well in all cases, rather a heuristics can be more suitable than
another one for a given problem typology, or even for a specific problem
instance. In order to obtain an ASP solver which is able to always adopt
the best known heuristics, we exploit a multi-heuristics strategy. More in
detail, we run a number of Model Generator instances, each one adopting a
different branching criterion. Since we are interested in looking for just one
answer set, such a strategy corresponds to exploring different paths in the
search space, concurrently. The computation stops when the first instance
of Model Generator terminates, thus ensuring the best possible performance
for the given problem instance.</p>
        <p>
          In the following we briefly recall the exploited heuristic criteria. For fast
prototyping, we considered the ones already supported by the DLV system.
Further details can be found in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>
          Heuristic hsatz. This is an extension of the branching rule adopted
in the system SATZ [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] to the framework of DLP. The basic idea is to
prefer literals introducing a higher number of “short” (that is, where few
undefined literals occur) unsatisfied rules. Intuitively, the introduction of a
high number of short unsatisfied rules is preferred because it creates more
3The process is described here in a simplified way for reason of presentation. In the
actual implementation, the number of Lookahead threads can be fixed and in case of
inconsistency, threads are stopped as soon as the propagation of both L and not .L fails.
bool Select(Interpretation&amp; I, Literal&amp; L)
{
        </p>
        <p>Interpretation IA+, IA−; ListOfThreadsID thList = ∅;
ThreadSafeSetOfLiterals DetChoices = ∅;
foreach Literal A undefined w.r.t. I do</p>
        <p>ThreadID id;
pthread create(id, Lookahead, I, A, detChoices);
th list.add(id);
foreach ThreadID thread ∈ thList do</p>
        <p>pthread join(thread);
I = Propagate(I ∪ detChoices);
if (I == L) return false;
L = N U LL;
foreach Literal A undefined w.r.t. I do
if (L == N U LL)</p>
        <p>L = A;
else if (L &lt;hC A)</p>
        <p>L = A;
return true;
}
}
(* spawn lookahead threads *)
(* barrier *)
(* assume literals that can be deterministically propagated *)
(* compute the heuristically best literal *)
(* first literal, no comparison *)
(* compare A against L w.r.t. the heuristics *)
IA+ = Propagate(I ∪ {A});
if (IA+ == L)</p>
        <p>detChoices.add(not .A);
IA− := Propagate(I ∪ {not .A});
if (IA− == L)
detChoices.add(A);
(* look-ahead for A *)
(* look-ahead for not .A *)
void Lookahead( Interpretation I, Literal A, ThreadSafeSetOfLiterals&amp; detChoices)
{
and stronger constraints on the interpretation so that a contradiction can
be found earlier.</p>
        <p>
          Heuristic hstd. This is the heuristics used as default in the DLV system.
It is based on a peculiar property of answer sets, the supportdness: for each
true atom A of an answer set I, there exists a rule r of the program such
that the body of r is true w.r.t. I and A is the only true atom in the head
of r [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Since an ASP system must eventually converge to a supported
interpretation, it makes sense to keep the interpretations “as much supported
as possible” during the intermediate steps of the computation. To this end,
the heuristics takes into account the value of several counters obtained at
the end of the propagation: number of UnsupportedTrue (UT) atoms, i.e.,
atoms which are true in the current interpretation but still miss a supporting
rule; the total number Sat(L) of rules which are satisfied; the degree of
supportedness, that is the average number of supporting rules for a true
atom. The heuristics hstd of DLV considers these measures in a prioritized
way, to favor atoms yielding interpretations with fewer U T atoms (which
should more likely lead to a supported model). If the UT counters are
equal, then the heuristics considers the total number Sat(L) of rules which
are satisfied. And, finally, for hard programs (non Head Cycle Free [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]),
hstd considers atoms leading to an higher degree of supportedness in order
to drive the computation toward supported models having higher chances to
be answer set, with the goal of reducing the overall number of the expensive
calls to the Model Checker.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experiments</title>
      <p>In this Section we report the results of an experimental analysis carried out
on a prototypical version of the DLV system exploiting the above described
techniques. Parallelism is introduced in the system by exploiting the POSIX
pthreads standard libraries.
4.1</p>
      <sec id="sec-4-1">
        <title>Benchmark Problems and Instances</title>
        <p>
          We considered three well-known problems which are usually exploited for
evaluating Model Generator performances:
- 3SAT is a special case of SAT, one of the best researched problems
in AI, which amounts to verify if it exists a truth assignment which
satisfies a CNF formula having at most tree variables per clause. The
instances for 3SAT were randomly generated by using a tool by Selman
and Kautz [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ]. For each size we generated 20 such instances, where
we kept the ratio between the number of clauses and the number of
variables at 4.3, which is near the cross-over point for random 3SAT [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
- HAMPATH A classical NP-complete problem in graph theory, which
can be expressed as follows: given a directed graph G = (V, E) and a
node a ∈ V of this graph, does there exist a path in G starting at a
and passing through each node in V exactly once. The instances for
HAMPATH were generated by a tool by Patrik Simons (cf. [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ]). For
each problem size n we generated 20 instances, always assuming node
1 as the starting node.
- STRATCOMP Is the problem of computing companies that are
“strategic” according with the following definition [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. A holding owns
companies C(1), . . . , C(c), each of which produces some goods. Some
of these companies may jointly control another one. Now, some
companies should be sold, under the constraint that all goods can still be
produced, and that no company is sold which would still be controlled
by the holding afterwards. A company is strategic, if it belongs to
a strategic set, which is a minimal set of companies satisfying these
constraints.
        </p>
        <p>For STRATCOMP, we randomly generated 20 instances for each
problem size n, with n companies and n products.</p>
        <p>The first two benchmarks (3SAT and HAMPATH) are well-known
NPcomplete problems, while the third (STRATCOMP) is a Σ2P -complete
problem.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Experimental Results</title>
        <p>The machine used for the experiments is a multi-processor Intel Xeon
“Woodcrest” (quad core) 3GHz machine with 4MB of L2 Cache and 4GB of RAM,
running Debian GNU Linux 4.0.</p>
        <p>We have allowed at most 600 seconds (ten minutes) of execution time
for each instance. The experimentation has been stopped (for each system)
at the size at which some instance exceeded this time limit.</p>
        <p>The results of our experiments are displayed in the graphs of Figure 4.
For each problem domain we report two graphs, describing the behavior of
the two tested parallel techniques: In both graphs the horizontal axis
reports a parameter representing the size of the instance, while on the vertical
axis we report the running time (expressed in seconds) averaged over the
instances of the same size we have run.</p>
        <p>Since our techniques focus on model generation, all the results of the
experimental analysis refer only to the process of computing answer sets of
ground programs.</p>
        <p>
          Evaluation of Parallel Lookahead. In order to assess the impact of the
parallel lookahead we considered a number of variants of the same prototype:
• dl.X.satz DLV with lookahead exploiting hsatz and X = [
          <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
          ]
threads.
• dl.X.std DLV with lookahead exploiting hstd and X = [
          <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
          ] threads.
        </p>
        <p>The results shown in Figure 4(a), in Figure 4(c) and in Figure 4(e)
report the performance of those variants on the considered instances of 3SAT,
HAMPATH and STRATCOMP, respectively.</p>
        <p>Concerning 3SAT, the best heuristics is clearly hsatz, the entire group
of dl.X.satz performed better than dl.X.std group, solving all the generated
instances in less time; whereas all the dl.X.std were stopped when
considering instances having more than 300 variables. Moreover, it can be noted
that dl.2.satz is the absolute best variant in this domain, and dl.2.std is the
best among the ones exploiting hstd. The lower performance of variants
with three workers4 is due to the larger amount of time spent by threads in
synchronization (perhaps a technological problem of our prototype that can
be probably overcome by improving the implementation).</p>
        <p>
          As far as HAMPATH is concerned, the results are clearly in favor of
the group exploiting the standard heuristics. Here the standard heuristics,
which takes into account peculiar properties of ASP programs, has an edge
on the sat-based one. Indeed, all the dl.X.satz variants were stopped before
reaching 100 nodes, while the best versions equipped with standard
heuristics could solve instances having up to 120 nodes. Unfortunately here the
effect of parallel lookahead is overshadowed by an internal optimization of
DLV, which considers as selectable literals only a subset the available ones
called PT literals (c.f.r. [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]), thus reducing the work to be divided among
workers; this results in an emphasized effect of synchronization overhead
which still remains acceptable (&lt;0.9sec).
        </p>
        <p>For STRATCOMP it is evident that the standard heuristics is the best,
and that the effect of parallel lookahead made dl.2.std and dl.3.std to be the
best variants (still dl.2 shows less overhead compared with dl.3), which were
capable to solve instances having up to 290 companies; whereas, the
hsatzbased systems were stopped before reaching 150 companies, and dl.1.std
reaches at most 170 companies.</p>
        <p>Summarizing, results clearly show that the benefits of parallel lookahead
are maximized when at most two workers are employed, and the technique
can bring interesting speedups on hard instances.</p>
        <p>Evaluation of the Multi-Heuristics Approach. The results reported
above, as one can expect, show that there is no heuristics performing well
in all cases (e.g. hsatz is the best for 3SAT, while in the other two domains
hstd is the winner). In order to evaluate the second strategy proposed in this
paper, we considered a variant implementing the multi-heuristics approach
and exploiting the best parallel lookahead settings (named dl2.MultiHeu).
We compared dl2.MultiHeu with the best performer in each domain among
the ones considered before; the result are shown in Figure 4(b), in Figure 4(d)
and in Figure 4(f), which reports the performance of those variants on 3SAT,
HAMPATH and STRATCOMP, respectively.</p>
        <p>The picture here is very clear, dl2.MultiHeu is able to move forward the
limit of the the largest instance solved in 10 minutes. Still the
synchronization overhead, paid to stop the concurrent model generators remains
evident, but the dramatic advantage of selecting the best possible criterion
per instance allows for solving larger instances in less time. For instance
dl2.MultiHeu solved instances with up to 160 nodes in HAMPATH where
the competitor stopped at 120 nodes; and dl2.MultiHeu solved up to 3000
companies vs 2900. The overall performance leap becomes dramatic when
4We tried also variants with more than three workers confirming this statement; results
have been omitted for the sake of readability.</p>
        <p>dl.2satz
dl.2MultiHeur
1
200</p>
        <p>dl.1std
dl.2MultiHeur
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
T
A
S
3
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
H
T
A
P
M
A
H
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
P
M
O
C
T
A
R
T
S
dl.2std
dl.2MultiHeur</p>
        <sec id="sec-4-2-1">
          <title>Number of Node</title>
          <p>(d)
260
(a)</p>
        </sec>
        <sec id="sec-4-2-2">
          <title>Number of Propositional Variables 60 Number of Node</title>
          <p>(c)
220
240
280
300
320
220
240
260
280
300
320
Number of Propositional Variables
(b)
100
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
A 10
T
S
3
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
H
T
A
P
M
A
H
)
s
(
e
m
i
T
g
n
i
n
n
u
R
:
P
M
O
C
T
A
R
T
S</p>
        </sec>
        <sec id="sec-4-2-3">
          <title>Number of Companies</title>
          <p>(e)</p>
        </sec>
        <sec id="sec-4-2-4">
          <title>Number of Companies</title>
          <p>(f)
dl2.MultiHeu is compared with the original dl1.std: 300 vs 320
propositional variables for 3SAT; 120 vs 160 nodes for HAMPATH; and 1700 vs
3000 companies for STRATCOMP.
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>In this paper we reported on the first attempts to introduce parallelism in
the DLV system. In particular, we focused on the Model Generator
module and we experimented with two parallel techniques: parallel lookahead
and multi-heuristic search strategy. The results show that great benefits
can be already obtained by exploiting simple parallelization strategies in
the expensive phase of the answer sets computation. Nevertheless our work
is still in a preliminary stage: much has to be done in order to obtain
an efficient and solid implementation; moreover, more sophisticated
parallelization techniques, specifically conceived for DLV have to be designed,
probably requiring stronger modifications to the original system
implementation. This is subject of future work. Once a more stable parallel system
will be obtained, we plan to make a larger experimental activity considering
more domains, more techniques (both novel and well-known), and involving
comparison with other already well-assessed parallel systems.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>This work has been partially supported by the Regione Calabria and EU
under POR Calabria FESR 2007-2013 within the PIA project of DLVSYSTEM
s.r.l..</p>
    </sec>
    <sec id="sec-7">
      <title>References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.</given-names>
            <surname>Anger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Linke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Neumann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          .
          <article-title>The nomore++ Approach to Answer Set Solving</article-title>
          .
          <source>In Logic for Programming</source>
          ,
          <source>Artificial Intelligence, and Reasoning</source>
          , 12th International Conference,
          <string-name>
            <surname>LPAR</surname>
          </string-name>
          <year>2005</year>
          , LNCS 3835, pp.
          <fpage>95</fpage>
          -
          <lpage>109</lpage>
          . Dec.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Anger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Konczak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Linke</surname>
          </string-name>
          .
          <article-title>NoMoRe: A System for NonMonotonic Reasoning</article-title>
          .
          <source>In LPNMR'01, LNCS 2173</source>
          , pp.
          <fpage>406</fpage>
          -
          <lpage>410</lpage>
          . Sept.
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balduccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Pontelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Elkhatib</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Le</surname>
          </string-name>
          .
          <article-title>Issues in parallel execution of non-monotonic reasoning systems</article-title>
          .
          <source>Parallel Computing</source>
          ,
          <volume>31</volume>
          (
          <issue>6</issue>
          ):
          <fpage>608</fpage>
          -
          <lpage>647</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ben-Eliyahu</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Dechter</surname>
          </string-name>
          .
          <article-title>Propositional Semantics for Disjunctive Logic Programs</article-title>
          . AMAI,
          <volume>12</volume>
          :
          <fpage>53</fpage>
          -
          <lpage>87</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Cadoli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          .
          <article-title>Default Logic as a Query Language</article-title>
          .
          <source>IEEE TKDE</source>
          ,
          <volume>9</volume>
          (
          <issue>3</issue>
          ):
          <fpage>448</fpage>
          -
          <lpage>463</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Calimeri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          .
          <article-title>Experimenting with Parallelism for the Instantiation of ASP Programs</article-title>
          .
          <source>Journal of Algorithms in Cognition, Informatics and Logics</source>
          ,
          <volume>63</volume>
          (
          <issue>1-3</issue>
          ):
          <fpage>34</fpage>
          -
          <lpage>54</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Crawford</surname>
          </string-name>
          and
          <string-name>
            <given-names>L. D.</given-names>
            <surname>Auton</surname>
          </string-name>
          .
          <article-title>Experimental Results on the Crossover Point in Random 3SAT</article-title>
          .
          <source>AI</source>
          ,
          <volume>81</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>31</fpage>
          -
          <lpage>57</lpage>
          , Mar.
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Cumbo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Iiritano</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Rullo</surname>
          </string-name>
          .
          <article-title>Reasoning-Based Knowledge Extraction for Text Classification</article-title>
          .
          <source>In Proceedings of Discovery Science, 7th International Conference</source>
          , pp.
          <fpage>380</fpage>
          -
          <lpage>387</lpage>
          , Padova, Italy, Oct.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <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>
            <surname>G.</surname>
          </string-name>
          <article-title>Gottlob, and</article-title>
          <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 Computing Surveys</source>
          ,
          <volume>33</volume>
          (
          <issue>3</issue>
          ):
          <fpage>374</fpage>
          -
          <lpage>425</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ellguth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gusowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kaminski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Liske</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Schneidenbach</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Schnor</surname>
          </string-name>
          .
          <article-title>A simple distributed conflict-driven answer set solver</article-title>
          .
          <source>In LPNMR, LNCS 5753</source>
          , pp.
          <fpage>490</fpage>
          -
          <lpage>495</lpage>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          .
          <article-title>Enhancing Efficiency and Expressiveness in Answer Set Programming Systems</article-title>
          .
          <source>PhD thesis</source>
          , TU Wien,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Pfeifer</surname>
          </string-name>
          .
          <article-title>Recursive aggregates in disjunctive logic programs: Semantics and complexity</article-title>
          .
          <source>In JELIA 2004, LNCS 3229</source>
          , pp.
          <fpage>200</fpage>
          -
          <lpage>212</lpage>
          . Sept.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , G. Pfeifer, and
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          .
          <article-title>On look-ahead heuristics in disjunctive logic programming</article-title>
          .
          <source>AMAI</source>
          ,
          <volume>51</volume>
          (
          <issue>2-4</issue>
          ):
          <fpage>229</fpage>
          -
          <lpage>266</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Finkel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. W.</given-names>
            <surname>Marek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Moore</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Truszczynski</surname>
          </string-name>
          .
          <article-title>Computing stable models in parallel</article-title>
          .
          <source>In Answer Set Programming</source>
          ,
          <source>Towards Efficient and Scalable Knowledge Representation and Reasoning, Proceedings of the 1st Intl. ASP'01 Workshop</source>
          , pp.
          <fpage>72</fpage>
          -
          <lpage>76</lpage>
          , Mar.
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gebser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Neumann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          .
          <article-title>Conflict-driven answer set solving</article-title>
          .
          <source>In IJCAI 2007</source>
          , pp.
          <fpage>386</fpage>
          -
          <lpage>392</lpage>
          . Jan.
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>Classical Negation in Logic Programs</article-title>
          and
          <string-name>
            <given-names>Disjunctive</given-names>
            <surname>Databases</surname>
          </string-name>
          . NGC,
          <volume>9</volume>
          :
          <fpage>365</fpage>
          -
          <lpage>385</lpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <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>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          .
          <article-title>Some DLV Applications for Knowledge Management</article-title>
          .
          <source>In Proceedings of the 10th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR</source>
          <year>2009</year>
          ),
          <source>LNCS 5753</source>
          , pp.
          <fpage>591</fpage>
          -
          <lpage>597</lpage>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Gressmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Janhunen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Mercer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schaub</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Thiele</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Tichy</surname>
          </string-name>
          .
          <article-title>Platypus: A Platform for Distributed Answer Set Solving</article-title>
          .
          <source>In Proceedings of Logic Programming and Nonmonotonic Reasoning, 8th International Conference (LPNMR)</source>
          , pp.
          <fpage>227</fpage>
          -
          <lpage>239</lpage>
          , Diamante, Italy, Sept.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Janhunen</surname>
          </string-name>
          and
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Niemel¨a. Gnt - a solver for disjunctive logic programs</article-title>
          .
          <source>In LPNMR-7, LNCS 2923</source>
          , pp.
          <fpage>331</fpage>
          -
          <lpage>335</lpage>
          . Jan.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>T.</given-names>
            <surname>Janhunen</surname>
          </string-name>
          , I. Niemel¨a,
          <string-name>
            <given-names>D.</given-names>
            <surname>Seipel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.-H.</given-names>
            <surname>You</surname>
          </string-name>
          .
          <article-title>Unfolding Partiality and Disjunctions in Stable Model Semantics</article-title>
          .
          <source>ACM TOCL</source>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>37</lpage>
          , Jan.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , G. Gottlob,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rosati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fink</surname>
          </string-name>
          , G. Greco,
          <string-name>
            <given-names>G.</given-names>
            <surname>Ianni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kalka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lembo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lenzerini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Nowicki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ruzzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Staniszkis</surname>
          </string-name>
          , and
          <string-name>
            <surname>G. Terracina.</surname>
          </string-name>
          <article-title>The INFOMIX System for Advanced Integration of Incomplete and Inconsistent Data</article-title>
          .
          <source>In SIGMOD 2005</source>
          , pp.
          <fpage>915</fpage>
          -
          <lpage>917</lpage>
          , Baltimore, Maryland, USA,
          <year>2005</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          , G. Pfeifer,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          , G. Gottlob,
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Scarcello</surname>
          </string-name>
          .
          <article-title>The DLV System for Knowledge Representation and Reasoning</article-title>
          .
          <source>ACM TOCL</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <fpage>499</fpage>
          -
          <lpage>562</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>C.</given-names>
            <surname>Li</surname>
          </string-name>
          and
          <article-title>Anbulagan. Heuristics Based on Unit Propagation for Satisfiability Problems</article-title>
          .
          <source>In IJCAI 1997</source>
          , pp.
          <fpage>366</fpage>
          -
          <lpage>371</lpage>
          , Nagoya, Japan, Aug.
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          .
          <article-title>Disjunctive Answer Set Programming via Satisfiability</article-title>
          .
          <source>In LPNMR'05, LNCS 3662</source>
          , pp.
          <fpage>447</fpage>
          -
          <lpage>451</lpage>
          . Sept.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lierler</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Maratea</surname>
          </string-name>
          .
          <article-title>Cmodels-2: SAT-based Answer Set Solver Enhanced to Non-tight Programs</article-title>
          .
          <source>In LPNMR-7, LNCS 2923</source>
          , pp.
          <fpage>346</fpage>
          -
          <lpage>350</lpage>
          . Jan.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>Answer Set Planning</article-title>
          .
          <source>In ICLP'99</source>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>37</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>F.</given-names>
            <surname>Lin</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          .
          <article-title>ASSAT: computing answer sets of a logic program by SAT solvers</article-title>
          .
          <source>AI</source>
          ,
          <volume>157</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>115</fpage>
          -
          <lpage>137</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>I. Niemel</surname>
          </string-name>
          ¨a, P. Simons, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Syrja</surname>
          </string-name>
          <article-title>¨nen. Smodels: A System for Answer Set Programming</article-title>
          .
          <source>In NMR'</source>
          <year>2000</year>
          , Apr.
          <year>2000</year>
          . Online at http://xxx. lanl.gov/abs/cs/0003033v1.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>S.</given-names>
            <surname>Perri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sirianni</surname>
          </string-name>
          .
          <article-title>A parallel asp instantiator based on dlv</article-title>
          .
          <source>In DAMP '10: Proceedings of the 5th ACM SIGPLAN workshop on Declarative aspects of multicore programming</source>
          , pp.
          <fpage>73</fpage>
          -
          <lpage>82</lpage>
          , New York, USA,
          <year>2010</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>E.</given-names>
            <surname>Pontelli</surname>
          </string-name>
          and
          <string-name>
            <given-names>O.</given-names>
            <surname>El-Khatib</surname>
          </string-name>
          .
          <article-title>Exploiting Vertical Parallelism from Answer Set Programs</article-title>
          .
          <source>In Answer Set Programming</source>
          ,
          <source>Towards Efficient and Scalable Knowledge Representation and Reasoning, Proceedings of the 1st Intl. ASP'01 Workshop</source>
          , pp.
          <fpage>174</fpage>
          -
          <lpage>180</lpage>
          , Mar.
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Przymusinski</surname>
          </string-name>
          .
          <article-title>Stable Semantics for Disjunctive Programs</article-title>
          .
          <source>NGC</source>
          ,
          <volume>9</volume>
          :
          <fpage>401</fpage>
          -
          <lpage>424</lpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ruffolo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Manna</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Sacca`, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Zavatto</surname>
          </string-name>
          .
          <article-title>Exploiting ASP for Semantic Information Extraction</article-title>
          .
          <source>In Proceedings ASP05 - Answer Set Programming: Advances in Theory and Implementation</source>
          , pp.
          <fpage>248</fpage>
          -
          <lpage>262</lpage>
          , Bath, UK,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>B.</given-names>
            <surname>Selman</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Kautz</surname>
          </string-name>
          ,
          <year>1997</year>
          . ftp://ftp.research.att.com/dist/ ai/.
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          .
          <article-title>Extending and Implementing the Stable Model Semantics</article-title>
          .
          <source>PhD thesis</source>
          , Helsinki University of Technology, Finland,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Niemel¨a, and</article-title>
          <string-name>
            <given-names>T.</given-names>
            <surname>Soininen</surname>
          </string-name>
          .
          <article-title>Extending and Implementing the Stable Model Semantics</article-title>
          .
          <source>AI</source>
          ,
          <volume>138</volume>
          :
          <fpage>181</fpage>
          -
          <lpage>234</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>