<!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>Logic Programming and Bisimulation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Agostino Dovier</string-name>
          <email>agostino.dovier@uniud.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Udine</institution>
          ,
          <addr-line>DIMI</addr-line>
          ,
          <country country="IT">ITALY</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <history>
        <date date-type="accepted">
          <day>5</day>
          <month>6</month>
          <year>2015</year>
        </date>
      </history>
      <abstract>
        <p>The logic programming encoding of the set-theoretic graph property known as bisimulation is analyzed. This notion is of central importance in non-well-founded set theory, semantics of concurrency, model checking, and coinductive reasoning. From a modeling point of view, it is particularly interesting since it allows two alternative high-level characterizations. We analyze the encoding style of these modelings in various dialects of Logic Programming. Moreover, the notion also admits a polynomial-time maximum fixpoint procedure that we implemented in Prolog. Similar graph problems which are instead NP hard or not yet perfectly classified (e.g., graph isomorphism) can inherit most from the declarative encodings presented.</p>
      </abstract>
      <kwd-group>
        <kwd>Logic Programming modeling</kwd>
        <kwd>Bisimulation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Graph bisimulation is the key notion for stating equality in non-well-founded-set
theory
        <xref ref-type="bibr" rid="ref1">(Aczel 1988)</xref>
        . The notion is used extensively whenever cyclic properties need to be
checked either theoretically (e.g., in coinductive reasoning
        <xref ref-type="bibr" rid="ref25">(Sangiorgi 2009)</xref>
        ) and in the
semantics of communicating systems
        <xref ref-type="bibr" rid="ref21">(Milner 1980)</xref>
        , or practically, in minimizing graphs
for hardware verification, and in model checking in general
        <xref ref-type="bibr" rid="ref16">(Fisler and Vardi 1999)</xref>
        . Some
recent practical applications of bisimulation are concerned with contracting graphs for
optimal planning
        <xref ref-type="bibr" rid="ref22">(Nissim et al. 2011)</xref>
        , preventing side-channel leaks in Web Traffic
        <xref ref-type="bibr" rid="ref4">(Backes
et al. 2013)</xref>
        and, in general, with reasoning on semistructured data
        <xref ref-type="bibr" rid="ref17">(Fletcher et al. 2015)</xref>
        ,
with airplane turning control systems
        <xref ref-type="bibr" rid="ref5">(Bae et al. 2015)</xref>
        , and with phylogenetics, where
lumpability (bisimulation on Markov chains) is used
        <xref ref-type="bibr" rid="ref27">(Vera-Ruiz et al. 2014)</xref>
        .
      </p>
      <p>
        The problem of establishing whether two graphs are bisimilar (hence, the sets
‘represented’ by those graphs are equivalent) admits fast polynomial time algorithms that
optimize a naive maximum fixpoint algorithm
        <xref ref-type="bibr" rid="ref13 ref24">(Paige and Tarjan 1987; Dovier et al. 2004)</xref>
        (the
problem of establishing whether there exists a linear-time algorithm for the general case
is still open) and it is equivalent to the problem of finding the maximum bisimulation of a
graph into itself. The latter problem has the beauty of having two (equivalent) declarative
formalizations. The first one is the definition of a particular morphism that is similar to the
      </p>
      <p>The work is partially supported by INdAM GNCS 2014 and 2015 projects.
one used for defining other “NP” properties such as graph/subgraph simulation or
isomorphism. The second one is based on the notion of coarsest stable partition which is itself
similar to the property exploited for computing the minimum deterministic finite automata
for a given regular language.</p>
      <p>The focus of the paper is the analysis of the programming style to be used for
modeling the maximum bisimulation problem in a way as declarative way as possible in some
dialects of logic programming, namely, Prolog, Constraint Logic Programming on Finite
Domains, Answer Set Programming, Co-inductive Logic Programming, and the set-based
constraint logic programming language flogg (read setlog). Although the contribution of
this paper is not on the direction of improving existing polynomial time algorithms, the
problem is also encoded in Prolog as a (polynomial-time) maximum fixpoint algorithm.</p>
      <p>
        The paper contributes to the series of papers on “Set Graphs” (e.g.,
        <xref ref-type="bibr" rid="ref23">(Omodeo and Tomescu
2014)</xref>
        ) and to the series of papers aimed at comparing relative expressiveness of logic
programming paradigms on families of problems (e.g.,
        <xref ref-type="bibr" rid="ref10 ref3 ref30">(Dovier et al. 2009; Zhou and Dovier
2013)</xref>
        ). The models proposed in this paper (available at
        <xref ref-type="bibr" rid="ref2 ref8">(Dovier 2015)</xref>
        ) can be slightly
modified to address modifications of the problem, like detecting similarity/isomorphism
equivalence of graphs, possibly with further restrictions on edge labels or on topological
properties, that typically do not admit polynomial-time implementations. Therefore, a
programmer can exploit for them the declarative programming style of logic languages and
the speed of their implementations.
      </p>
      <p>
        A preliminary version of this work appeared in
        <xref ref-type="bibr" rid="ref9">(Dovier 2014)</xref>
        .
      </p>
    </sec>
    <sec id="sec-2">
      <title>2 Sets, Graphs, and Bisimulation</title>
      <p>
        Familiarity with basic notions of set theory, first-order logic, and Logic Programming is
