<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Convergence Verification of Declarative Distributed Systems</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Diego</forename><surname>Calvanese</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Free University of Bozen-Bolzano</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Francesco</forename><forename type="middle">Di</forename><surname>Cosmo</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Free University of Bozen-Bolzano</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Jorge</forename><surname>Lobo</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution">University of Pompeu Fabra</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Marco</forename><surname>Montali</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Free University of Bozen-Bolzano</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Convergence Verification of Declarative Distributed Systems</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">C5529C6DD2CC5624101D158AB00B8B59</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T20:40+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Logic-based languages, such as Datalog and Answer Set Programming, have been recently put forward as a data-centric model to effectively specify and implement network services and protocols, seeing them as dynamic systems of distributed computational nodes where each node evolves an internal database and exchanges data with the other nodes of the network. This approach provides the basis for declarative distributed computing. However, a rigorous, comprehensive characterization of the decidability and complexity of verification in declarative distributed systems is yet to come. This paper charts the decidability border of the verification of convergence properties, considering the case where the network is a fixed connected graph, nodes can incorporate fresh data from the external world into the system, and can communicate asynchronously by means of reliable but unordered channels.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>In the past years we have seen how declarative database query languages, such as Datalog, can naturally be used to specify and implement network services and protocols <ref type="bibr" target="#b18">[19]</ref>. The approach, referred to as declarative networking <ref type="bibr" target="#b4">[5]</ref>, makes the specifications of complex network protocols concise, intuitive, and directly executable through distributed query processing algorithms <ref type="bibr" target="#b24">[25]</ref>. The compilation of the rules constituting the specification into actual implementations performs well when compared with imperative C/C++ implementations of the same protocols <ref type="bibr" target="#b19">[20]</ref>. Applications for declarative networking go far beyond network protocols, and languages and techniques developed in this setting provide the basis for declarative distributed computing. This paradigm has been used for security and provenance in distributed query processing <ref type="bibr" target="#b28">[29,</ref><ref type="bibr" target="#b29">30]</ref>, in the analysis of asynchronous event systems <ref type="bibr" target="#b1">[2]</ref>, and as the core of the Webdam language for distributed Web applications <ref type="bibr" target="#b2">[3]</ref>. We refer to these systems as declarative distributed systems (ddss).</p><p>There are several variants of concrete languages for specifying ddss <ref type="bibr" target="#b19">[20,</ref><ref type="bibr" target="#b3">4,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b21">22]</ref>, but their common denominator is data-centricity: computations in a single node are limited to evaluations of queries on a relational database (DB), and messages passed between nodes are snippets of DBs, providing a close correspondence between the programs and a formal specification in logic of their computation. This facilitates the development of program analysis tools <ref type="bibr" target="#b25">[26,</ref><ref type="bibr" target="#b21">22]</ref>. However, in spite of several studies on the foundations of ddss <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b7">8]</ref>, a rigorous, comprehensive characterization of the decidability and complexity of verification in such systems, is yet to come. On the one hand, verification techniques and tools for ddss have been exploited in various settings, but providing only an empirical/experimental assessment <ref type="bibr" target="#b25">[26,</ref><ref type="bibr" target="#b21">22,</ref><ref type="bibr" target="#b11">12,</ref><ref type="bibr" target="#b12">13]</ref>. On the other hand, formal models for ddss have been mainly developed to study their ability to compute queries in a distributed manner, and not to assess their temporal/dynamic evolution <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b5">6]</ref>. Instead, in this paper we provide a step towards a formal, systematic characterization of verification of ddss by focusing on convergence properties. We show that, in general, verification is undecidable even for specific convergence properties and extremely limited, single-node ddss. To tame this strong negative result, we leverage on the notion of state-boundedness <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b8">9]</ref>, and detail the decidability frontier of verification when a bound is imposed on the system data-sources.</p><p>In the next Section 2 we introduce the dds model, provide its execution semantics, and define the verification problem over convergence properties. In Section 3 we chart the decidability boundary of verification of convergence. Finally, Section 4 provides the conclusions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Declarative Distributed Systems</head><p>The general computational model of ddss can be described as a network of uniquely identified nodes, each running an input/output state machine, where outputs of some machines become inputs of others <ref type="bibr" target="#b20">[21]</ref>. We assume familiarity with Datalog and the stable model semantics <ref type="bibr" target="#b14">[15]</ref> and adopt the standard conventions: variables are denoted with uppercase letters, constants by lowercase letters, and ' ' is used as a placeholder for an anonymous variable (i.e., one that does not appear elsewhere in the rule).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Computational Model in a Node</head><p>A state in the state machine of a node is represented by a (relational) DB. As customary, a DB defines a set of relations conforming to a given schema. A DB schema is a finite set of relation schemas R/n, with a relation name R and an arity n, representing the number of components (or attributes) it contains. By a slight abuse of notation, sometimes we drop the arity and interchangeably use the same symbol to indicate the relation schema and its name. We fix a countable data domain ∆ denoting an infinite set of constants. An instance of a relation schema R/n is a finite set of n-tuples over ∆, and a DB is the union of relation instances over its schema. Given a DB instance I, we denote by adom(I) the active domain of I, that is the (finite) set of constants explicitly appearing in I.</p><p>State transitions occur when the node receives inputs, in the form of DBs, from external components (such as applications running in the node, or humans), and/or from state machines running in other nodes. A state change can also produce an output in the form of a DB that can be delivered to another node fact by fact. Thus, every node has an input schema I, a state schema S, and a transport schema T . The latter is used to communicate between nodes. Let I, S, and T denote all possible instances of I, S, and T , respectively. The state transition mapping in a node is a subset of S × T × I × S × T: given a pair (S , T ) of state and transport DBs, and an input DB I , the transition results in a new pair (S n , T n ) of state and transport DBs.</p><p>Specifically, that mapping is specified by means of d2c, a declarative programming language introduced in <ref type="bibr" target="#b21">[22]</ref>, which is an extension of plain Datalog, enhanced with process communication and state changes capabilities. A state transition mapping in d2c is defined by rules of the form:</p><formula xml:id="formula_0">H if L 1 , . . . , L n , prev L n+1 , . . . , L m , C</formula><p>Like in Datalog, H is the head atom, but in d2c it is possibly annotated with a term of the form @t, where t is a variable or constant from a fixed domain in the language used to identify nodes (concretely, such domain would correspond to objects such as IP addresses or URLs). The L i s are literals (i.e., atoms or negated atoms), again possibly annotated with a term of the form @t. Finally, C is a set of (in)equality constraints over variables and constants.</p><p>The predicate names follow the standard correspondence of predicates and DB tables made by Datalog. All variables appearing in H, in C, or in any negated atom inside a rule must also appear in a non-negated atom among the L i s of the same rule<ref type="foot" target="#foot_0">3</ref> . The name of annotated atoms must correspond to relation names in the transport schema T of the node, and only names that correspond to transport or state tables can appear in H. Informally, a ground instance h if l 1 , . . . , l n , prev l n+1 , . . . , l m , c of a rule says that h is in the current state or is an output of the current state if l 1 , . . . , l n are true in the current state, l n+1 , . . . , l m were true in the previous state, and c is valid. As in Datalog with negation, we make the usual assumption on the stratification of negated atoms in l 1 , . . . , l n w.r.t. h, so that the transition mapping can be computed using the standard Datalog fixpoint evaluation of Datalog. Notice that the literals in the prev scope do not concur to determine stratification, since they are over a fixed database already computed in the previous computation step. Also annotated predicates are not involved in stratification, since they address incoming messages received in the form of an extensional DB fact. The meaning of an annotation depends on whether it appears in the head or the body of a rule: in the former case, it indicates the destination of the transport tuple, in the latter it points to the source.</p><p>Example 1. Consider the input predicate echo/2, state predicate alive/1, and transport predicate say/1. Rule say(M)@D if echo(M, D) models that the node sends m to the node with ID d (if it is a node neighbor) when the corresponding echo(m, d) fact is given as input. M and D are variables, which in this case are bound to constants m and d respectively. Rule alive(S) if say(M)@S models that the node adds to its state the information that node s is alive, whenever the transport tuple say(m) is received from node s. Rule say(M)@Src if say(M)@Src "echoes" the say tuple back to the source node.</p><p>To support also non-deterministic transitions, D2C features the special predicate choice by Saccà and Zaniolo <ref type="bibr" target="#b26">[27]</ref>, where choice(X, Y) is a positive atom among the literals L 1 , . . . , L n . Variables X and Y must appear also in another positive atom among the L i s, and once we fix X, a single value for Y is chosen by picking it inside the set of all values that can substitute it, so as to enforce a functional dependency X −→ Y. Also the variant choice(Y) is admitted, to enforce a functional dependency with trivial domain. It is known that the data complexity of finding a stable model of a Datalog program with choice remains polynomial <ref type="bibr" target="#b15">[16]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">The Network Model</head><p>A dds relies on an underlying network N of communicating nodes, each running a d2c program. In distributed computing, N is typically represented as a graph V, A , where V are the computation nodes, and the arcs in A reflect the ability to communicate according to the physical network configuration. Directed arcs denote non-symmetric communication.</p><p>There is a complex spectrum of different network models, depending on the topology of the graph, the degree of mobility of nodes, and on which extent the network may vary over time. Here we consider networks with (i) fixed topology; (ii) bidirectional communication channels; (iii) strongly connected nodes; (iv) the ability for every node to communicate with itself. This class of networks can be represented by fixed undirected, connected graphs, where each node has a self-loop. From now on, we always assume that the network is in this class. To make nodes aware of their own name and that of their neighbors, each node has the following rules:</p><formula xml:id="formula_1">my name(M) if prev my name(M). neighbor(N) if prev neighbor(N).</formula><p>This information is read-only, so no other rule can use my name and neighbor in its head.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">DDS Formal Model</head><p>We now formalize ddss adopting homogeneous nodes, i.e., all nodes run the same program. This also means that the local DB schemas are the same for all nodes.</p><p>Still, the behavior of different nodes might diverge over time, depending on: (i) their location in the network, (ii) the presence of non-deterministic choices in the program, and (iii) the data obtained from the interaction with other nodes and with the external world. A dds M is a tuple N , I, T , S, P, D 0 , where:</p><p>• N is the network graph (obeying to the assumptions of Section 2.2); • I, T , and S respectively denote the input, transport, and state schemas of every node in M; • P is the d2c program run by every node in M; • D 0 is a local state DB over S representing the initial state of each node, and so that it assigns no tuples to my name and neighbor (these are in fact implicitly set differently for each node, depending on the network topology); its active domain is denoted by ∆ 0 , while its extension with node names is denoted by</p><formula xml:id="formula_2">∆ 0,M</formula><p>Commonly, the execution semantics of dynamic systems over relational data is given in terms of a relational transition system (RTS), i.e., a transition system where each state is labeled by a DB, representing the configuration of the current memory of the system in that state <ref type="bibr" target="#b27">[28]</ref>. However, in our distributed setting, such a global memory should account for two peculiar local aspects. On the one hand, it needs to store the current local configuration of nodes in the network, and so it contains one DB per node. On the other hand, it must track the state of the network in terms of messages being exchanged (and not yet processed by their recipient nodes). The representation of this latter aspect depends on the chosen communication model and, in turn, how communication channels operate. Hence, we represent communication channels using a generic data structure C T defined over the transport schema T . Given a pair of connected nodes i and j in the network, each local channel configuration stores the state of the communication channel linking i and j, by instantiating C T to store the pending messages present in the network that have been sent by i and have not yet been received/processed by j. We denote by C the set of all possible instantiations of C T . Once the communication model is fixed, this abstract data structure is grounded into a specific one, which must suitably reflect the functioning of the communication mode in terms of ordering and reliability. For example, queue T indicates an order-preserving, reliable communication channel over pairs of nodes, while multiset T represents an unordered, reliable communication channel where messages sent in a given order may be processed in reverse.</p><p>To account for those local aspects, we reorganize the global memory into many local ones attached to nodes and channels. Technically, given a dds N , I, T , S, P, D 0 with N = V, A , and given a data structure C T over T for communication, the execution semantics of the dds under C T is given via a so-called distributed RTS (DRTS) Υ of the form N , ∆, S, T , Σ, σ 0 , ndb, nch, ⇒ , where:</p><formula xml:id="formula_3">• Σ is a (possibly infinite) set of states; • σ 0 ∈ Σ is the initial state;</formula><p>• ndb is a function that, given a state σ ∈ Σ and a node n ∈ V , returns a corresponding DB instance of S over ∆ for n;</p><p>• nch is a function that, given a state σ ∈ Σ and two nodes n 1 , n 2 ∈ V such that n 1 , n 2 ∈ A, returns an instance of C T storing the pending messages from n 1 to n 2 ;</p><formula xml:id="formula_4">• ⇒ ⊆ Σ × Σ is a transition relation between states.</formula><p>Υ is serial if, for every state σ ∈ Σ, there exists σ ∈ Σ such that σ ⇒ σ . Notice that the input schema and databases are not mentioned in the general DRT S definition, but will be used later to define concrete transition relations. Moreover, in case the instantiations of C T can be represented by means of a DB, it is possible to boil down a DRTS to a standard RTS by labeling states with the disjoint union of all the state and channel DBs mentioned in the DRTS states.</p><p>To build a DRTS capturing the execution semantics of a dds M, one has to choose which communication model is used by M to handle the exchange of messages in the network, and how does M interact with the external users that exchange data with the computation nodes. Specifically, we consider the relevant setting where communication is reliable and asynchronous, i.e., messages are never lost and message exchanges occur independently from each other. Consistently with the fact that each transport atom in a D2C program is attached to a sender/receiver, each message consists of a single transport fact.</p><p>As for user interaction, nodes may receive a new input DB when they start processing an incoming message. We call ddss obeying to that input-policy interactive ddss (iddss). Coupling the processing of input DBs with that of incoming messages is without loss of generality, since a node may send dummy messages to itself just to signal that it is ready to process a user input.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4">Execution Semantics</head><p>Due to the aforementioned asynchronicity and reliability, we can assume that, at each computation step, only one node reacts to the delivery of an incoming message. Within the computed result, there may be transport facts labeled with corresponding destination nodes; these are all simultaneously emitted, and will be asynchronously received by their respective recipient nodes fact by fact. Since we assume no guarantees on the order in which messages are received, communication can be abstractly captured by equipping each node with one message multiset per neighbor. Hence, from now on, we always assume that the data structure for communication channel is multiset, and make use of the usual operators to manipulate and inspect multisets. Relying on multisets instead of sets is important to capture the fact that two distinct messages exchanged between the same two nodes and carrying exactly the same payload may be both on their way to the recipient node.</p><p>The dds evolution is then captured by iterating through these steps:</p><p>• a non-empty multiset is non-deterministically picked, non-deterministically extracting a message M . • the destination node performs a computation step triggered by M , possibly considering also external input data;</p><p>• the node state is updated and the produced messages are inserted in the corresponding destination multiset.</p><p>Formally, given a program P , an input DB I, a previous state DB S, and a labeled transport tuple t@n, we denote by state(P, I, S, t@n) the new state database computed by the program P over S∪I∪{t@n}, by transp(P, I, S, t@n, d) the set of computed output tuples (over the trasnport signature) labeled by @d, and by transp ↓ (P, I, S, t@n, d) the set of tuples in transp(P, I, S, t@n, d) where the label @d has been dropped. Let M = N , I, T , S, P, D 0 be a dds system whose network is N = V, A . To formalize the execution semantics, we introduce a relation c-step M that substantiates the generic state transition mapping introduced in Section 2.1:</p><formula xml:id="formula_5">c-step M ⊆ n∈V S × a∈A C × A × I × n∈V S × a∈A C</formula><p>Specifically, given S, S ∈ n∈V S, and C, C ∈ n∈V C, a channel (s, d) ∈ A, and an input database I ∈ I, we have that S, C, (s, d), I, S , C ∈ c-step M if and only if there exists a message tuple t ∈ C (s,d) such that:</p><formula xml:id="formula_6">S n = state(P, I, S, t@s) if n = d S n otherwise C (n,m) =      C (s,d) \ {t} if n = s and m = d C (d,m) ∪ transp ↓ (P, I, S n , t@d, m) if n = d C (n,m)</formula><p>otherwise Finally, we define the transition system of M, written Υ int M , as the DRTS N , ∆, S, T , Σ, σ 0 , ndb, nch, ⇒ , where:</p><formula xml:id="formula_7">-Σ ⊂ n∈V S× a∈A C and, for each σ ∈ Σ of the form σ = ((S n ) n∈V , ((C c ) c∈A )), ndb(σ, n) = S n and nch(σ, s, d) = C (s,d) ; -σ 0 = ((D 0 ) n∈V , (C c ) c∈A ), where C (s,d) = ∅ if s = d and C(s, d) = {start}</formula><p>otherwise, where start is a special 0-ary transport tuple used to guarantee at least one computation step to each node; -The extensions of Σ and ⇒ are defined by simultaneous induction as follows:</p><p>1.</p><formula xml:id="formula_8">σ 0 ∈ Σ; 2. if (S, C) ∈ Σ, then, for each S, C, (s, d), I, S , C ∈ c-step M , it is true that (S , C ) ∈ Σ and (S, C) ⇒ (S , C ). 3. if (S, C) ∈ Σ and, for each c ∈ A, C c = ∅, then (S, C) ⇒ (S, C).</formula><p>Notice that ⇒ is guaranteed to be serial.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5">Convergence Properties</head><p>Convergence is a generalization of termination for ddss, indicating that the distributed computation run by the whole dds eventually reaches a stable situation where all nodes are quiescent, i.e., do not change anymore their state DBs. This typically occurs when no messages are exchanged. However, we want to rule out those cases in which quiescence is reached because one or more nodes stop their computation due to an error (e.g., because the node has received an unexpected message/input, or has entered an undesired state). We assume that a node declares that it is faulty by inserting the special flag error in its state. Under this assumption, d2c programs employ error to indicate under which circumstances a node becomes faulty.</p><p>Convergence properties are then defined by mixing two dimensions: (i) number of faulty nodes in a run, with the two extreme cases of total (no faulty node) vs partial (at least one non-faulty node) correctness; (ii) quantification over runs, considering the case in which the dds sometimes (i.e., for at least one run) vs always (i.e., for all runs) converges. Given a dds M, this gives rise to four variants of convergence:</p><p>-M sometimes converges with total correctness if there exists a run of M eventually reaching a state where all nodes are quiescent, and none is faulty. -M sometimes converges with partial correctness if there exists a run of M eventually reaching a state where all nodes are quiescent, and at least one is not faulty. -M always converges with total correctness if every run in which all nodes of M stay non-faulty eventually converges.</p><p>-M always converges with partial correctness if every run in which at least one node of M stays non-faulty eventually converges. Moreover, convergence properties can be formulated in sophisticated logics that allow to specify properties over the data flowing in the DDS and the DDS temporal behavior. A suitable language over RTSs is FO-CTL, which mixes firstorder (FO) logic with the computation three logic (CTL). It is possible to adapt that logic to DRTSs, called DDS − CT L. That can be achieved by exploiting some D2C rule to transfer the previous state configuration into a copy in the current one, using the verification formula to check that the two available state configurations are identical and, finally, using temporal operators to propagate that condition in time. Thus, the next undecidability results apply also to that DDS-CTL, but also the decidability proofs can be extended to address the full language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Convergence Verification of IDDS</head><p>While input, state, and transport schemas are fixed in advance, the extension of such relations is not, and could grow unboundedly over time. If no bound is imposed on the data manipulated by the dds, verification of convergence properties is undecidable even for a single-node dds <ref type="bibr" target="#b8">[9]</ref>.</p><p>Taking inspiration from the well-studied notion of state-boundedness <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b8">9,</ref><ref type="bibr" target="#b9">10]</ref>, we hence study how decidability is affected when a (pre-defined and known) bound is imposed on the different information sources of the dds. Specifically, given an integer b, we say that a dds M is input b-bounded if the input DB is constrained to mention at most b values during each single step, i.e., the cardinality of the input database active domain is always at most b. In this case, unboundedly many values can still be input over time, provided that they do not accumulate in a single computation step. When the fixed value b is understood or arbitrary, we simply talk about boundedness. We define state b-bounded (state-bounded ) and transport b-bounded (transport-bounded ) ddss analogously. However, this time the constraints are a consequence of the combination of the dds program and of the constraints on the input.</p><p>A bound independent from the network size fits with the idea that the declarative programs run by nodes are not tailored to a specific network. Moreover, state-boundedness does not interfere with the information each node has about its neighbors, since our networks are fixed, thus the relation neighbor is trivially bounded by the fixed number of nodes (cf. Section 2.2). In fact, the next decidability results deal with network complexity, i.e., the complexity of the global initial configuration projected over the neighbor and my name predicates. Thus, the data complexity of the initial configuration incorporates the network complexity.</p><p>Additionally, a channel b-bounded (channel-bounded ) condition imposes a similar constraint on the channel multiset cardinality, i.e., in any reachable configuration there are at most b facts laying on any channel. In channel-bounded ddss the instantiations of the multiset channel data-structure can be represented by means of a finite DB, since the multiplicity of messages is bounded and a finite domain of constants suffice to represent them. Thus, in this case, the respective DRTSs can be translated into standard RTSs. We also say that the whole dds is bounded if all of its information sources are so, i.e., it is input-, state-, transport-, and channel-bounded at the same time.</p><p>In our analysis, a key observation is that the notion of uniformity <ref type="bibr" target="#b10">[11]</ref> can be straightforwardly recast for ddss. Intuitively, uniformity (corresponding to genericity in databases) states that the dynamics of a dds M are invariant under permutation of values in the node DBs, modulo the finite subset ∆ 0,M of ∆: the system exhibits the same behavior (modulo renaming of values) when nodes compute over isomorphic DBs. Technically, we recast the notion of uniformity in <ref type="bibr" target="#b10">[11]</ref> to the case of ddss as follows. Given two DBs D 1 , D 2 over schema R with |adom(D 1 )| = |adom(D 2 )|, we say that D 1 and D 2 are isomorphic if there exists a bijection h :</p><formula xml:id="formula_9">∆ 1 −→ ∆ 2 , with adom(D 1 ) ⊆ ∆ 1 and adom(D 2 ) ⊆ ∆ 2 , such that for every relation R/n ∈ R and every fact R(d 1 , . . . , d n ) ∈ D 1 , we have R(h(d 1 ), . . . , h(d n )) ∈ D 2 .</formula><p>With some abuse of notation, in this case we write D 2 = h(D 1 ). With this notion at hand, given a channel-bounded dds M with DRTS Υ M = N , ∆, S, T , Σ, σ 0 , ndb, nch, ⇒ , we say that Υ M is uniform if for every σ, σ next , σ ∈ Σ and every pair D = ((S n ) n∈V , ((C c ) c∈A )) ∈ n∈V S × a∈A C, where C c is a DB instance of the multiset data-structure over ∆: if 1. σ ⇒ σ next ; 2. the number of constants mentioned in σ and σ next together is the same as that of constants mentioned in σ and D;</p><p>3. there exists a bijection ∆ −→ ∆ that fixes ∆ 0,M and maps each node DB and channel DB of σ and σ next into those of σ and D, thus enforcing an isomorphism over all components of the various states and D;</p><p>then D ∈ Σ and σ ⇒ D. Making use of uniformity, we get:</p><p>Theorem 1. Verification of convergence properties over bounded i ddss is decidable in pspace in the network size.</p><p>Proof (sketch). First of all, it can be easily proven that ddss are uniform. Uniformity comes from the fact that: (i) d2c is based on Datalog, which, as virtually all DB query languages, enjoys genericity; (ii) external inputs are provided "uniformly", i.e., whenever an input DB is delivered to a node, there is an alternative execution in which the node receives an isomorphic variant of the same input. For a uniform dynamic system, with a pre-defined bound on the size of its DBs, thus including the RTS version of the DRTSs of bounded-dds, verification of FO-CTL properties, including translations of convergence, is decidable with a pspace (tight) bound in data complexity <ref type="bibr" target="#b10">[11]</ref>, which in our case comprises also the size of the network. The intuition behind the decidability proof in <ref type="bibr" target="#b10">[11]</ref>, is that given an RTS Υ i M and a FO-CTL property Φ, a finite domain</p><formula xml:id="formula_10">∆ f ⊂ ∆ (with ∆ 0,M ⊆ ∆ f ) can be found such that Υ i M |= Φ iff Θ i M |= Φ, where: (i) Υ i M</formula><p>is the RTS version of the DRTS of M; (ii) Θ i M is the RTS obtained by applying the same construction for Υ i M but using the finite domain ∆ f instead of ∆. Note that Θ i M is finite-state, hence the standard on-the-fly model checking algorithm for CTL can be applied to check whether Φ holds.</p><p>We next show that bounding the channel multisets is necessary towards decidability of verification over iddss.</p><p>Theorem 2. Verification of convergence over input-and state-bounded i ddss is undecidable, even when the dds employs: (i) a single-node network; (ii) a single unary, 1-bounded input relation; (iii) 0-ary state relations; (iv) two 2-ary transport relations.</p><p>Proof (sketch). The proof is via a reduction from the undecidable halting problem of deterministic 2-counter machines <ref type="bibr" target="#b22">[23]</ref> to convergence of iddss as in the theorem statement. The 2-counter machine M states are encoded in the dds state by means of 0-ary state predicates (state-flags). The counters are encoded in the node self-loop channel as the lengths of two cyclic graphs whose edges are specified by the transport relations counter1/2 and counter2/2, respectively. The initial dds state DB contains the state-flag encoding the initial state of M.</p><p>At the first computation step the node, say named me, sends to himself two messages: counter1(me, me) and counter2(me, me). Then, the program triggers the increment and conditional decrement instructions according to the current dds state-flag.</p><p>To increment a counter, say counter 1, the node extracts a single constant from the current input DB, checks whether it is fresh with respect to the counter, and, in that case, puts the fresh constant in the appropriate cyclic graph. To perform the freshness test, the node expects to receive (and then sends it back on the channel), fact by fact, the counter1 cyclic-graph in the right order, i.e. from counter1(me, ) to counter1( , me). In case the input constant was not available in the input DB, i.e., the DB was empty, or it already appeared in the incoming message, i.e., it was not fresh, or the incoming message is a counter2 or an unexpected counter1 message, the node enters in an error state.</p><p>To perform a conditional decrement on a counter, say again counter 1, the node expects to receive a counter1 message. If it is a counter1(me, me) message, then the node sends back the message and detects that the counter is zero. If the message is a different counter1 message, the node stores it in the state, expects to receive the next counter1 edge and then sends back only one edge where the middle constant has been dropped. Again, in case unexpected messages are delivered, the node enters in an error state.</p><p>After performing each increment or decrement instruction, the node transitions to the next state. In case the error state is reached, the node starts sending at each step a foo/0 message, whose reception triggers a random state transition (excluding the final state of M and the dds current state-flag). Thus, M terminates if and only if the dds sometimes (always) converges with total (partial) correctness.</p><p>Considering Theorem 2, in the following we assume that ddss are channelbounded. Notice that channel-boundedness implies transport-boundedness, since at each computation step the whole transport DB is always sent in the reliable channel. This means that it makes no sense to study the verification of ddss that are channel-bounded but not transport-bounded. Thus, we consider now what happens when the dds is input-and transport-bounded, but have unconstrained state.</p><p>Theorem 3. Verification of convergence over input-and channel-bounded i ddss is undecidable, even when i dds employs: (i) a single computation node; (ii) a single unary, 1-bounded input relation; (iii) Two 1-ary state relations. (iv) a single 0-ary transport relation; Proof (sketch). The proof is similar to that of theorem 2, but the counters of M are now encoded in the state of M by means of two state predicates counter1/1 and counter2/1. The node continually sends to himself a wakeup/0 message, unless it reaches the final state of M. Thus, the channel gets empty, causing the dds to trivially converge, if and only if the dds reaches the final state of M.</p><p>In this case, freshness and zero checks can be done in one step by means of a couple of D2C rules that inspect the state DB. In case the freshness check fails or the input constant is not available, the node enters in a state error as above, triggering a run that never converges. Hence, M terminates if and only if the dds sometimes (always) converges with total (partial) correctness.</p><p>We investigate now what happens when the state DBs and channels are bounded, but the input is not. This is a subtle case: unboundedly many input data can be delivered to a node, but not inserted into its state/transport. In fact:</p><p>Theorem 4. Verification of convergence properties over state-and channelbounded i ddss is in pspace in the network size.</p><p>Proof. Let M be an iddss, with DRTS N , ∆, S, T , Σ, σ 0 , ndb, nch, ⇒ , whose state and transport are, together, bounded by b, and let ϕ be a convergence property. While Υ could be infinite, we can specify and build a finite DRTS Υ equivalent to Υ under ϕ. Thus, to check whether Υ |= ϕ amounts to check whether Υ |= ϕ.</p><p>Let vars(ϕ) and Con be the set of variables and constants, respectively, occurring in ϕ. Fix a set C ⊂ ∆ of 2b + |vars(ϕ)| + |Con| constants, disjoint from those in ∆ 0M , i.e., the initial state active domain, and call ∆ = ∆ 0,M ∪ C. Then, Υ is the DRTS N , ∆, S, T , Σ , σ 0 , ndb , nch , ⇒ such that: (i) Σ is the set of all the states σ ∈ Σ such that the set of constants mentioned in σ are at most b and all contained in ∆ ; (ii) ndb , nch , and ⇒ are the restrictions to Σ of ndb, nch, and ⇒ respectively. Since both the schemas S and T , and the domain ∆ are finite, also Σ is finite, so that Υ is a finite DRTS. Moreover, since |∆ | ≥ 2b + |Con| + |vars(ϕ)| and Υ is uniform (see proof 1), it is possible to adapt Th. 3.18 in <ref type="bibr" target="#b10">[11]</ref> to obtain that the RTS versions of Υ and Υ are equivalent under ϕ. In fact, recall that those RTS versions exist because, since the channels are bounded, the instances of the channel multisets can be encoded in a DB. We now show a procedure to effectively build Υ from M: we will compute a number of grounded versions of the program of M, which can be recursively applied starting from σ 0 up to a fix-point to build Υ .</p><p>Given a rule in a D2C program, we call input-, state-, and transport-variables those variables occurring only in input-, state-, and transport-predicates respectively. While the semantics of D2C requires a preliminary full grounding of the rules under the state and the input DBs active domains, we start by grounding only the state-and transport-variables with constants in the (finite) full domain ∆ of Υ , resulting in the program P . Its variables occur only in input-predicates, hence the heads are fully grounded in ∆ . Nevertheless, the resulting program is suitable to compute all the transitions in Υ since, by construction, each state in Υ has a DB over ∆ .</p><p>While we should ground also the input-variables with constants in the unconstrained input domains, we can avoid it by noting that they act like variables in a Boolean query over the input, independent of the grounded part of the program. Specifically, for each semi-grounded rule ρ in P with at least one variable, consider the existential closure q ρ of the conjunction of all input literals in ρ. These q i form a finite family of existential sentences. The effect of an input DB I is just to discard those rules ρ such that I |= q ρ . To capture the effects of all possible input DBs at once, we initialize a table with one column for each q ρ and populate it with all the distinct rows r j containing a possible sequence of the symbols and ⊥. For each row r j in the table, consider the conjunction of: (i) all q ρ such that the corresponding cell contains , and (ii) of all ¬q ρ such that the corresponding cell contains ⊥. Written in negative normal form, this is a conjunction of existential and universal sentences, which can be transformed into a prenex formula Ξ j of the form ∃ ≤n ∀ ≤n , where n is the number of all variables in P times the number of queries q ρ . This is a fragment of the Bernays-Schönfinkel class enjoying a finite satisfiablity problem in nexptime in the length of the sentence, but in O(1) in the network size. If the sentence Ξ j is not satisfiable in the finite, then there is no input DB enabling the effects described by r j , thus it has to be deleted from the table. Otherwise, it has to be retained. After this pruning, for each row r j consider the fully-grounded subprogram P j of P containing only those rules ρ, pruned of the input predicates, such that the corresponding cell in r j contains . If the body results empty, fill it with true.</p><p>Given a state σ in Υ , the finite family of programs P j , with no input predicates, capture the effects of all the infinitely many input DBs. Thus, to compute a successor of a given configuration in Σ , it is sufficient to compute a stable model of a program P j over the configuration DB, which can be done in ptime in data complexity. Thus, by applying on-the-fly verification techniques for finite RTSs against FO-CTL, which can express convergence translated over those RTSs, we can check Υ in npspace in data complexity, which amounts to pspace.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Conclusions</head><p>In the wide spectrum of declarative distributed computing, we have formalized and studied verification of convergence in the important case of reliable communication with unordered asynchronous communication and interactive input policy. While the problem is undecidable in general, decidability can be regained by imposing boundedness conditions on the channels and state DBs.</p><p>We foresee two main lines of future research. First, we plan to build on our foundational results to implement verification techniques for dds cases with decidable verification . To this aim, we will rely on existing ASP techniques for d2c, and in particular on the implementation in <ref type="bibr" target="#b17">[18]</ref>, which can simulate runs of ddss according to our formalization. Remarkably, those cases are all channel-bounded, and thus pose no problem for the implementation of the multiset channels. However, great care should be put in handling the message passing mechanism, since the reception of a random incoming message requires to analyze many different branches, resulting in a bottleneck. Moreover, the technique in the proof for theorem 4 could be exploited to abstract away the interaction policy, thus avoiding the necessity of providing random input DBs at each step. Second, we want to study how our verification results carry over the setting in which the network topology can change, both with respect to node connection, and for what concerns the creation and deactivation of computation nodes. In this light, it is worth noting that, following the approach in <ref type="bibr" target="#b23">[24]</ref>, the results here presented can be seamlessly generalized to the case where node connections are arbitrarily changed over time, and nodes can be created and deactived, provided that their overall number does not exceed a pre-defined bound. On the other hand, the case where unboundedly many computation nodes can be created is left for interesting future work. In fact, we intend to leverage parameterized verification <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b13">14]</ref> to study data-centric distributed systems whose topology can change over time in an unbounded, but controlled way, i.e., respecting certain patterns (see, for example, <ref type="bibr" target="#b12">[13]</ref>, where constraints about topology structures are added to the specification).</p><p>We are also interested in exploring the complexity of weaker properties besides convergence, like safety and liveness.</p></div>			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">We can relax this requirement for negated atoms containing anonymous variables. Consider in particular a negated atom not P ( X, . . . , ) appearing in a rule where variables X also appear in positive atoms. Such an atom can be replaced by not N ( X), where N is a fresh predicate, provided we introduce the additional rule N ( X) if P ( X, , . . . , ).</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Approximated parameterized verification of infinite-state processes with global conditions</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Abdulla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rezine</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Formal Methods in System Design</title>
		<imprint>
			<biblScope unit="volume">34</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="126" to="156" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Diagnosis of asynchronous discrete event systems: Datalog to the rescue!</title>
		<author>
			<persName><forename type="first">S</forename><surname>Abiteboul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Abrams</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Haar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Milo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 24th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 24th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="358" to="367" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">A rule-based language for web data management</title>
		<author>
			<persName><forename type="first">S</forename><surname>Abiteboul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Bienvenu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Galland</surname></persName>
		</author>
		<author>
			<persName><forename type="first">É</forename><surname>Antoine</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 30th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 30th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="293" to="304" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">A declarative semantics for Dedalus</title>
		<author>
			<persName><forename type="first">P</forename><surname>Alvaro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">J</forename><surname>Ameloot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Hellerstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Marczak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Van Den Bussche</surname></persName>
		</author>
		<ptr target="http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-120.html" />
		<imprint>
			<date type="published" when="2011-11">Nov 2011</date>
		</imprint>
		<respStmt>
			<orgName>EECS Department, University of California, Berkeley</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Tech. Rep. UCB/EECS-2011-120</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Declarative networking: Recent theoretical work on coordination, correctness, and declarative semantics</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">J</forename><surname>Ameloot</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMOD Record</title>
		<imprint>
			<biblScope unit="volume">43</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="5" to="16" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Parallelcorrectness and transferability for conjunctive queries</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">J</forename><surname>Ameloot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Geck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Ketsman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schwentick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 34th ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 34th ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="47" to="58" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Weaker forms of monotonicity for declarative networking: A more fine-grained answer to the CALM-conjecture</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">J</forename><surname>Ameloot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Ketsman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Zinn</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 33rd ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 33rd ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="64" to="75" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Relational transducers for declarative networking</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">J</forename><surname>Ameloot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Neven</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Van Den Bussche</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. of the ACM</title>
		<imprint>
			<biblScope unit="volume">60</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page">38</biblScope>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Verification of relational data-centric dynamic systems with external services</title>
		<author>
			<persName><forename type="first">B</forename><surname>Bagheri Hariri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Calvanese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>De Giacomo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Deutsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Montali</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 32nd ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 32nd ACM SIGACT SIGMOD SIGAI Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="163" to="174" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">State-boundedness in data-aware dynamic systems</title>
		<author>
			<persName><forename type="first">B</forename><surname>Bagheri Hariri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Calvanese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Deutsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Montali</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 14th Int. Conf. on the Principles of Knowledge Representation and Reasoning (KR)</title>
				<meeting>of the 14th Int. Conf. on the Principles of Knowledge Representation and Reasoning (KR)</meeting>
		<imprint>
			<publisher>AAAI Press</publisher>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Verification of agent-based artifact systems</title>
		<author>
			<persName><forename type="first">F</forename><surname>Belardinelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lomuscio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Patrizi</surname></persName>
		</author>
		<idno type="DOI">10.1613/jair.4424</idno>
		<ptr target="https://doi.org/10.1613/jair.4424" />
	</analytic>
	<monogr>
		<title level="j">J. of Artificial Intelligence Research</title>
		<imprint>
			<biblScope unit="volume">51</biblScope>
			<biblScope unit="page" from="333" to="376" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">A program logic for verifying secure routing protocols</title>
		<author>
			<persName><forename type="first">C</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Jia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Xu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Luo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">34th IFIP Int. Conf. on Formal Techniques for Distributed Objects, Components and Systems (FORTE</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014. 2014</date>
			<biblScope unit="volume">8461</biblScope>
			<biblScope unit="page" from="117" to="132" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Automated verification of safety properties of declarative networking programs</title>
		<author>
			<persName><forename type="first">C</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">K</forename><surname>Loh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Jia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 17th Int. Symposium on Principles and Practice of Declarative Programming (PPDP)</title>
				<meeting>of the 17th Int. Symposium on Principles and Practice of Declarative Programming (PPDP)</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="79" to="90" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Parameterized verification of broadcast networks of register automata</title>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Sangnier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Traverso</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 7th Int. Workshop on Reachability Problems (RP)</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<meeting>of the 7th Int. Workshop on Reachability Problems (RP)</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8169</biblScope>
			<biblScope unit="page" from="109" to="121" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">The stable model semantics for logic programming</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gelfond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Lifschitz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 5th Int. Conf. on Logic Programming (ICLP)</title>
				<meeting>of the 5th Int. Conf. on Logic Programming (ICLP)</meeting>
		<imprint>
			<publisher>The MIT Press</publisher>
			<date type="published" when="1988">1988</date>
			<biblScope unit="page" from="1070" to="1080" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Datalog with non-deterministic choice computes NDB-PTIME</title>
		<author>
			<persName><forename type="first">F</forename><surname>Giannotti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Pedreschi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. of Logic Programming</title>
		<imprint>
			<biblScope unit="volume">35</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="79" to="101" />
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">The declarative imperative: Experiences and conjectures in distributed logic</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Hellerstein</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMOD Record</title>
		<imprint>
			<biblScope unit="volume">39</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="5" to="19" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Distributed state machines: A declarative framework for the management of distributed systems</title>
		<author>
			<persName><forename type="first">J</forename><surname>Lobo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Wood</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Verma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Calo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 8th Int. Conf. on Network and Service Management (CNSM)</title>
				<meeting>of the 8th Int. Conf. on Network and Service Management (CNSM)</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="224" to="228" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Declarative networking</title>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Condie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Garofalakis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">E</forename><surname>Gay</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Hellerstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Maniatis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Ramakrishnan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Roscoe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Stoica</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">52</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="87" to="95" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Implementing declarative overlays</title>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Condie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Hellerstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Maniatis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Roscoe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Stoica</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Operating Systems Review</title>
		<imprint>
			<biblScope unit="volume">39</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="75" to="90" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">Distributed Algorithms</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">A</forename><surname>Lynch</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1996">1996</date>
			<publisher>Morgan Kaufmann</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">A declarative approach to distributed computing: Specification, execution and analysis</title>
		<author>
			<persName><forename type="first">J</forename><surname>Ma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Le</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Wood</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Russo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Lobo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Theory and Practice of Logic Programming</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="815" to="830" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<title level="m" type="main">Computation: Finite and Infinite Machines</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">L</forename><surname>Minsky</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1967">1967</date>
			<publisher>Prentice-Hall</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Verification of data-aware commitment-based multiagent systems</title>
		<author>
			<persName><forename type="first">M</forename><surname>Montali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Calvanese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>De Giacomo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 13th Int. Conf. on Autonomous Agents and Multiagent Systems (AAMAS)</title>
				<meeting>of the 13th Int. Conf. on Autonomous Agents and Multiagent Systems (AAMAS)</meeting>
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="157" to="164" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Maintaining distributed logic programs incrementally</title>
		<author>
			<persName><forename type="first">V</forename><surname>Nigam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Jia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Scedrov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Languages, Systems &amp; Structures</title>
		<imprint>
			<biblScope unit="volume">38</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="158" to="180" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">FSR: Formal analysis and implementation toolkit for safe inter-domain routing</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Ren</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Jia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">J</forename><surname>Gurney</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Rexford</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Communication Review</title>
		<imprint>
			<biblScope unit="volume">41</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="440" to="441" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Stable models and non-determinism in logic programs with negation</title>
		<author>
			<persName><forename type="first">D</forename><surname>Saccà</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Zaniolo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 9th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</title>
				<meeting>of the 9th ACM SIGACT SIGMOD SIGART Symp. on Principles of Database Systems (PODS)</meeting>
		<imprint>
			<date type="published" when="1990">1990</date>
			<biblScope unit="page" from="205" to="217" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Model checking for database theoreticians</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Vardi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the 10th Int. Conf. on Database Theory (ICDT)</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<meeting>of the 10th Int. Conf. on Database Theory (ICDT)</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="volume">3363</biblScope>
			<biblScope unit="page" from="1" to="16" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Collaborative access control in WebdamLog</title>
		<author>
			<persName><forename type="first">Zaychik</forename><surname>Moffitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Stoyanovich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Abiteboul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Miklau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the ACM SIGMOD Int. Conf. on Management of Data</title>
				<meeting>of the ACM SIGMOD Int. Conf. on Management of Data</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="197" to="211" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Distributed time-aware provenance</title>
		<author>
			<persName><forename type="first">W</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mapara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Ren</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Haeberlen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Ives</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">T</forename><surname>Loo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sherr</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of the VLDB Endowment</title>
				<meeting>of the VLDB Endowment</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="volume">6</biblScope>
			<biblScope unit="page" from="49" to="60" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
