<!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>S IT MATTERS (Methods and Tools for Trustworthy Smart Systems).
" marino.miculan@uniud.it (M. Miculan); michele.pasqua@univr.it (M. Pasqua)
~ https://users.dimi.uniud.it/~marino.miculan/ (M. Miculan); https://michelepasqua.github.io/ (M. Pasqua)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Distributed Programming of Smart Systems with Event-Condition-Action Rules (Short Paper)⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marino Miculan</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michele Pasqua</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ca' Foscari University of Venice</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Udine</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Verona</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>In recent years, event-driven programming languages, e.g. those based on Event Condition Action (ECA) rules, have emerged as a promising paradigm for implementing smart systems, such as IoT devices. Still, actual implementations are bound to a centralized infrastructure, limiting scalability and security. In this work, we present attribute-based memory updates (AbU), a new interaction mechanism aiming to extend the ECA programming paradigm to distributed systems. It relies on attribute-based communication, that is similar to broadcast, but receivers are selected “on the fly” by means of predicates over their attributes. With AbU, smart devices can be easily programmed via ECA rules and, at the same time, they can be deployed to a distributed network. Hence, a centralized infrastructure is not needed anymore: the computation is moved on the edge, improving reliability, scalability, privacy and security.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;ECA rules</kwd>
        <kwd>Attribute-based communication systems</kwd>
        <kwd>Formal methods</kwd>
        <kwd>Autonomic computing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>are managed by a central coordinator node (often deployed on the cloud). This leads to several
issues: scalability (as the IoT devices will increase exponentially), availability (what happens
when the central node is not reachable?) and privacy (users’ data are continuously sent to
remote, unknown, servers, not under user’s control). Thus, in these situations we may prefer to
move computation closer to the edge of the network, akin fog computing: the ECA rules should
be stored and executed directly on the nodes, in a truly distributed setting. This approach
reduces data transfers between the edge and the center of the network—in fact, there can be
no center at all, thus increasing scalability and resilience—but, on the other hand, it requires a
distributed coordination and communication of these components.</p>
      <p>
        To mitigate these issues, we introduce AbU (for “Attribute-based Updates”), a new calculus
aiming at merging the simplicity of ECA programming with distributed coordination
mechanisms in the spirit of attribute-based communication (AbC) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Attribute-based communication
is a time-coupled, space-uncoupled interaction model recently introduced for coordinating large
numbers of components. The key aspect of attribute-based communication is that the actual
receivers are selected “on the fly” by means of predicates.
      </p>
      <p>Integrating attribute-based communication in the ECA paradigm is not obvious, since the
ifrst adopts a message-passing mechanism while the latter uses memory-based events. To solve
the problem, in AbU attribute-based communication is reduced to events of the same kind ECA
programs already deal with, that is, memory updates. For instance, the following AbU rule
 @( = logger) :  ←  + 
means “when (my local) variable  changes, add its value to the variable  of all nodes
whose variable  has value logger”. Clearly, the update of  may trigger other rules on
these (remote) nodes, and so on. We call this mechanism attribute-based memory updates, since
it can be seen as the memory-based counterpart of attribute-based message-passing.</p>
      <p>This smooth integration of paradigms makes it easier to extend to the distributed setting
known results and techniques. As an example, we will provide a simple syntactic check to
guarantee stabilization, i.e., that a chain of rule executions triggered by an external event will
eventually terminate.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Attribute-based Memory Updates</title>
      <p>AbU is a calculus following the Event Condition Action paradigm, augmented with
attributebased communication. This solution embodies the programming simplicity of ECA rules, but it
is expressive enough to model complex coordination scenarios, typical of distributed systems.</p>
      <sec id="sec-2-1">
        <title>2.1. Syntax and Semantics</title>
        <p>In AbU, a smart device is modeled by a node ⟨Σ, Θ⟩.  is a list of ECA rules of the form
