<!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>
      <journal-title-group>
        <journal-title>Udine, Italy
$ fdicosmo@unibz.it (F. Di Cosmo)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Verification of Prev-Free Communicating Datalog Processes</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Francesco Di Cosmo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Free University of Bozen-Bolzano</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>Communicating Datalog Programs (CDPs) are a distributed computing model grounded on logic programming, where networks of nodes perform Datalog-like computations, leveraging also on information coming from incoming messages and databases received from interactive external services. In previous works, the decidability and complexity border of verification for diferent variants of CDPs was charted. While the problem is undecidable in general, model-checking FO-CTL formulae (specialized to the distributed setting) is PSPACE-complete in data-complexity for CDPs where all data-sources, except the external inputs, are bounded. While an intuitive explanation for decidability is that "a bounded state is unable to fully take advantage of an unbounded input", a formal justification is missing. At closer inspection, we have noticed that CDPs have a limited capability of handling external inputs, i.e., they cannot compare two successive instances. Thus, an alternative explanation is that an unbounded data-source does per se not cause undecidability, as long as the CDP cannot compare two successive instances. In this short paper, we report about our work in progress on this problem.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Logic Programming</kwd>
        <kwd>Formal Verification</kwd>
        <kwd>Distributed Systems</kwd>
        <kwd>Decidability</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Declarative languages are appreciated for their capability of specifying queries and algorithms
