<!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>Workshop on Artificial Intelligence and Formal Verification, Logics, Automata and Synthesis (OVERLAY),
Rende, Italy, November</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Towards the Automated Verification of Publish/Subscribe Networks</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Giorgio Delzanno</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DIBRIS, University of Genova</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <volume>1</volume>
      <fpage>9</fpage>
      <lpage>20</lpage>
      <abstract>
        <p>We present a formal model of publish/subscribe network architectures in which a central communication broker is in charge of distributing messages to clients subscribed to certain topics. We consider different semantics for the internal structured of the server and for the notification phase. We discuss applicability of an SMT-based infinite-state model checker to the proposed model and decidability results for abstractions obtained hiding the internal structure of a server.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>are confined in the local data of worker threads. In our setting the shared data consists of the current
subscribers list. Copy-on-write data structures [30] are a possible implementation of this synchronisation
techniques that can be used to avoid race conditions on shared data structures. Copy-on-write data
structures are particularly useful when book-keeping session data in a distributed application. Indeed
they automatically produce a snapshot of the share data structures (lists, sets, etc) when combined with
iterators (i.e. to scan a set/list) . The semantics of copy-on-write concurrent data structures typically
provide a mechanism to generate snapshots on demand (e.g. when an iterator needs to scan the structure)
producing an exception (that will be handled by the user) in case of simultaneous read and write access
from multiple threads. In our model we will not model exception handling and assume that snapshots
are generated and confined in a worker thread when necessary. Extending the semantics towards a more
complex modeling of copy-on-write is an interesting direction for refining the model. The use of worker
threads allows us to model the publishing of a message asynchronously w.r.t. to other operations executed
on the server (e.g. registration of new clients, etc). Under the considered semantics for copy-on-write
data structures, we will then show that computations in the resulting model can be transformed into
round-based executions that are simpler to analyse (they reduce the number of possible interleavings)
with respect to a more liberal interleaving model.
2</p>
    </sec>
    <sec id="sec-2">
      <title>How to Formally Model Publish/Subscribe Networks</title>
      <p>We use Id to denote a denumerable set of identifiers of client instances. Furthermore, we define Q as the
finite set of client state labels, A as the finite set of action labels, and M as the finite set of message
labels. For brevity, we assume that action labels have one of the following form: local, that denotes a local
transition, subscribe, that denotes a subscription request, unsubscribe, that denotes an unsubscription
request, publish(m) with m ∈ M , that denotes a publish request for message m ∈ M .</p>
      <p>The above listed type of actions are strictly related to the communication model typical of
publish/subscribe architecture based on a client-server architecture in which every message is delivered to
all subscribers via a central server (or, more in general, via a cluster/federation of servers). A client
specification P is a tuple hQ, q0, Ri, where Q is a finite set of states, q0 ∈ Q is the initial state, and
R ⊆ Q × A × Q defines state transitions induced by action labels. In other words a client specification
can be viewed as a finite state automata with labelled transitions that statically define its behaviour.</p>
      <sec id="sec-2-1">
        <title>Client Configuration</title>
        <p>A client configuration is a tuple hi, s, b, f i, where i ∈ Id is the client identifier generated after a connection
request, s ∈ Q is the current client state, b ∈ 2M is the set of messages received so far, and f ∈ {&gt;, ⊥}
is a flag that defines the connection status of the client with respect to the global network, namely &gt;
corresponds to the normal operating status, whereas ⊥ corresponds to a disconnection event. We assume
that disconnected clients cannot roll back to a normal status, i.e., when they restart they will be assigned a
new identifier, their internal state being completely reset. The client specification hQ, q0, Ri can naturally
be extended with enabling conditions for transitions in R based on the presence of certain messages in the
current message list (e.g. hq1, local, q2i only if message m1, . . . , mr have already been received). We will
not discuss this extension in this paper.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Server Configuration</title>
        <p>For a fixed n ≥ 1, a server configuration is defined by a tuple hL, W1, . . . , Wni, where L ∈ 2Id is a finite set