evt ⋗ task, where evt is the event and task is the task. The latter is a pair cnd : act, where cnd
is the condition and act is the action. The full syntax of AbU ECA rules is depicted in Fig. 1. The
configuration of the node is given by a state Σ, mapping resources to values, and an execution
pool Θ, which is a set of memory updates. An update is a finite list of pairs (, ), meaning
rule ::= evt ⋗ task
evt ::=  | evt evt
act ::=  |  ←  act |  ←  act
task ::= cnd : act
 ::= ⊥ | ⊤ | ¬ |  ∧  |  ∨  |  ◁▷ 
 ::=  |  |  |  ⊗ 
 ∈ X  ∈ V
that the resource  will take the value  after the execution of the update. When one of the
resources in a rule event is modified, the rule is fired
and its task evaluated. Evaluation does not
change the resource states immediately; instead, it yields update operations that are added to
the execution pools, and applied later on.</p>
        <p>A task condition is a boolean expression, optionally prefixed with
the task is local; otherwise the task is remote. In local tasks, the condition is checked in the local
node and, if it holds, the action is evaluated. For remote tasks, the action is evaluated on every
node where the condition holds. An action is a finite list of assignments of value expressions
to local  or remote . The evaluation of an action yields an update, which is added to the
node pool of the local or remote nodes, in the case of local or remote tasks, respectively. As an
one for each smart device to model.
 of every other node”. Finally, an AbU system S is just the parallel composition of AbU nodes,
 +  means “add the value of the current node  to the</p>
        <p>
          The behavior of an AbU system is specified by means of (small-step) semantics, modeled as a
labeled transition system (LTS) S1 − _ S2. The semantics is distributed, in the sense that each
node does not have a global knowledge about the system. In the AbU semantics, that can be
found in the original paper [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], a rule (Exec) executes an update picked from the pool; while a
rule (Input) models an external modification of some resources. The execution of an update, or
an external change in the resources, may trigger some rules of the nodes. Hence, after updating
a node state, the semantics of a node launches a discovery phase, with the goal of finding new
updates to add to the local pool (or some pools of remote nodes), given by the activation of
some rules. The discovery phase is composed by two parts. Firstly, a node ⟨Σ, Θ⟩ performs a
local discovery to add to the local pool Θ all updates originated by some rules in  that contain
local tasks. Then, the node computes a list of remote tasks that may update external nodes and
sends it to all nodes in the system. This is modeled with the LTS labels ▷  and ▶  , produced
by the rules (Exec) and (Input), respectively. On the other side, when a node receives a list  of
tasks, executing the rule (Disc) with a LTS label  , it evaluates them and adds to its pool the
actions generated by the tasks whose condition is satisfied. Finally, the rule (Step) completes (on
all nodes in the system) a discovery phase launched by a given node.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. A Working Example</title>
        <p>Consider the scenario sketched in the introduction, where an “access” node aims at sending its
local access time to all “logger” nodes in the system. In other words, this node is activated when
 changes, i.e., when a user performs access. Suppose that the node, together with the
time-stamp, aims at sending the IP address of the user and the name of the accessed resource.
On the other side, the logger nodes record the access time, the IP address and the resource name.
Furthermore, these nodes contain a black-list of IP addresses. A logger node noticing an access
from a black-listed IP is in charge of notifying an intrusion detection system (IDS). The system is
formalized in AbU as follows, supposing to have two access and two logger nodes.</p>
        <p>S1 ≜ ⟨Σ1, ∅⟩ = ⟨[ ↦→   ↦→ 00 : 00 : 00  ↦→ camera], ∅⟩
S2 ≜ ⟨Σ2, ∅⟩ = ⟨[ ↦→   ↦→ 00 : 00 : 00  ↦→ lock], ∅⟩
S3 ≜ ⟨Σ3, ∅⟩ = ⟨[ ↦→ logger  ↦→   ↦→   ↦→ ], ∅⟩
S4 ≜ ⟨Σ4, ∅⟩ = ⟨[ ↦→ logger  ↦→   ↦→ 167.123.23.2;  ↦→ ], ∅⟩
 ≜  ⋗ @( = logger) :  ←</p>
        <p>append  | ;  ; |
 ≜  ⋗ (tail[]. ∈ ) :  ←</p>
        <p>tail[]