assumed. We introduce some notions needed for understanding the contribution of the
paper; the reader is referred, e.g., to
        <xref ref-type="bibr" rid="ref1">(Aczel 1988)</xref>
        or
        <xref ref-type="bibr" rid="ref20">(Kunen 1980)</xref>
        , for details.
      </p>
      <p>Sets are made by elements. The extensionality principle (E) states that two sets are
equal if and only if they contain the same elements:
8z (z 2 x $ z 2 y) ! x = y
(E)
(the , apparently missing, direction is a consequence of equality). In “classical” set
theory sets are assumed to be well-founded; in particular the 2 relation fulfills the so-called
foundation axiom (F A):
8x x 6= ; ! (9y 2 x)(x \ y = ;)
(F A)
that ensures that a set cannot contain an infinite descending chain x0 3 x1 3 x2 3 of
elements. In particular, let us observe that a set x such that x = fxg cannot exist since x is
not empty, its unique element y is x itself, and x \ y = fyg 6= ;, contradicting the axiom.</p>
      <p>
        On the other hand, cyclic phenomena are rather common in our experience. For instance,
in Knowledge Representation, a cyclic argument is introduced for modeling the frame
problem in presence of static causal laws
        <xref ref-type="bibr" rid="ref19">(Gelfond and Lifschitz 1998)</xref>
        . In Argumentation
Theory
        <xref ref-type="bibr" rid="ref15">(Dung 1995)</xref>
        , cyclic graphs are introduced to model attacks between opposing
entities. Several other examples come from operating systems design, concurrency theory,
and so on.
      </p>
      <p>
        Representing and reasoning on these problems leads us to (cyclic) directed graphs with a
distinguished entry point. Precisely, an accessible pointed graph (apg) hG; i is a directed
graph G = hN; Ei together with a distinguished node 2 N (the point) such that all the
nodes in N are reachable from
        <xref ref-type="bibr" rid="ref1">(Aczel 1988)</xref>
        .
      </p>
      <p>
        Intuitively, an edge a ! b means that the set “represented by b” is an element of the set
“represented by a”. The graph edge ! stands, in a sense, for the Peano symbol 3. The
above idea is used to decorate an apg, namely, assigning a (possibly non-well-founded) set
to each of the nodes
        <xref ref-type="bibr" rid="ref1">(Aczel 1988)</xref>
        ; the set represented by the apg is the decoration of the
apg’s point. Sinks, i.e., nodes without outgoing edges have no elements and are therefore
decorated as the empty set ;. In general, if the apg is acyclic, it represents a well-founded
set and it can be decorated uniquely starting from sinks and proceeding backward to the
point (theoretically, this follows from the Mostowski’s Collapsing Lemma
        <xref ref-type="bibr" rid="ref20">(Kunen 1980)</xref>
        —
that works for well-founded sets only). See Figure 1 for two examples; in particular observe
that redundant nodes and edges can occur in a graph.
      </p>
      <p>
        If the graph contains cycles, interpreting edges as membership implies that the set which
decorates the graph is no longer well-founded. Non-well-founded sets are often referred to
as hypersets. To allow their existence, axiom (FA) is removed from the theory and it is
replaced by the Anti Foundation Axiom (AFA)
        <xref ref-type="bibr" rid="ref1">(Aczel 1988)</xref>
        that states that every apg has
a unique decoration. Figure 2 reports some examples. In particular, the leftmost and the
central apgs both represent the hyperset which is the singleton set containing itself.
Applying extensionality axiom (E) for verifying their equality would lead to a circular
argument. For instance, let us try to show, using (E) that the set decorating the leftmost
apg of Figure 2 is equal to that decorating the center one. Denoting with 1 and 2 the nodes
of the former and the latter set, respectively, using (E) we would have that X11 = X12 iff
X11 = X22 iff X11 = X32 iff X11 = X12.
      </p>
      <sec id="sec-2-1">
        <title>2.1 The notion of Bisimulation</title>
        <p>Each apg has a unique decoration. Therefore two apgs denote the same hyperset if and
only if their decoration is the same. The notion introduced to establish formally this fact is
the notion of bisimulation.</p>
        <p>Let G1 = hN1; E1i and G2 = hN2; E2i be two graphs, a bisimulation between G1 and
G2 is a relation b N1 N2 such that:
In case G1 and G2 are apgs pointed in 1 and 2, respectively, it is also required that
1 b 2. If there is a bisimulation between G1 and G2 then the two graphs are said to be
bisimilar.</p>
        <p>
          Let us consider again the leftmost and center apgs of Figure 2. It is immediate to check
that the relation f(X11; X12); (X11; X22); (X11; X32)g is a bisimulation between them.
Remark 2.1 (Bisimulation and Isomorphism)
Let us observe that if b is required to be a bijective function then it is a graph isomorphism.
Establishing whether two graphs are isomorphic is an NP-problem neither proved to be
NPcomplete nor in P. Establishing whether G1 is isomorphic to a subgraph of G2 (subgraph
isomorphism) is NP-complete
          <xref ref-type="bibr" rid="ref6">(Cook 1971)</xref>
          . Establishing whether G1 is bisimilar to a
subgraph of G2 (subgraph bisimulation) is NP-complete
          <xref ref-type="bibr" rid="ref12 ref7">(Dovier and Piazza 2003)</xref>
          . Instead,
establishing whether G1 is bisimilar to G2 is in P (actually, O(jE1 + E2j log jN1 + N2j)—
          <xref ref-type="bibr" rid="ref24">(Paige and Tarjan 1987)</xref>
          ).
        </p>
        <p>
          In case G1 and G2 are the same graph G = hN; Ei, a bisimulation on G is a bisimulation