of identifers that represents the list of subscribed clients and, for each i : 1, . . . , n with n &gt; 1, Wi represents
the current state of the i-th worker thread used by the server to deliver messages. More specifically, Wi
can be either ⊥ or hmi, Rii with mi ∈ M and Ri ⊆ 2Id. In the former case it denotes an idle thread,
whereas in the latter it denotes initialized threads in which Ri is the current snapshot of the subscription
list, and mi is the message to be delivered. The use of a snapshot R of the current subscription list
of the server is based on implementations of read/write operations on shared data structures based on
snapshots/copy-on-write data structutes used in concurrent programming to avoid race conditions. The
initialisation of a worker thread with the snapshot of the subscriber list allows the server to proceed
asynchronously with the delivery of a message to all subscribers. In our model we consider a fairly realistic
scenario in which the server employs a fixed number or worker threads for this kind of task. Furthermore,
we model the semantics of a publish message asynchronously: the server first spawns (when available) a
new task with a copy of the current subscriber list. The worker can then deliver the message to the active
clients. The initial server configuration is the tuple h∅, I1, . . . , Ini where Ii = ⊥ for i : 1, . . . , n.</p>
      </sec>
      <sec id="sec-2-3">
        <title>Global Configuration</title>
        <p>A global configuration is defined by a tuple hS, Ci, where S = hL, W1, . . . , Wni is a server configuration,
and C = {c1, . . . , ck} is a finite set of client configurations such that cj = hij, sj, bj, fji for j : 1, . . . , k. We
use N to denote the set of network configurations.</p>
      </sec>
      <sec id="sec-2-4">
        <title>Pub/Sub Network</title>
        <p>For fixed sets A, Q, M , and given a client specification P = hQ, q0, Ri, and n &gt; 1, a Pub/Sub Network
P S is defined via a transitions system defined through a binary relation over network configurations.
More precisely, the relation →⊆ N × N is defined as the least relation satisfying one of the conditions
listed below. We show next some example of transitions such as P ublish and N otif y.
• Publish Transition:
• Notify Transition:</p>
        <p>P ublish hS, {hi, s, b, f i} ∪ Ci → hS0, {hi, s0, b, f i} ∪ Ci
under the assumptions: f = &gt;, hs, publish(m), s0i ∈ R, S = hL, W1, . . . , Wni, q ∈ {1, . . . , n},
Wq = ⊥, S0 = hL, W1, . . . , Wq0, . . . , Wni, and Wq0 = hm, Li, With this rule a client instance sends a
publish request to the server. The server acknowledges the request passing the message to an idle
worker thread together with a snapshot of the current subscriber list L. The client updates its local
state according to R.</p>
        <p>N otif y hS, Ci → hS0, C0i
under the following assumptions C = {c1, . . . , ck}, ci = hidi, si, bi, fii for all i ∈ {1, . . . , k}, S =
hL1, W1, . . . , Wni, Wq = hm, L2i for some q ∈ {1, . . . , n}, S0 = hL1, W1, . . . , Wq0, . . . , Wni, Wq0 = ⊥,
C0 = {c01, . . . , c0k} where for all j : 1, . . . , k, cj = hidj, sj, bj, fji, if idj ∈ L2 and fj = &gt;, then
c0j = hidj, sj, b0j, fji and b0j = bj ∪ {m}, c0j = cj, otherwise. With this rule we model notification
of message m via a global action performed by worker thread Wq = hm, L2i whose effect is to
update the message list of each active client instance whose identifier is included in the list L2. The
remaining client instances (their identifier is not in the list or they are inactive) remain unchanged.
After notification the worker thread resets its state to idle ⊥ and returns available for distributing
other published message.</p>
        <p>The semantics of copy-on-write concurrent data structures in concurrent programming languages such
as Java [30] is in general more complex than the model described above. Indeed, copy-on-write data
structures typically provide a mechanism to generate snapshots on demand (e.g. when an iterator needs
to scan the structure) producing an exception (that will be handled by the user) in case of simultaneous
read and write access from multiple threads. In our semantics we do not model exception handling and
focus instead on the confinement of snapshots of a shared data structure in worker threads.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Verification Problems and SMT Solvers</title>
      <p>In our work we have applied the above described formal language to build a verifiable (parameterised)