At the beginning, in the AbU system S1 ‖ S2 ‖ S3 ‖ S4 all pools are empty, so there
is nothing to compute. At some point, an access is made on the resource camera, so the
rule (Input) is applied on S1, namely ⟨Σ1, ∅⟩− − ▶_ ⟨Σ′1, ∅⟩, where Σ′1 = [ ↦→
15 : 07 : 00  ↦→ camera  ↦→ 167.123.23.2] and  = @( = logger) :  ←
aopthpeernndodes.|1I6n7p.1a2rt3i.c2u3l.a2r;, 1w5e:h0a7v:e0:0;c⟨aΣm2e,r∅a|⟩. − _Now,⟨aΣd2i,sc∅o⟩v,ery⟨Σph3a,s∅e⟩is−_perfo⟨rΣm3e,Θd⟩o,nanaldl
⟨Σ4, ∅⟩ − _ ⟨Σ4, Θ⟩. Here, the pool Θ is {(, |167.123.23.2; 15 : 07 : 00; camera|)}.</p>
        <p>Now, the third and the fourth nodes can apply an execution step, since their pools are not
▷ ⟨Σ′3, ∅⟩, by
applyempty. Suppose the third node is chosen, namely we have ⟨Σ3, Θ⟩ − _
ing the rule (Exec), and Σ′3 = [ ↦→ logger  ↦→ |167.123.23.2; 15 : 07 : 00; camera|  ↦→
∅  ↦→ ]. Note that, in this case, no rule is triggered by the executed update. Since there
is nothing to discover, all the other nodes do not have to update their pool. Finally, the
▷ ⟨Σ′4, Θ′⟩, by applying the
fourth node can execute, namely we have that ⟨Σ4, Θ⟩ − _
rule (Exec). Here, Σ′4 = [ ↦→ logger  ↦→ |167.123.23.2; 15 : 07 : 00; camera|  ↦→
167.123.23.2;  ↦→ ] and Θ′ = {(, |167.123.23.2; 15 : 07 : 00; camera|)}. In this case,
the execution of the update triggers a rule of the node but the rule is local so, also in this case,
the discovery phase does not have efect. Since all pools are empty, the execution stops, until a
new input (i.e., an external change to resources) is performed.</p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Waves and Stabilization</title>
        <p>An AbU system S is stable, when no more execution steps can be performed, namely when all
execution pools of all nodes in S are empty. In the case of a stable system, only the rule (Input)
can be applied, i.e., an external environment change is needed to (re)start the computation.</p>
        <p>
          We can define a (big-step) semantics S ⇝ S′ between stable systems, dubbed wave semantics,