between G and G. It is immediate to see that there is a bisimulation between two apg’s
hG1; 1i and hG2; 2i if and only if there is a bisimulation b on the graph G = hf g [
N1 [ N2; f( ; 1); ( ; 2)g [ E1 [ E2i such that 1 b 2 (see, e.g.,
          <xref ref-type="bibr" rid="ref13">(Dovier et al. 2004)</xref>
          for a
proof). Therefore, we can focus on the bisimulations on a single graph; among them, we are
interested in computing the maximum bisimulation (i.e., the one maximizing the number
of pairs u b v). It can be shown that it is unique, it is an equivalence relation, and it contains
all other bisimulations on G. Therefore, we may restrict our search to bisimulations on G
that are equivalence relations on N such that:
(8u1; u2; v1 2 N ) u1 b u2 ^ hu1; v1i 2 E ) (9v2 2 N )(v1 b v2 ^ hu2; v2i 2 E)
(1)
Looking for equivalence (hence, symmetric) relations makes the case 2 of the definition
of bisimulation superfluous. We will use the following logical rewriting of (1) in some
encodings:
:(9u1; u2; v1 2 N ) u1bu2^hu1; v1i 2 E^: (9v2 2 N ) (v1bv2^hu2; v2i 2 E)
(10)
        </p>
        <p>The graph obtained by collapsing nodes according to the equivalence relation is the one
that allows us to obtain the apg decoration, using the following procedure:</p>
        <p>Let G = hhN; Ei; i be an apg. For each node i 2 N assign uniquely a variable Xi, then add
the equation Xi = fXj : (i; j) 2 Eg. The set of equations obtained defines the set decorating G,
that can be retrieved as the solution of X .</p>
        <p>Another characterization of the maximum bisimulation is based on the notion of
stability. Given a set N , a partition P of N is a collection of non-empty disjoint sets (blocks)
B1; B2; : : : such that Si Bi = N . If the number of blocks is k, we say that the partition
has size k. Let E be a binary relation on the set N , with E 1 = f(b; a) : (a; b) 2 Eg we
denote its inverse relation. If B N , we define E 1(B) = fa 2 N : (a; b) 2 E; b 2 Bg.</p>
        <p>A partition P of N is said to be stable with respect to E if and only if
(8B1 2 P )(8B2 2 P )(B1</p>
        <p>E 1(B2) _ B1 \ E 1(B2) = ;)
(2)
which is in turn equivalent to stating that there do not exist two blocks B1 2 P and B2 2 P
such that:
(9x 2 B1)(9y 2 B1) (x 2 E 1(B2) ^ y 2= E 1(B2))
(20)</p>
        <p>A partition P refines a partition Q if each block of P is contained in a block of Q. A
block B2 of P splits a block B1 of P if B1 is replaced in P by C1 = B1 \ E 1(B2) and
C2 = B1 n E 1(B2) and both of them are not empty. In this case B2 is called a splitter
(operationally, the split operation can be made even if one of them is empty; in this case it
is not added in P and B1 is replaced by itself, leading to a fix point). The split operation
produces a refinement of a partition P ; if P is stable with respect to E, no split operation
changes P .</p>
        <p>
          It can be shown that given a graph G = hN; Ei, starting from the partition P = fN g,
after at most jN j 1 split operations a procedure halts determining the coarsest stable
partition (CSP) w.r.t. E. Namely, the partition is stable and any other stable partition is a
refinement of it. Moreover, and this is relevant to our purposes, the CSP corresponds to the
partition induced by the maximum bisimulation, hence this algorithm can be employed to
compute it in polynomial time
          <xref ref-type="bibr" rid="ref24">(Paige and Tarjan 1987)</xref>
          .
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Logic Programming Encoding of Bisimulation</title>
      <p>We first focus on the logic programming declarative encoding of the definition of
bisimulation (1) or (10) and of the part needed for the maximum bisimulation on an input apg.
We impose that the relation is symmetric and reflexive. In the remaining part of the paper
we assume that apg’s are represented by facts node(1). node(2). ... for
enumerating the nodes, and facts edge(u,v). where u and v are nodes, for enumerating the
edges. For the sake of simplicity, we also assume that node 1 is the point of the apg.1
Prolog. The programming style used in the Prolog encoding is generate &amp; test. The core
of the encoding is reported in Figure 3. A bisimulation is represented by a list of pairs of
nodes (U; V ). Assuming a “guessed” bisimulation is given as input, for every guessed pair</p>
      <sec id="sec-3-1">
        <title>1 Complete codes are available in (Dovier 2015).</title>
        <p>the morphism property (1) is checked. As usual in Prolog, the “for all” property is
implemented by a recursive predicate (although a slightly more compact foreach statement is
available in most Prolog systems and will be used in successive encodings).</p>
        <p>bis/1 is called by a predicate that guesses a bisimulation of size at least k between
nodes, itself called by a meta predicate that increases the value of k until no solution
is found. The guess predicate forces all identities, all the pairs between nodes without
outgoing edges, and imposes symmetries; this extra part of the code is rather boring and
its code has been omitted. As a (weak) search strategy, the guess predicate tries first to
insert as much pairs as possible: this will explain the difference of computational times on
different benchmarks of the same size.</p>
        <p>CLP(FD). The programming style is constraint &amp; generate. In this case the
bisimulation is stored in a matrix, say B, of Boolean variables. B[i; j] = 1 means that i b j
(B[i; j] = 0 means that :(i b j)). We omit the definitions of the reflexivity predicate
that sets B[i; i] = 1 for all nodes i and of the symmetry predicate that sets B[i; j] =
B[j; i] for all pairs of nodes i and j. Let us focus on the morphism requirements (1).
morphism/2 collects all edges and nodes and calls morphismcheck/4 (Figure 4). This
predicate scans each edge (U 1; V 1) and each node U 2 and adds the property that if
B[U 1; U 2] = 1 then P(U2;V 2)2E B[V 1; V 2] 1. Let us observe that O(jEjjN j) of
these constraints are generated. We omit the definitions of some auxiliary predicates, such
as access(X,Y,B,N,BXY) that simply sets BXY = B[X,Y]. The whole encoding is
longer and perhaps less intuitive than the Prolog one. However, the search of the maximum
bisimulation is not delegated to a meta predicate as in Prolog, but it is encoded directly
into the maximize option of the labeling primitive. The “down” search strategy, trying to
assign 1 firstly, is similar to the strategy used in the Prolog code.</p>
        <p>
          ASP. ASP encodings allow us to define explicitly the bisimulation relation. Two rules are
added for forcing symmetry and reflexivity. Then a non-deterministic choice is added to
each pair of nodes. The great declarative advantage of ASP in this case is the availability
of constraint rules that allow us to express universal quantification (negation of existential
quantification). The morphism requirement (10) can be therefore encoded as it is, with the
unique addition of the node predicates needed for grounding (Figure 5). Then we define
the notion of representative nodes (the node of smallest index among those equivalent
to it) and minimize the number of them. This has proven to be much more efficient that
maximizing the size of bis. A final remark on the expected size of the grounding. Both
the constraint and the definition of one son bis range over all edges and another free
node: this generates a grounding of size O(jEjjN j).
co-LP. In this section we exploit a less standard logic programming dialect. Coinductive
Logic Programming (briefly co-LP) was introduced by
          <xref ref-type="bibr" rid="ref26">(Simon et al. 2006)</xref>
          and presented
in a concise way in
          <xref ref-type="bibr" rid="ref2 ref3 ref30 ref8">(Ancona and Dovier 2013; Ancona and Dovier 2015)</xref>
          , where
computability results and a simple operational semantics are provided. The difference with
respect to classical logic programming lays in the semantics: the maximum fixpoint of a
coinductive predicate is looked for, as opposite to the least fixpoint. Although this leads
to a non-recursively-enumerable semantics, the finiteness of the graphs makes this option
        </p>
        <p>% Recursively analyze B
bis([],_).
bis([ (U1,U2) |RB],B)
:successors(U1,SU1),
successors(U2,SU2),
allbis(SU1,SU2,B),
bis(RB,B).
allbis([],_,_).
allbis([V1 | SU1],SU2,B)
:member(V2,SU2),
member( (V1,V2),B),
allbis(SU1,SU2,B).</p>
        <p>%%% if U1 bis U2
%%% Collect the successors SU1 of U1
%%% Collect the successors SU2 of U2
%%% Then recursively consider SU1
%%% If V1 is a successor of U1
%%% there is a V2 successor of U2
%%% such that V1 bis V2
successors(X,SX) :- findall(Y,edge(X,Y),SX).
bis :- size(N), M is N*N, %%% Define the N * N Boolean
length(B,M), domain(B,0,1), %%% Matrix B
constraint(B,N), Max #= sum(B), %%% Max is the number of pairs
labeling([maximize(Max),ffc,down],B). %%% in the bisimulation
constraint(B,N) :- reflexivity(N,B), symmetry(1,2,N,B), morphism(N,B).
morphism(N,B)
:findall( (X,Y),edge(X,Y),EDGES),
foreach( E in EDGES, U2 in 1..N, morphismcheck(E,U2,N,B)).
morphismcheck( (U1,V1),U2,N,B)
:access(U1,U2,B,N,BU1U2), % Flag BU1U2 stands for (U1 B U2)
successors(U2, SuccU2), % Collect all edges (U2,V2)
collectlist(SuccU2,V1,N,B,BLIST),% BLIST contains all possible flags BV1V2
BU1U2 #=&lt; sum(BLIST). % If (U1 B U2) there is V2 s.t. (V1 B V2)
%% Minimization (max bisimulation)
non_rep_node(A) :- node(A;B), bis(A,B), B &lt; A.
rep_node(A) :- node(A), not non_rep_node(A).
numbernodes(N) :- N = #count{A : rep_node(A)}.
#minimize {N : numbernodes(N)}.
available for this problem. As a matter of fact, the piece of code reported in Figure 6
encodes the problem and, by looking for the maximum fixpoint, the maximum bisimulation is
computed without the need of additional minimization/maximization directives. bis and
allbis are declared as coinductive. The definition of successors is the same as in
Figure 3 and declared as inductive, as well as the member predicate.
bis(U,V) :- successors(U,SU), successors(V,SV),</p>
        <p>allbis(SU,SV), allbis(SV,SU).
allbis([],_ ).
allbis([U|R],SV )
:</p>
        <p>member(V,SV), bis(U,V), allbis(R,SV).
We focus first on the encoding of the definition of stable partition (2) and finally on the
(less declarative) computation of the CSP.</p>
        <p>Prolog. The programming style is generate &amp; test. A partition is a list of non-empty lists
of nodes (blocks). Sink nodes (if any) are deterministically set in the first block. Possible
partitions of increasing size are non-deterministically generated until the first stable one is
found. Once the partition is guessed, the verify part is made by a double selection of blocks
within the list of blocks. The main predicate that encodes property (2) is the following:
stablecond(B1,B2) :- edgeinv(B2,InvB2),</p>
        <p>(subseteq(B1,InvB2) ; emptyintersection(B1,InvB2)).
where edgeinv collects the nodes that enter into B2 (definable as findall(X,
(edge(X,Y), member(Y,B)), REVB)) while the two set-theoretic predicates are
defined through list operations.</p>
        <p>CLP(FD). In this case the data structure used is a mapping from nodes to blocks indexes,
stored as a list of finite domain variables. The set inclusion and empty intersection
requirements of (2) are not naturally implemented by a constraint &amp; generate style. As in the
previous CLP(FD) encoding maximization is forced by a parameter of the labeling; some
symmetry breaking is encoded (e.g.. sink nodes are deterministically forced to stay in
partition number one). In Figure 7 we only report the excerpt of the encoding, where we made
use of the foreach built-in. With a rough analysis, the number of constraints needed is
O(jN j3), but each constraint generated by alledge can be of size jN j itself.</p>
        <p>
          ASP. Also in this case ASP allows a concise encoding (Figure 8). The assignment is
implemented defining the predicate (used as function) inblock/2. The possibility of
reasoning “a posteriori” and the availability of the constraint rule allow us to naturally encode
the property (20). The remaining part of the code is devoted to symmetry breaking and
minimization of the number of blocks. The bottleneck for the grounding stage is the constraint
rule that might generate O(jN j4) ground instantiations.
flogg. The CLP language flogg, originally presented in
          <xref ref-type="bibr" rid="ref11">(Dovier et al. 1991)</xref>
          , populated
with several set-based constraints such as the disjoint constraint (disj—imposing empty
intersection) in
          <xref ref-type="bibr" rid="ref14">(Dovier et al. 2000)</xref>
          and later augmented with Finite Domain constraints
in
          <xref ref-type="bibr" rid="ref7">(Dal Palu` et al. 2003)</xref>
          , is a set-based extension of Prolog (and a particular case of
constraint logic programming language). Encoding the set-theoretic stable property (2) is
rather natural in this case (see Figure 9). subset ( ), disj (\ = ;), in (2) are built-in
constraints. Similarly, restricted universal quantifiers (forall(X in S, Goal)) (i.e.,
8X (X 2 S ! Goal) and intensional set formers (fX : Goal(X)g) are accepted.
        </p>
        <sec id="sec-3-1-1">
          <title>4.1 Computing the coarsest stable partition</title>
          <p>
            We have implemented the maximum fixpoint procedure for computing the coarsest stable
partition in Prolog. Initially nodes are split into (at most) two blocks: internal and not
internal nodes (i.e., sinks). For each node U , a list of pairs U -I is computed by stating that
U is assigned to block I. Then a possible splitter is found and, in case, a split is executed.
The procedure terminates in at most n 1 splitting steps where n is the number of nodes.
The Prolog code is available in
            <xref ref-type="bibr" rid="ref2 ref8">(Dovier 2015)</xref>
            ; we refer to it as MAXFIXPOINT in Figure 11.
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5 Experiments</title>
      <p>
        Although the focus of this work is on the expressivity of the declarative encoding (this
problem is solved by fast algorithms in literature, such as
        <xref ref-type="bibr" rid="ref13 ref24">(Paige and Tarjan 1987; Dovier
et al. 2004)</xref>
        ), we have reported the excerpt of the running times of the various proposed
encodings on some families of graphs, parametric on their number of nodes (Figure 10).
Results give us some additional information on the possibilities and on the intrinsic limits
of the logic programming dialects analyzed. All experiments were performed on a laptop
2.4GHz Intel Core i7, 8GB memory 1600MHz DDR3, OSX 10.10.3. The systems used are
B-Prolog Version 7.8#5
        <xref ref-type="bibr" rid="ref29">(Zhou 2012)</xref>
        , clingo 4.4.0
        <xref ref-type="bibr" rid="ref18">(Gebser et al. 2007)</xref>
        , and SWI Prolog
Version 6.4.1
        <xref ref-type="bibr" rid="ref28">(Wielemaker et al. 2012)</xref>
        . In particular, SWI Prolog was used in the co-LP
tests, thanks to its rational terms handling. On the other Prolog encodings, B-Prolog proved
to be 2 to 3 times faster than SWI and it has been therefore used. Speed-up increased still
further using tabling for the predicate edge. We tested the encodings on five families of
graphs G1–G5 parametric on the number of nodes n (see Figure 10).
      </p>
      <p>Graph G1 is an acyclic graph with n 1 edges, where n blocks are needed.
G2 is a cyclic graph with n nodes and edges. If n is even, just two blocks are
sufficient; if n is odd, n+1 blocks are needed. This is why in some experiments we have
2
two columns with this family of graphs.</p>
      <p>G3 is a binary tree populated following a breadth-first visit, with n 1 edges.
G4 is, in a sense, symmetrical w.r.t. G1: it is a complete graph with n2 edges but just
one block is sufficient.</p>
      <p>G5 is a multilevel (cyclic) graph.</p>
      <p>In Figure 11 the results for the graph G2 (which has been selected as a good
representative of the overall situation; e.g., both grounding and search times are sensible
G1</p>
      <p>G2 (n odd)</p>
      <sec id="sec-4-1">
        <title>G2 (n even)</title>
        <p>G3</p>
        <p>G5
in this family of graphs) are graphically summarized. Running times include
constraintgeneration/grounding time and search time. As far as the declarative, non procedural
encodings presented, the ASP encoding is a clear winner, while, as one might expect, the
Prolog implementation of the polynomial time algorithm is still better.</p>
        <p>
          All details for the five families of graphs are reported in the tables in
          <xref ref-type="bibr" rid="ref2 ref8">(Dovier 2015)</xref>
          .
        </p>
        <p>As anticipated, the ASP encoding is a clear winner. Prolog generate &amp; test and the co-LP
interpreter run in reasonable time on very small graphs only (Prolog is used without tabling,
tabling the edge predicate allows a speed-up of roughly 4 times). The CLP approach
becomes unpractical soon in the case of the complete graph G4 where the n2 edges generate
too many constraints for the stack size when n 50 (O(jEjjN j) constraints are added:
in this case they are O(n5); moreover each of those constraints includes a sum of n
elements). Let us observe that the complete graph G4 produces the highest grounding times in
the ASP case. Grounding size is expected O(jEjjN j) = O(n3) in this case. This has been
verified experimentally (table not reported); in particular, for G4; n = 200 the grounded
file (obtained with the option -t) is of size 275MB. Moreover, by a simple regression
analysis of our results, the time needed for grounding is shown to be proportional to n6 for
graph G4.</p>
        <p>With the enconding of the coarsest stable partition definition (2) the graphs that can be
handled by all approaches are smaller, and ASP is still a clear winner. We have omitted the
flogg running times. This system proved to be definitely the slowest; just to have an idea,
for G1, n = 5 the computation took roughly 5 hours.</p>
        <p>
          We conclude with testing the encoding of the polynomial time procedure of coarsest
stable partition computation by maximum fixpoint and splits. In graphs G2 and G3 tabling
the edge predicate improved the running time of two orders of magnitude (reported times
are those using tabling). As a further consideration, we started finding stack overflow for
n = 5000. Moreover, the experimental complexity detected by a regression analysis of
the results is O(jN j3) in all columns, which is rather good, considering the purely
declarative nature of the encoding (fast solvers such as
          <xref ref-type="bibr" rid="ref13">(Dovier et al. 2004)</xref>
          run in O(jN j) in
acyclic graphs such as G1 and G3, and in the cyclic multi-level graph G5, while they run
in O(jEj log jN j) = O(jN j2 log jN j) in the other cases.
Fig. 11. An overall picture on the computational results on graph G2. Encoding (1)—top, encoding
(2)—bottom. Logarithmic scales for axes have been used. y-axis reports runtimes in ms.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>6 Conclusions</title>
      <p>We have encoded the two properties characterizing the bisimulation definition, and in
particular, solving the maximum bisimulation problem, using some dialects of Logic
Programming. As a general remark, the guess &amp; verify style of Prolog (and of ASP) allows
us to define the characterizing properties to be verified ‘a posteriori’, on ground atoms. In
CLP instead, those properties are added as constraints to lists of values that are currently
non instantiated and this makes things much more involved, and has a negative impact on
code readability. The expressive power of the constraint rule of ASP allows a natural and
compact encoding of “for all” properties and this improves the conciseness of the encoding
(and readability in general); recursion must be used instead to it in Prolog and CLP. co-LP
(resp., flogg) allows us to write excellent code for property (1) (resp., property (2)).
However, since they are implemented adopting meta interpreters (naive in the case of co-LP)
their execution times are prohibitive for being used in practice.</p>
      <p>
        The ASP encoding is also the winner from the efficiency point of view, as far as a purely
declarative encoding of the a NP property on graphs is concerned. This would suggest to
the reader that this is the best dialect to be used to encode graph properties if a polynomial
time algorithm is not yet available (or it does not exist at all). This is not the case for
the maximum bisimulation problem where polynomial time algorithms for computing the
coarsest stable partition can be employed. The one implemented in Prolog (available in
        <xref ref-type="bibr" rid="ref2 ref8">(Dovier 2015)</xref>
        ) proved also to be the fastest approach presented in this paper.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>ACZEL</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <year>1988</year>
          .
          <article-title>Non-well-founded sets</article-title>
          .
          <source>CSLI Lecture Notes</source>
          ,
          <volume>14</volume>
          . Stanford University,
          <article-title>Center for the Study of Language and Information</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>ANCONA</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          AND DOVIER,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <year>2015</year>
          .
          <article-title>A theoretical perspective of coinductive logic programming</article-title>
          .
          <source>Fundamenta Informaticae</source>
          . To appear.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>ANCONA</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          AND DOVIER,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <year>2013</year>
          . co-LP:
          <article-title>Back to the Roots</article-title>
          .
          <source>TC at ICLP. TPLP 13</source>
          ,
          <issue>4</issue>
          -5-OnlineSupplement.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>BACKES</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>DOYCHEV</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          ,
          <article-title>AND</article-title>
          <string-name>
            <surname>K O¨PF</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <year>2013</year>
          .
          <article-title>Preventing side-channel leaks in web traffic: A formal approach</article-title>
          .
          <source>In 20th Annual Network and Distributed System Security Symposium, NDSS</source>
          <year>2013</year>
          , San Diego, California, USA, February
          <volume>24</volume>
          -
          <issue>27</issue>
          ,
          <year>2013</year>
          . The Internet Society.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>BAE</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>KRISILOFF</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>MESEGUER</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          , AND
          <string-name>
            <surname>O¨ LVECZKY</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. C.</surname>
          </string-name>
          <year>2015</year>
          .
          <article-title>Designing and verifying distributed cyber-physical systems using multirate PALS: an airplane turning control system case study</article-title>
          .
          <source>Sci. Comput</source>
          . Program.
          <volume>103</volume>
          ,
          <fpage>13</fpage>
          -
          <lpage>50</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>COOK</surname>
            ,
            <given-names>S. A.</given-names>
          </string-name>
          <year>1971</year>
          .
          <article-title>The complexity of theorem-proving procedures</article-title>
          .
          <source>In Proceedings of the 3rd Annual ACM Symposium on Theory of Computing, May 3-5</source>
          ,
          <year>1971</year>
          ,
          <string-name>
            <given-names>Shaker</given-names>
            <surname>Heights</surname>
          </string-name>
          , Ohio, USA,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Harrison</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. B.</given-names>
            <surname>Banerji</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and J. D.</given-names>
            <surname>Ullman</surname>
          </string-name>
          , Eds. ACM,
          <volume>151</volume>
          -
          <fpage>158</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>DAL PAL U`</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PONTELLI</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , AND ROSSI,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <year>2003</year>
          .
          <article-title>Integrating finite domain constraints and CLP with sets</article-title>
          .
          <source>In PPDP. ACM</source>
          ,
          <volume>219</volume>
          -
          <fpage>229</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <year>2015</year>
          .
          <article-title>Supplemental material on this paper</article-title>
          . University of Udine, CLP LAB. http: //clp.dimi.uniud.it/cobis/
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <year>2014</year>
          .
          <article-title>Set graphs VI: logic programming and bisimulation</article-title>
          .
          <source>In Proceedings of the 29th Italian Conference on Computational Logic</source>
          , Torino, Italy, June 16-18,
          <year>2014</year>
          .,
          <string-name>
            <given-names>L.</given-names>
            <surname>Giordano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Gliozzi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G. L.</given-names>
            <surname>Pozzato</surname>
          </string-name>
          , Eds.
          <source>CEUR Workshop Proceedings</source>
          , vol.
          <volume>1195</volume>
          . CEUR-WS.org,
          <volume>14</volume>
          -
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>FORMISANO</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , AND PONTELLI,
          <string-name>
            <surname>E.</surname>
          </string-name>
          <year>2009</year>
          .
          <article-title>An empirical study of constraint logic programming and answer set programming solutions of combinatorial problems</article-title>
          .
          <source>J. Exp. Theor. Artif. Intell</source>
          .
          <volume>21</volume>
          ,
          <issue>2</issue>
          ,
          <fpage>79</fpage>
          -
          <lpage>121</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>OMODEO</surname>
            ,
            <given-names>E. G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PONTELLI</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , AND ROSSI,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <year>1991</year>
          .
          <article-title>flogg: A Logic Programming Language with Finite Sets</article-title>
          .
          <source>In Proc of ICLP</source>
          , K. Furukawa, Ed. The MIT Press,
          <fpage>111</fpage>
          -
          <lpage>124</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          AND PIAZZA,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <year>2003</year>
          .
          <article-title>The subgraph bisimulation problem</article-title>
          .
          <source>IEEE Trans. Knowl. Data Eng</source>
          .
          <volume>15</volume>
          ,
          <issue>4</issue>
          ,
          <fpage>1055</fpage>
          -
          <lpage>1056</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PIAZZA</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , AND POLICRITI,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <year>2004</year>
          .
          <article-title>An efficient algorithm for computing bisimulation equivalence</article-title>
          .
          <source>Theoretical Computer Science</source>
          <volume>311</volume>
          ,
          <fpage>1</fpage>
          -
          <lpage>3</lpage>
          ,
          <fpage>221</fpage>
          -
          <lpage>256</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>DOVIER</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PIAZZA</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PONTELLI</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , AND ROSSI,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <year>2000</year>
          .
          <article-title>Sets and constraint logic programming</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst</source>
          .
          <volume>22</volume>
          ,
          <issue>5</issue>
          ,
          <fpage>861</fpage>
          -
          <lpage>931</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>DUNG</surname>
            ,
            <given-names>P. M.</given-names>
          </string-name>
          <year>1995</year>
          .
          <article-title>On the acceptability of arguments and its fundamental role in nonmonotonic reasoning, logic programming and n-person games</article-title>
          .
          <source>Artif. Intell</source>
          .
          <volume>77</volume>
          ,
          <issue>2</issue>
          ,
          <fpage>321</fpage>
          -
          <lpage>358</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>FISLER</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          AND VARDI,
          <string-name>
            <surname>M. Y.</surname>
          </string-name>
          <year>1999</year>
          .
          <article-title>Bisimulation and model checking</article-title>
          . In CHARME, L. Pierre and T. Kropf,
          <source>Eds. Lecture Notes in Computer Science</source>
          , vol.
          <volume>1703</volume>
          . Springer,
          <fpage>338</fpage>
          -
          <lpage>341</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>FLETCHER</surname>
            ,
            <given-names>G. H. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>GYSSENS</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>LEINDERS</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>SURINX</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>DEN</surname>
            <given-names>BUSSCHE</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J. V.</given-names>
            ,
            <surname>GUCHT</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. V.</given-names>
            ,
            <surname>VANSUMMEREN</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          , AND WU,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          <year>2015</year>
          .
          <article-title>Relative expressive power of navigational querying on graphs</article-title>
          .
          <source>Inf. Sci</source>
          .
          <volume>298</volume>
          ,
          <fpage>390</fpage>
          -
          <lpage>406</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <surname>GEBSER</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , KAUFMANN,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>NEUMANN</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          , AND SCHAUB,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <year>2007</year>
          .
          <article-title>clasp : A conflict-driven answer set solver</article-title>
          . In LPNMR, C. Baral, G. Brewka, and
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Schlipf</surname>
          </string-name>
          ,
          <source>Eds. Lecture Notes in Computer Science</source>
          , vol.
          <volume>4483</volume>
          . Springer,
          <fpage>260</fpage>
          -
          <lpage>265</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <string-name>
            <surname>GELFOND</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          AND
          <string-name>
            <surname>LIFSCHITZ</surname>
          </string-name>
          ,
          <string-name>
            <surname>V.</surname>
          </string-name>
          <year>1998</year>
          .
          <article-title>Action languages</article-title>
          .
          <source>Electron. Trans. Artif. Intell</source>
          .
          <volume>2</volume>
          ,
          <fpage>193</fpage>
          -
          <lpage>210</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <string-name>
            <surname>KUNEN</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <year>1980</year>
          . Set Theory. North Holland.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <string-name>
            <surname>MILNER</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <year>1980</year>
          .
          <source>A Calculus of Communicating Systems. Lecture Notes in Computer Science</source>
          , vol.
          <volume>92</volume>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <string-name>
            <surname>NISSIM</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>HOFFMANN</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          , AND HELMERT,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <year>2011</year>
          .
          <article-title>Computing perfect heuristics in polynomial time: On bisimulation and merge-and-shrink abstraction in optimal planning</article-title>
          .
          <source>In IJCAI 2011, Proceedings of the 22nd International Joint Conference on Artificial Intelligence</source>
          , Barcelona, Catalonia, Spain,
          <source>July 16-22</source>
          ,
          <year>2011</year>
          , T. Walsh, Ed.
          <source>IJCAI/AAAI</source>
          ,
          <fpage>1983</fpage>
          -
          <lpage>1990</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <surname>OMODEO</surname>
            ,
            <given-names>E. G. AND TOMESCU</given-names>
          </string-name>
          ,
          <string-name>
            <surname>A. I.</surname>
          </string-name>
          <year>2014</year>
          .
          <article-title>Set Graphs</article-title>
          . III.
          <article-title>Proof Pearl: Claw-Free Graphs Mirrored into Transitive Hereditarily Finite Sets</article-title>
          .
          <source>J. Autom. Reasoning</source>
          <volume>52</volume>
          ,
          <issue>1</issue>
          ,
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <surname>PAIGE</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          AND
          <string-name>
            <surname>TARJAN</surname>
          </string-name>
          ,
          <string-name>
            <surname>R. E.</surname>
          </string-name>
          <year>1987</year>
          .
          <article-title>Three partition refinement algorithms</article-title>
          .
          <source>SIAM J. Comput. 16</source>
          ,
          <issue>6</issue>
          ,
          <fpage>973</fpage>
          -
          <lpage>989</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <string-name>
            <surname>SANGIORGI</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <year>2009</year>
          .
          <article-title>On the origins of bisimulation and coinduction</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst</source>
          .
          <volume>31</volume>
          ,
          <issue>4</issue>
          (
          <issue>15</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>41</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          <string-name>
            <surname>SIMON</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>MALLYA</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>BANSAL</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , AND GUPTA,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <year>2006</year>
          .
          <article-title>Coinductive logic programming</article-title>
          .
          <source>In ICLP, S. Etalle and M. Truszczynski, Eds. Lecture Notes in Computer Science</source>
          , vol.
          <volume>4079</volume>
          . Springer,
          <fpage>330</fpage>
          -
          <lpage>345</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <string-name>
            <surname>VERA-RUIZ</surname>
            ,
            <given-names>V. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>LAU</surname>
            ,
            <given-names>K. W.</given-names>
          </string-name>
          , ROBINSON,
          <string-name>
            <surname>J.</surname>
          </string-name>
          , AND JERMIIN,
          <string-name>
            <surname>L. S.</surname>
          </string-name>
          <year>2014</year>
          .
          <article-title>Statistical tests to identify appropriate types of nucleotide sequence recoding in molecular phylogenetics</article-title>
          .
          <source>BMC Bioinformatics 15</source>
          , 2.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          <string-name>
            <surname>WIELEMAKER</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , SCHRIJVERS,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>TRISKA</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          ,
          <string-name>
            <surname>AND LAGER</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <year>2012</year>
          .
          <article-title>SWI-Prolog</article-title>
          .
          <source>TPLP 12</source>
          ,
          <issue>1</issue>
          -
          <fpage>2</fpage>
          ,
          <fpage>67</fpage>
          -
          <lpage>96</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          <string-name>
            <surname>ZHOU</surname>
            ,
            <given-names>N.-F.</given-names>
          </string-name>
          <year>2012</year>
          .
          <article-title>The language features and architecture of B-prolog</article-title>
          .
          <source>TPLP 12</source>
          ,
          <issue>1</issue>
          -
          <fpage>2</fpage>
          ,
          <fpage>189</fpage>
          -
          <lpage>218</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          <string-name>
            <surname>ZHOU</surname>
            ,
            <given-names>N.-F. AND DOVIER</given-names>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <year>2013</year>
          .
          <article-title>A tabled prolog program for solving sokoban</article-title>
          .
          <source>Fundam. Inform</source>
          .
          <volume>124</volume>
          ,
          <issue>4</issue>
          ,
          <fpage>561</fpage>
          -
          <lpage>575</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>