in an elegant and succinct way. For that reason, in the last decades, Datalog-like languages
have been proposed as a programming language for distributed systems. Some examples are
Webdamlog [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], NDlog [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and Dedalus [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We loosely call this kind of model Declarative
Distributed Systems (DDSs). The data-centricity of Datalog-like languages makes the DDS
approach especially interesting also for modelling data-aware Business Processes [
        <xref ref-type="bibr" rid="ref4 ref5 ref6">4, 5, 6</xref>
        ]. In
fact, DDSs can be considered as a natural model for interdependent business processes in which
the identity of the data items is crucial and cannot be abstracted away.
      </p>
      <p>Since DDSs are formalized in logic, one can directly apply formal methods for verification.
However, the verification of data-aware systems is hard, since they can manipulate fresh data
provided by input databases (DBs) from external services, resulting in infinite state systems.
Unsurprisingly, verification of problems like control-state reachability is undecidable.</p>
      <p>
        Nevertheless, previous works [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] showed that decidability is gained when the active domains
of all data-sources, i.e., the DBs representing the inputs, the internal memory of the nodes,
and the channel configurations, are assumed bounded. A remarkable exception is the
datasource representing the interaction with dynamic external services. In fact, leaving this source
unbounded does not, per se, cause undecidability or a change in complexity. An intuitive
explanation is that an otherwise bounded DDS cannot make proper use of unbounded external
inputs.
      </p>
      <p>However, this fact could also depend on additional reasons, based on the peculiarity of the
interaction of DDSs with external sources, e.g., lack of queries over previously provided external
data. In fact, remarkably, the traditional DDS model assumes that nodes can query the previous
configuration of their internal memory but not the external inputs. Thus, it may be the case
that combinations of boundedness/unboundedness conditions and the ability/inability to query
previous instances of the data-sources may have an important impact on the decidability and
complexity boundary of verification problems for DDSs.</p>
      <p>
        In this paper, we report about our work in progress towards the study of this problem. To that
end, first, we consider a type of DDS, called Communicating Datalog Programs (CDP), already
studied by Calvanese et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. We consider all the fragments concerning addition/removal of
the boundedness condition and the ability/inability to query the previous configurations on
some data-sources. Finally, we sketch proofs to completely chart the decidability boundary for
the termination problem of all such fragments.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. CDPs</title>
      <p>
        We assume that the reader is familiar with the notion of Database (DB), under the logic
programming perspective, and with variants of the Datalog language (see [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] for an introduction),
specifically Datalog with stratified negation and inequality constraints. Here, we introduce
CDPs informally (the interested reader can refer to [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] for a formal definition).
      </p>
      <p>A CDP is a network of nodes running a program, in the Datalog-like language D2C, sharing
messages containing single facts. We assume that the network is a connected, reflexive, and
symmetric directed graph, where each edge represents a channel. Each node has access to a DB
containing its own name and the names of all its neighbors.</p>
      <p>Messages are sent on a channel (, ) from the source node  to the destination node .
They are single relational facts over a dedicated transport signature  . Messages are received
according to the asynchronous policy, i.e., at each computation step only one sent message is
delivered. A configuration for a channel represents the messages sent on the channel that have
not yet been received. In CDPs, channels are assumed to be unordered, i.e., messages are never
lost but the sending order may be diferent from the delivery one. 1 Thus, channel configurations
are assumed to be bag-DBs, i.e., a finite bag of facts.</p>
      <p>Next to channels, CDP nodes receive information from external services. This is modeled by
the availability to each node of an input DB over an input signature ℐ. We assume that the input
DB can freely change over time, i.e., at each computation step, the input DB may be updated to
a diferent (possibly unrelated) DB over ℐ. On top of that, nodes have a local memory, which
1This choice is in line with the fact that, in general, Datalog rules (responsible for the production of messages) do
not have to be computed in a specific order.
contains auxiliary information deduced by the node during the previous computation step. The
latter is stored in a state DB over a state signature .</p>
      <p>The reception of a message  at a node  triggers a new computation step.2 First,  is
removed from its channel. Then, while all other nodes remain inactive, i.e., their state DB is
not updated, the node  combines the input DB, its previously computed state DB, and the
message  labeled by the sender name  (i.e., a labeled transport fact @) in a single DB,
used as extensional data on which a D2C program is computed. The program returns a new state
DB and a set of outgoing messages labeled with destinations. Finally, the CDP configuration
is upadated by (1) updating the state DB of  with the new one and (2) adding the outgoing
messages (without addresses) to the respective channel configurations.</p>
      <p>
        A D2C program is a finite set of Datalog-like rules with special features to handle the reception
and sending of messages and the query of the previous state DB. Communication is handled
by labeling transport literals  with addresses , resulting in the formulas  @: in the body
of a rule, the address represents the node sending the incoming message; in the head, the
address represents the recipient of the outgoing message. To query the previous state DB, a
special flag prev is used: all predicates in its scope should be considered as ranging over the
(extensional) previous input, state, and locally received message, while all other predicates
should be considered as ranging over the (intensional) current state DB. Traditionally, it is
required that only state literals can occur in the scope of prev. In this paper, we allow all
literals, irrespective of their signature, to occur in the scope of prev. D2C rules can also make
use of inequality constraints and choice operators choice(X, Y) and choice(Y) a la Saccà and
Zaniolo [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. These are used to enforce functional dependencies  ↦→  and {} ↦→  (which is
used to select a single value for  ) in the tuples deduced by the rule.
      </p>
      <p>Finally, the D2C program must be stratified , i.e., stratified a la Datalog when the transport
predicates in the body and the predicates in the scope of prev are interpreted as extensional
predicates. Both stratification and formal semantics of the program can be formalized via
an encoding in traditional Datalog rules. Moreover, we assume that the payload of outgoing
messages is retrieved from the state DBs, so that it is not possible to directly transfer the active
domain of the input DB into the channels.</p>
      <p>We now define constraints on the various CDP data-sources, i.e., state, input, and channel. A
configuration is reachable if it can be obtained from the initial configuration in a finite number
of computation steps. Given a  ∈ N, we say that a CDP is -state bounded (or that the state
data-source is -bounded) if, for each reachable configuration  , the active domains of all
state DBs in  contain at most  constant. We say that it is -channel bounded (or that the
channel data-source is -bounded) if all the channel bag-DBs contain at most  facts (considering
multiplicities). A similar constraint can be put on the input. However, in this case, we have to
change the semantics of CDPs. Specifically, a -input bounded CDP is a CDP with the provision
that the available input DBs have active domain bounded by . A data-source is bounded if it is
-bounded for some . A CDP is bounded if all its data-sources are bounded.</p>
      <p>Given a CDP  with program Π , a data-source  is prev-free if there is no literal in the
signature of  that occurs in the scope of prev in some rule of Π . Otherwise, it is prev-aware.
2At startup, each self-loop channel contains a special activation message, used to trigger the first computation step.</p>
      <p>PF
B
B
D</p>
      <p>BPF
⊤
BPF
U</p>
      <p>BPF</p>
      <p>B
PF
U</p>
      <p>PF
PF
BPF
U
⊤
BPF
BPF
U</p>
      <p>B
B
B
D</p>
      <p>BPF
PF
PF
D</p>
      <p>BPF
BPF
⊤
U</p>
      <p>PF
BPF
PF
D</p>
      <p>B
BPF
PF
U</p>
      <p>B
PF
B
D</p>
    </sec>
    <sec id="sec-3">
      <title>3. Problem</title>
      <p>
        Previous results on the verification of CDPs showed that CTL DDS model checking is decidable
only if all the data-sources are bounded [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],3 with the only exception of the input data-source,
whose unboundedness is irrelevant. In all other cases, problems like control-state reachability,
termination, and convergence (expressible in CTLDDS) are undecidable. The decidability for
unbounded input can be explained by the fact that a bounded state cannot make proper use of
an unbounded input.
      </p>
      <p>However, the input data-source is unique in its kind because it is the only one on which it is
not possible to simulate a prev by exploiting the prev on the state, without violating state
boundedness assumptions. In other words, the absence, by definition, of prev over the input
data-source is not without loss of generality and may (1) motivate the unique impact of
inputunboundedness on decidability of verification and (2) prevent the formulation of interesting
CDP fragments, with decidable verification, based on combinations of boundedness conditions
and non-availability of the prev operator over the various data-sources.</p>
      <p>We name fragments by means of a triple of constraints on the various data-sources.
Specifically,  −  −  denotes the family of all CDPs whose input data-source is constrained by ,
whose state data-source is constrained by , and whose channel data-source is constrained by
. We consider four types of constraints: BPF enforces both boundedness and prev-freeness,
B enforces boundedness but not necessarily prev-freeness, PF enforces prev-freeness but not
necessarily boundedness, and ⊤ does not enforce any constraint. Thus, we are dealing with 64
fragments. We call them prev-based fragments.</p>
      <p>As verification task, we focus on the problem of termination4 because (1) this is one of
the problems that characterises the decidability status of model checking problems against
CTLDDS and (2) it is closely related with other problems, such as control-state reachability and
convergence.5</p>
      <p>
        The decidability of termination of some of these fragments is an immediate consequence of
the results by Calvanese et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. These are depicted in the first three columns of Table 1. We
sketch proofs to extend the known cases to the full picture in the table. It is easy to see that
3CTLDDS is a specialization of CTL-FO to the distributed setting of CDPs: labeled FO formulas are used to query the
node state DBs and channel bag-DBs, while CTL is used to analyze the temporal evolution.
4Termination asks whether there is a run that reaches a configuration where no node can be activated anymore.
5Since termination occurs when the channels are empty, termination over bounded states can be viewed as
controlstate reachability. Moreover, convergence, i.e., the reachability of a configuration from which the state DBs do not
change anymore, is a generalization of termination.
these cases are suficient to completely classify the decidability status of all 64 fragments, since
each other case is a fragment of a decidable one or an extension of an undecidable one.
      </p>
      <p>Finally, we focus on single-node networks. This comes without loss of generality, since any
arbitrary network can be encoded in a single-node network, at the cost of considering a sort of
disjoint union of the CDP signatures and program.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Proof Sketches</title>
      <p>PF-PF-BPF This fragment has undecidable termination, since, given a 2-counter machine
(2CM) , we can build a PF-PF-BPF CDP  that terminates if  terminates, which, in turn, is an
undecidable problem. This can be done by encoding finite runs of  in input DBs. By exploiting
the unbounded state DB, we can write a program Π that does not make use of prev such that,
as soon as an input DB  is received, it produces a terminate flag if  encodes a terminating
run of . In this case, no message is sent on the channel (making it empty). Otherwise, foo
messages will be sent on the channel forever. The program Π exists because it can make use
of an unbounded state DB, which can be used to compute, most notably, transitive closures of
unbounded graphs in input DBs.
⊤-BFP-BPF Also this fragment has undecidable termination. In fact, we can modify the
previous technique by scattering the provision of a 2CM run along many steps. Specifically, we
can encode the next configuration of the (unbounded) counters of  in the input DB and use
prev on the input to check whether the new configuration can be reached via a transition of
. If this test fails, non-termination is triggered as above. Otherwise, termination is triggered
only if the final state of  is reached.</p>
      <p>
        B-B-B This fragment has decidable termination. In fact, since all data-sources are bounded,
we can use the same technique as for BPF-B-BPF CDPs by Calvanese et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] (Theorem 1). The
idea is that, because of boundedness, it is possible to finitely represent CDP configurations up to
isomorphisms. The possible prev-awareness of all data-sources simply results in an extension
of the abstracted representation of the data-sources, but does not afect the applicability of the
method.
      </p>
      <p>
        BPF-PF-PF This fragment has decidable termination. Since the state is prev-free, the new state
contains only constants from the incoming message (which are in bounded number because the
transport signature has a maximal finite arity) and from the input DB, which is bounded. Thus,
also the state is bounded. Notice that, since all sources are prev-free, the name of constants in
the messages on the channel are irrelevant. Thus, we can abstract away the messages up to
isomorphisms. Since each message contains a bounded number of constants, they result in a
ifnite family of messages. We interpret them as non-terminal symbols of a context free grammar
(CFG). The reception of one of these symbols results in the production of a (possibly empty)
set of non-terminal symbols, by sending outgoing (abstracted) messages. Thus, the program
can be encoded in a finite number of production rules, defining a CFG. Hence, termination of
BPF-PF-PF CDPs reduces to the emptyness problem of CFGs, which is decidable.
BPF-BPF-⊤ This fragment has undecidable termination. The idea is that we can, at each
step, encode in the unbounded channel an arbitrary natural number. This can be achieved via a
binary predicate succ, maintaining a structure of the form: succ(min, n0), . . . , succ(nm, max)
where min and max are special constants mentioned in the program and the nis are pairwise
diferent constants retrieved from the input. By exploiting the prev-awareness of the channel
and exploiting a technique similar to the one from Theorem 2 in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], the node is able to scan
the full content of the channel in order to understand whether a constant  retrieved from the
input is actually fresh or not. To maintain the constant  across multiple steps, we have to
incorporate it in the last sent message and expect to receive it in the next one. This could be
done by exploiting a ternary version of succ and the prev-awareness of the channel. Similarly,
we can further extend the arity of succ in order to encode and maintain also the state and
counters configuration of a 2CM. As in the previous case, only when reaching the terminal state
of the 2CM, CDP termination is triggered.
      </p>
      <p>
        PF-BPF-PF This fragment has decidable termination. In fact, we can extend the technique
from Theorem 4 in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] to abstract away the unbounded input DB in front of a bounded state
DB. The idea is that a bounded state can only make use of an unbounded input to (1) retrieve
a bounded number of constants and (2) answer a finite set of Boolean queries, which behave
as guards to rules of the D2C program. By abstracting away the input with the value of those
constants and queries, the fragment boils down to BPF-BPF-PF, whose decidability directly
follows from that of the BPF-PF-PF fragment.
      </p>
      <p>B-BPF-PF This fragment has undecidable termination. In fact, we can use the prev on