in terms of the small-step semantics of AbU (see again the original paper [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] for details). The idea
is that a (stable) system reacts to an external stimulus by executing a series of tasks (a “wave”),
until it becomes stable again, waiting for the next stimulus. Note that, in the wave semantics
inputs do not interleave with internal steps: this leaves the system the time to reach stability
before the next input. If we allow arbitrary input steps during the computation, a system may
never reach stability since the execution pools could be never emptied. This assumption has a
practical interpretation: in the IoT context, usually internal computation steps take much less
time of changes in the environment, i.e., input from sensors [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
        <p>The wave semantics (and, hence, an AbU system) may exhibit internal divergence: once an
input step starts the computation, the subsequent execution steps may not reach a stable system,
even if intermediate inputs are not performed. In order to prevent this situation, we define a
simple syntactic condition on the ECA rules, that guarantees (internal) termination. Each system
satisfying the condition eventually becomes stable, after an initial input and without further
interleaving inputs. The idea is to build an ECA dependency graph expressing dependencies
between the resources handled by an AbU system: a resources  in the graph is linked to another
resource  in the graph when a change of  may potentially afect the value of .</p>
        <p>To build such graph we need: the output resources of an ECA rule, namely the resources
involved in the actions performed by the rule (they are given by the resources assigned in the
rule task); and the input resources of an ECA rule, namely the resources that the rule depends
on (they are the resources in the rule event). Then, the ECA dependency graph of a system S is
a directed graph (, ) where nodes  are the input and output resources of all ECA rules in
S, while the edges  link two resources  and  if  is an input resource of a rule in S and 
is an output resource of the same rule. Indeed, this means that  is potentially assigned by a
rule in S when  is changed. The suficient syntactic condition for the termination of the wave
semantics (i.e., stabilization) consists in the acyclicity of the ECA dependency graph.
Proposition 1 (Stabilization). Given an AbU system S, if the ECA dependency graph (, )
of S is acyclic, then there exists a system S′ such that S ⇝ S′.</p>
        <p>A simple mechanism enforcing termination consists in computing the transitive closure +
of  and to check if it contains reflexive pairs, i.e., elements of the form (, ), for a resource .
If there are no reflexive pairs then the graph is acyclic and stabilization is fulfilled.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Conclusions and Future Work</title>
      <p>
        In this paper we have presented AbU, a new calculus merging the simplicity of ECA programming
with attribute-based memory updates. This provides us an efective method for programming
IoT smart devices in a fully-distributed setting, without sacrificing the simplicity typical of ECA
rules. Moreover, AbU can be used as a solid foundational model for edge computation.
Future work First, we are interested in porting to AbU the verification techniques developed
for other ECA languages [
        <xref ref-type="bibr" rid="ref7 ref8 ref9">7, 8, 9</xref>
        ]. Another interesting issue is distributed runtime verification
and monitoring, in order to detect violations at runtime of given correctness properties, e.g.,
expressed in temporal logics like the  -calculus [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Similarly, we can define syntactic criteria
and corresponding verification mechanisms to guarantee confluence . Indeed, in practical IoT
scenarios, it is important to ensure that the rules execution order does not impact the overall
behavior (which is a sort of rule determinism). Along this line, in IoT systems it is often
important to guarantee that inputs are processed within precise time bounds; to this end,
we can think of adding quantitative aspects to the AbU semantics, following [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Finally, a
new generalization of attribute-based communication has been presented in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]; it could be
interesting to investigate how to apply that interaction model to the ECA programming.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Miculan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pasqua</surname>
          </string-name>
          ,
          <article-title>A calculus for attribute-based memory updates</article-title>
          , in: A.
          <string-name>
            <surname>Cerone</surname>
          </string-name>
          , P. C. Ölveczky (Eds.),
          <source>Theoretical Aspects of Computing - ICTAC 2021</source>
          , Springer International Publishing, Cham,
          <year>2021</year>
          , pp.
          <fpage>366</fpage>
          -
          <lpage>385</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -85315-0\_
          <fpage>21</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cano</surname>
          </string-name>
          , E. Rutten, G. Delaval,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Benazzouz</surname>
          </string-name>
          , L. Gurgen,
          <article-title>ECA rules for IoT environment: A case study in safe design</article-title>
          ,
          <source>in: 8th Int. Conf. on Self-Adaptive</source>
          and
          <article-title>Self-Organizing Systems Workshops</article-title>
          , IEEE, USA,
          <year>2014</year>
          , pp.
          <fpage>116</fpage>
          -
          <lpage>121</lpage>
          . doi:
          <volume>10</volume>
          .1109/SASOW.
          <year>2014</year>
          .
          <volume>32</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balliu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Merro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pasqua</surname>
          </string-name>
          ,
          <article-title>Securing cross-app interactions in IoT platforms</article-title>
          ,
          <source>in: 32nd IEEE Computer Security Foundations Symposium</source>
          , Hoboken, NJ, USA, IEEE,
          <year>2019</year>
          , pp.
          <fpage>319</fpage>
          -
          <lpage>334</lpage>
          . doi:
          <volume>10</volume>
          .1109/CSF.
          <year>2019</year>
          .
          <volume>00029</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balliu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Merro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pasqua</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shcherbakov</surname>
          </string-name>
          ,
          <article-title>Friendly fire: Cross-app interactions in IoT platforms</article-title>
          ,
          <source>ACM Trans. Priv. Secur</source>
          .
          <volume>24</volume>
          (
          <year>2021</year>
          )
          <volume>16</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          :
          <fpage>40</fpage>
          . doi:
          <volume>10</volume>
          .1145/3444963.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Abd Alrahman</surname>
          </string-name>
          , R. De Nicola,
          <string-name>
            <given-names>M.</given-names>
            <surname>Loreti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Tiezzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Vigo</surname>
          </string-name>
          ,
          <article-title>A calculus for attribute-based communication</article-title>
          ,
          <source>in: 30th Symposium on Applied Computing, ACM</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1840</fpage>
          -
          <lpage>1845</lpage>
          . doi:
          <volume>10</volume>
          .1145/2695664.2695668.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Cacciagrano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Culmone</surname>
          </string-name>
          , IRON:
          <article-title>Reliable domain specific language for programming IoT devices</article-title>
          ,
          <source>Internet Things</source>
          <volume>9</volume>
          (
          <year>2020</year>
          )
          <article-title>100020</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.iot.
          <year>2018</year>
          .
          <volume>09</volume>
          .006.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>X.</given-names>
            <surname>Jin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lembachar</surname>
          </string-name>
          , G. Ciardo,
          <article-title>Symbolic verification of ECA rules</article-title>
          , in: D.
          <string-name>
            <surname>Moldt</surname>
          </string-name>
          (Ed.),
          <source>Joint Proceedings of PNSE '13 and ModBE '13</source>
          ,
          <string-name>
            <surname>Milano</surname>
          </string-name>
          , Italy, volume
          <volume>989</volume>
          , CEUR-WS.org,
          <year>2013</year>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>59</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>989</volume>
          /paper17.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Vannucchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Diamanti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzante</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Cacciagrano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Culmone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gorogiannis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mostarda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Raimondi</surname>
          </string-name>
          ,
          <article-title>vIRONy: A tool for analysis and verification of ECA rules in intelligent environments</article-title>
          ,
          <source>in: Int. Conf. on Intell. Environ</source>
          ., S. Korea, IEEE,
          <year>2017</year>
          , pp.
          <fpage>92</fpage>
          -
          <lpage>99</lpage>
          . doi:
          <volume>10</volume>
          .1109/IE.
          <year>2017</year>
          .
          <volume>32</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Vannucchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Diamanti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mazzante</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Cacciagrano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Culmone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gorogiannis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mostarda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Raimondi</surname>
          </string-name>
          ,
          <article-title>Symbolic verification of event-condition-action rules in intelligent environments</article-title>
          ,
          <source>J. Reliab. Intell. Environ</source>
          .
          <volume>3</volume>
          (
          <year>2017</year>
          )
          <fpage>117</fpage>
          -
          <lpage>130</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s40860-017-0036-z.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Miculan</surname>
          </string-name>
          ,
          <article-title>On the formalization of the modal  -calculus in the Calculus of Inductive Constructions, Inf</article-title>
          . Comput.
          <volume>164</volume>
          (
          <year>2001</year>
          )
          <fpage>199</fpage>
          -
          <lpage>231</lpage>
          . doi:
          <volume>10</volume>
          .1006/inco.
          <year>2000</year>
          .
          <volume>2902</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Miculan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Peressotti</surname>
          </string-name>
          ,
          <article-title>Structural operational semantics for non-deterministic processes with quantitative aspects</article-title>
          ,
          <source>Theor. Comput. Sci</source>
          .
          <volume>655</volume>
          (
          <year>2016</year>
          )
          <fpage>135</fpage>
          -
          <lpage>154</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.tcs.
          <year>2016</year>
          .
          <volume>01</volume>
          .012.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Miculan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Paier</surname>
          </string-name>
          ,
          <article-title>A calculus of subjective communication</article-title>
          , in: U. Dal
          <string-name>
            <surname>Lago</surname>
          </string-name>
          , D. Gorla (Eds.),
          <source>23rd Italian Conference on Theoretical Computer Science (ICTCS)</source>
          ,
          <source>Proceedings, CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>13</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>