model that can be validated via the SMT-based Infinite-state Model Checker Cubicle. In this setting we
use unbounded arrays to model arbitrary collections of publisher and subscriber processes as well as an
unbounded shared data structure used as a communication media between processes. The evolution of
the shared memory through the different rounds is modelled using a bi-dimensional unbounded arrays
indexed both on round numbers and process identifiers. Each row of such a matrix can then be used to
model the different phases of a protocol round, e.g., the formation of a subscriber group.</p>
      <p>
        The resulting model can be validated through the SMT-based Infinite-state Model Checker Cubicle.
Cubicle implements a symbolic backward reachability algorithm in which sets of configurations are
represented via formulas in fragments of First Order Logic that combine Presburger Arithmetics and
the Theory of Arrays [
        <xref ref-type="bibr" rid="ref10 ref23 ref29 ref3">10, 29, 3, 23</xref>
        ]. By construction, the Cubicle verification algorithm ensures that,
upon termination, the resulting correctness proof is guaranteed to hold for any number of processes.
In other words Cubicle can be applied as an automated engine for solving parameterised verification
problems for the considered distributed protocol. In our experiments with the considered case-studies
we successfully validated different versions of the Redis Pub/Sub protocol and identify corner cases for
guards of transitions.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Decidability of Verification Problems</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] we have introduced a model of Publish Subscribe Networks inspired to Petri Nets in which
the internal structure of a server is abstracted away and its behaviour is included in the transition
system describing the interaction among clients. In this context we have considered different semantics
for the notification phase in order to take into consideration exceptions due to node crashes. For the
considered model, decidabilty of the coverability problem can be obtained via the application of Higman’s
and Dickson’s lemmas and the theory of well-structured transition systems. The results are based
on compositional properties of well-quasi orderings that can be applied in order to define verification
algorithms based on symbolic backward reachability in which sets of Petri Net markings are finitely
represented via constraint formulas. The extension of the above mentioned results to refined models of
Pub/Sub Networks is left as future research.
[30] https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArraySet.
html .
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Abdulla</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          .
          <article-title>Parameterized verification</article-title>
          .
          <source>STTT</source>
          ,
          <volume>18</volume>
          (
          <issue>5</issue>
          ):
          <fpage>469</fpage>
          -
          <lpage>473</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Abdulla</surname>
          </string-name>
          , G. Delzanno,
          <string-name>
            <given-names>N. Ben</given-names>
            <surname>Henda</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Rezine</surname>
          </string-name>
          .
          <article-title>Monotonic abstraction: on efficient verification of parameterized systems</article-title>
          .
          <source>Int. J. Found. Comput. Sci.</source>
          ,
          <volume>20</volume>
          (
          <issue>5</issue>
          ):
          <fpage>779</fpage>
          -
          <lpage>801</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Alberti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghilardi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Sharygina</surname>
          </string-name>
          .
          <article-title>A framework for the verification of parameterized infinite-state systems</article-title>
          . Fundam. Inform.,
          <volume>150</volume>
          (
          <issue>1</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>24</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bertrand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>König</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangnier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Stückrath</surname>
          </string-name>
          .
          <article-title>On the decidability status of reachability and coverability in graph transformation systems</article-title>
          .
          <source>In RTA'12</source>
          , volume
          <volume>15</volume>
          <source>of LIPIcs</source>
          , pages
          <fpage>101</fpage>
          -
          <lpage>116</lpage>
          . Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bertrand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fournier</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangnier</surname>
          </string-name>
          .
          <article-title>Distributed local strategies in broadcast networks</article-title>
          .
          <source>In 26th International Conference on Concurrency Theory, CONCUR</source>
          <year>2015</year>
          , Madrid, Spain,
          <source>September 1.4</source>
          ,
          <issue>2015</issue>
          , pages
          <fpage>44</fpage>
          -
          <lpage>57</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bloem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jacobs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Khalimov</surname>
          </string-name>
          , I. Konnov,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rubin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Veith</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widder</surname>
          </string-name>
          .
          <source>Decidability of Parameterized Verification. Synthesis Lectures on Distributed Computing Theory</source>
          . Morgan &amp; Claypool Publishers,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bloem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jacobs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Khalimov</surname>
          </string-name>
          , I. Konnov,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rubin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Veith</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widder</surname>
          </string-name>
          .
          <article-title>Decidability in parameterized verification</article-title>
          .
          <source>SIGACT News</source>
          ,
          <volume>47</volume>
          (
          <issue>2</issue>
          ):
          <fpage>53</fpage>
          -
          <lpage>64</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>B.</given-names>
            <surname>Charron-Bost</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Schiper</surname>
          </string-name>
          .
          <article-title>The heard-of model: computing in distributed systems with benign faults</article-title>
          .
          <source>Distributed Computing</source>
          ,
          <volume>22</volume>
          (
          <issue>1</issue>
          ):
          <fpage>49</fpage>
          -
          <lpage>71</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Conchon</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Delzanno, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferrando</surname>
          </string-name>
          .
          <article-title>Parameterized verification of topology-sensitive distributed protocols goes declarative</article-title>
          .
          <source>In Proceedings of NETYS</source>
          <year>2018</year>
          , to appear,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Conchon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Goel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krstic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mebsout</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zaïdi</surname>
          </string-name>
          .
          <article-title>Cubicle: A parallel smt-based model checker for parameterized systems - tool paper</article-title>
          . In Computer Aided Verification - 24th
          <source>International Conference, CAV 2012</source>
          , Berkeley, CA, USA, July
          <volume>7</volume>
          -
          <issue>13</issue>
          ,
          <year>2012</year>
          Proceedings, pages
          <fpage>718</fpage>
          -
          <lpage>724</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Conchon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Goel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krstic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mebsout</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zaïdi</surname>
          </string-name>
          .
          <article-title>Invariants for finite instances and beyond</article-title>
          . In Formal Methods in Computer-Aided Design,
          <string-name>
            <surname>FMCAD</surname>
          </string-name>
          <year>2013</year>
          ,
          <article-title>Portland</article-title>
          ,
          <string-name>
            <surname>OR</surname>
          </string-name>
          , USA, October
          <volume>20</volume>
          -
          <issue>23</issue>
          ,
          <year>2013</year>
          , pages
          <fpage>61</fpage>
          -
          <lpage>68</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>H.</given-names>
            <surname>Debrat</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Merz</surname>
          </string-name>
          .
          <article-title>Verifying fault-tolerant distributed algorithms in the heard-of model</article-title>
          .
          <source>Archive of Formal Proofs</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          .
          <article-title>A logic-based approach to verify distributed protocols</article-title>
          .
          <source>In Proceedings of the 31st Italian Conference on Computational Logic</source>
          , Milano, Italy, June 20-22,
          <year>2016</year>
          ., pages
          <fpage>86</fpage>
          -
          <lpage>101</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          .
          <article-title>A unified view of parameterized verification of abstract models of broadcast communication</article-title>
          .
          <source>STTT</source>
          ,
          <volume>18</volume>
          (
          <issue>5</issue>
          ):
          <fpage>475</fpage>
          -
          <lpage>493</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          .
          <source>Formal Verification of Internet of Things Protocols Invited talk at the 5th Workshop on Formal Reasoning in Distributed Algorithms (FRIDA)</source>
          ,
          <article-title>FLOC 2018 (draft available in the FLOC 2018 workshop web</article-title>
          page).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          .
          <article-title>Parameterised Verification of Publish/Subscribe Networks with Exception Handling</article-title>
          .
          <source>RP</source>
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangnier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Zavattaro</surname>
          </string-name>
          .
          <article-title>Parameterized verification of ad hoc networks</article-title>
          .
          <source>In CONCUR 2010 - Concurrency Theory, 21th International Conference, CONCUR 2010</source>
          , Paris, France,
          <source>August 31-September 3</source>
          ,
          <year>2010</year>
          . Proceedings, pages
          <fpage>313</fpage>
          -
          <lpage>327</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangnier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Zavattaro</surname>
          </string-name>
          .
          <article-title>On the power of cliques in the parameterized verification of ad hoc networks</article-title>
          .
          <source>In Foundations of Software Science and Computational Structures - 14th International Conference, FOSSACS</source>
          <year>2011</year>
          ,
          <article-title>Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2011</article-title>
          , Saarbrücken, Germany, March 26-April 3,
          <year>2011</year>
          . Proceedings, pages
          <fpage>441</fpage>
          -
          <lpage>455</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.</given-names>
            <surname>Delzanno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangnier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Zavattaro</surname>
          </string-name>
          .
          <article-title>Verification of ad hoc networks with node and communication failures</article-title>
          .
          <source>In FORTE/FMOODS'12</source>
          , volume
          <volume>7273</volume>
          <source>of LNCS</source>
          , pages
          <fpage>235</fpage>
          -
          <lpage>250</lpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dragoi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Veith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Widder</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Zufferey</surname>
          </string-name>
          .
          <article-title>A logic-based framework for verifying consensus algorithms</article-title>
          . In Verification, Model Checking, and
          <string-name>
            <surname>Abstract</surname>
          </string-name>
          Interpretation - 15th
          <source>International Conference, VMCAI</source>
          <year>2014</year>
          , San Diego, CA, USA, January
          <volume>19</volume>
          -
          <issue>21</issue>
          ,
          <year>2014</year>
          , Proceedings, pages
          <fpage>161</fpage>
          -
          <lpage>181</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dragoi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Zufferey</surname>
          </string-name>
          .
          <article-title>The need for language support for fault-tolerant distributed systems</article-title>
          .
          <source>In 1st Summit on Advances in Programming Languages, SNAPL 2015, May 3-6</source>
          ,
          <year>2015</year>
          , Asilomar, California, USA, pages
          <fpage>90</fpage>
          -
          <lpage>102</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dragoi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Zufferey</surname>
          </string-name>
          .
          <article-title>Psync: a partially synchronous language for fault-tolerant distributed algorithms</article-title>
          .
          <source>In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL</source>
          <year>2016</year>
          ,
          <article-title>St</article-title>
          . Petersburg, FL, USA, January
          <volume>20</volume>
          -
          <issue>22</issue>
          ,
          <year>2016</year>
          , pages
          <fpage>400</fpage>
          -
          <lpage>415</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghilardi</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ranise</surname>
          </string-name>
          .
          <article-title>Backward reachability of array-based systems by SMT solving: Termination and invariant synthesis</article-title>
          .
          <source>Logical Methods in Computer Science</source>
          ,
          <volume>6</volume>
          (
          <issue>4</issue>
          ),
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Herlihy</surname>
          </string-name>
          ,
          <string-name>
            <surname>N. Shavit.</surname>
          </string-name>
          <article-title>The art of multiprocessor programming</article-title>
          .
          <source>Morgan Kaufmann</source>
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mebsout</surname>
          </string-name>
          .
          <article-title>Inférence d'invariants pour le model checking de systèmes paramétrés. (Invariants inference for model checking of parameterized systems)</article-title>
          .
          <source>PhD thesis</source>
          , University of Paris-Sud, Orsay, France,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>T.</given-names>
            <surname>Tsuchiya</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Schiper</surname>
          </string-name>
          .
          <article-title>Verification of consensus algorithms using satisfiability solving</article-title>
          .
          <source>Distributed Computing</source>
          ,
          <volume>23</volume>
          (
          <issue>5-6</issue>
          ):
          <fpage>341</fpage>
          -
          <lpage>358</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27] http://alt-ergo.
          <source>lri.fr.</source>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>[28] http://functory.lri.fr/.</mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>[29] http://users.mat.unimi.it/users/ghilardi/mcmt/.</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>