the input to simulate a prev on the channels. It sufices to require that the current received
message is also mentioned in the current input DB. If that is not the case, an error is deduced
and non-termination is triggered. Thus, this fragment can encode an extension of BPF-BPF-⊤,
which was argued to be undecidable.</p>
      <p>B-PF-B This fragment has decidable termination. In fact as in a previous case, the state turns
out to be bounded, thus boiling down to the decidable fragment B-BPF-B.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions</title>
      <p>
        We have sketched proofs to establish the decidability status of termination for 8 prev-based
fragments. Together with the previous results in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], these can be generalized to categorize
all 64 fragments. In our opinion, the most surprising result is the one about BPF-BPF-⊤, since
prev-awareness on the channel data-source, on which the node has a very limited control,
returns undecidability. The results above enable a fine-grained discussion on the interaction of
boundedness and prev-freeness. As a preliminary remark, we can conclude that the principle
that “unboundedness causes undecidability only in front of prev” is not completely correct,
because of the undecidability of the fragment B-BPF-PF, which has an unbounded but prev-free
channel. However, in that case, we obtained undecidability by simulating prev on the channel
by using prev on the input. Notice that the opposite is not true, in the sense that it is not
possible to use prev on the channel to simulate prev on the input (PF-BPF-B is decidable). This
indicates that the principle regulating the interaction between boundedness and prev-freenes is
sensitive to the nature of the constrained data-sources.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>É.</given-names>
            <surname>Antoine</surname>
          </string-name>
          ,
          <article-title>Distributed data management with a declarative rule-based language Webdamlog. (Gestion des données distribuées avec le langage de règles Webdamlog)</article-title>
          ,
          <source>Ph.D. thesis</source>
          , University of Paris-Sud, Orsay, France,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B. T.</given-names>
            <surname>Loo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Condie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Hellerstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Maniatis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Roscoe</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Stoica</surname>
          </string-name>
          ,
          <article-title>Implementing declarative overlays</article-title>
          , in: A.
          <string-name>
            <surname>Herbert</surname>
            ,
            <given-names>K. P.</given-names>
          </string-name>
          Birman (Eds.),
          <source>Proceedings of the 20th ACM Symposium on Operating Systems Principles (SOSP)</source>
          , Brighton, UK,
          <source>October 23-26</source>
          ,
          <year>2005</year>
          , ACM,
          <year>2005</year>
          , pp.
          <fpage>75</fpage>
          -
          <lpage>90</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Alvaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. R.</given-names>
            <surname>Marczak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Conway</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Hellerstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sears</surname>
          </string-name>
          ,
          <article-title>Dedalus: Datalog in time and space</article-title>
          , in: O. de Moor, G. Gottlob,
          <string-name>
            <given-names>T.</given-names>
            <surname>Furche</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Sellers</surname>
          </string-name>
          (Eds.), Datalog Reloaded - First International Workshop,
          <year>Datalog 2010</year>
          , Oxford, UK, March
          <volume>16</volume>
          -19,
          <year>2010</year>
          .
          <source>Revised Selected Papers</source>
          , volume
          <volume>6702</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2010</year>
          , pp.
          <fpage>262</fpage>
          -
          <lpage>281</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Deutsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Sui</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vianu</surname>
          </string-name>
          ,
          <article-title>Specification and verification of data-driven web applications</article-title>
          ,
          <source>J. Comput. Syst. Sci</source>
          .
          <volume>73</volume>
          (
          <year>2007</year>
          )
          <fpage>442</fpage>
          -
          <lpage>474</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Belardinelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lomuscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Patrizi</surname>
          </string-name>
          ,
          <article-title>An abstraction technique for the verification of artifact-centric systems</article-title>
          , in: G. Brewka,
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A</given-names>
            .
            <surname>McIlraith</surname>
          </string-name>
          (Eds.),
          <source>Principles of Knowledge Representation and Reasoning: Proceedings of the Thirteenth International Conference, KR 2012</source>
          , Rome, Italy, June 10-14,
          <year>2012</year>
          , AAAI Press,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B. B.</given-names>
            <surname>Hariri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Calvanese</surname>
          </string-name>
          , G. De Giacomo,
          <string-name>
            <given-names>A.</given-names>
            <surname>Deutsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Montali</surname>
          </string-name>
          ,
          <article-title>Verification of relational data-centric dynamic systems with external services</article-title>
          , in: R.
          <string-name>
            <surname>Hull</surname>
          </string-name>
          , W. Fan (Eds.),
          <source>Proceedings of the 32nd ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems (PODS)</source>
          , New York, NY, USA - June 22 - 27,
          <year>2013</year>
          , ACM,
          <year>2013</year>
          , pp.
          <fpage>163</fpage>
          -
          <lpage>174</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Calvanese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Di Cosmo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lobo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Montali</surname>
          </string-name>
          ,
          <article-title>Convergence verification of declarative distributed systems</article-title>
          , in: S.
          <string-name>
            <surname>Monica</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Bergenti</surname>
          </string-name>
          (Eds.),
          <source>Proceedings of the 36th Italian Conference on Computational Logic</source>
          , Parma, Italy, September 7-
          <issue>9</issue>
          ,
          <year>2021</year>
          , volume
          <volume>3002</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>62</fpage>
          -
          <lpage>76</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Abiteboul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vianu</surname>
          </string-name>
          , Foundations of Databases, Addison-Wesley,
          <year>1995</year>
          . URL: http://webdam.inria.fr/Alice/.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Saccà</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          ,
          <article-title>Stable models and non-determinism in logic programs with negation</article-title>
          , in: D. J.
          <string-name>
            <surname>Rosenkrantz</surname>
          </string-name>
          , Y. Sagiv (Eds.),
          <source>Proceedings of the Ninth ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, April 2-4</source>
          ,
          <year>1990</year>
          , Nashville, Tennessee, USA, ACM Press,
          <year>1990</year>
          , pp.
          <fpage>205</fpage>
          -
          <lpage>217</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>