<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Runtime Verification for the Monitoring of Digital Twins</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sylvain Hallé</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chukri Soueidi</string-name>
          <email>chukri.a.soueidi@inria.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yliès Falcone</string-name>
          <email>ylies.falcone@inria.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Laboratoire d'informatique de Grenoble, Université Grenoble Alpes</institution>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Laboratoire d'informatique formelle, Université du Québec à Chicoutimi</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <abstract>
        <p>The paper considers the problem of discovering divergences between the actions of a digital twin and those of its real-world counterpart. It observes the similarities between this problem and an existing field of formal methods called Runtime Verification (RV), and suggests leveraging and adapting RV techniques to this efect. Concretely, three important aspects of the problem are identified and for which both theoretical and practical challenges must be addressed.</p>
      </abstract>
      <kwd-group>
        <kwd>digital twins</kwd>
        <kwd>runtime verification</kwd>
        <kwd>stream processing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        A digital twin is a virtual representation of a real-world entity [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]; it is often presented as a
predictive instrument, by enabling one to simulate multiple possible outcomes of a real-world
entity. In such a context, it is essential that the digital twin exhibits behavior that is faithful
to that of the system it seeks to mimic. Any significant and sustained discrepancy between
the twin and its concrete counterpart can lead to incorrect predictions, false diagnoses, and
generally to an incorrect perception of the operation of the real system. Diferences between
the operation of a twin and the real-world entity must therefore be monitored and addressed in
real time as they occur.
      </p>
      <p>The process of detecting deviations can be summarized as illustrated in Figure 1. A real-world
entity  is given inputs  , which can consist of controllable (i.e. user-defined) values, as well as
uncontrollable (i.e. environmental) objects, in addition to any reading related to the entity’s
current internal state. The entity reacts to these inputs by producing outputs   ; again, these
outputs can be actions directly performed by the entity, or measured values of the entity’s
state or the environment. In parallel, the inputs are recorded and fed to a digital twin  , which
simulates the real-world entity and produces its own outputs   . The observed output and the
synthetic output are then fed to a comparison procedure  , which decides whether they are in
agreement (⊤) or not (⊥).</p>
      <p>
        In this paper, we reveal the similarities that this problem shares with a research topic crossing
the fields of software engineering and formal methods, called
runtime verification (RV) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Over
nEvelop-O
the years, RV has been successfully applied to various use cases, ranging from the monitoring
of aerial drones [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] to the detection of bugs in video games [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We identify elements of the
problem that require adaptations in order to leverage RV for digital twin monitoring, and
suggest possible ways in which these techniques could be used in this context.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. A Property-Based Approach</title>
      <p>
        Runtime verification is the discipline of computer science where an object called a monitor is
used to observe the behavior of another program. At various moments, instrumented codepoints
relay information about the program’s actions and state to the monitor, producing a sequence
of data elements called “events”, denoted by  =  1,  2, … . The monitor compares this event
trace against a formal specification  of what constitutes a correct execution; any violation
of the specification is reported on-the-fly, as the monitored program executes. Research on
runtime verification has produced a variety of monitors supporting a large class of specification
languages [
        <xref ref-type="bibr" rid="ref5 ref6 ref7 ref8 ref9">5, 6, 7, 8, 9</xref>
        ].
      </p>
      <p>
        A Passive Operation As in RV, the monitoring of digital twins is mostly a passive procedure:
one is not concerned with generating inputs that drive the system, as is the case for conformance
testing [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ]; this is typically done by calculating the sequences of inputs that have the
potential to reveal a violation of the finite-state machine specification by the system. However,
in the context of digital twins, one rarely has the possibility of sending unlimited sequences
of inputs to the concrete entity to ensure the conformity of the model, due to their associated
cost (in terms of time and resources). What is more, some scenarios may involve compliance
checking in situations where the actual system is damaged, and may be excluded from the test
cases from the outset for this reason. Realistically, the best that can be done is to observe the
behavior of the actual system in its normal operation, and to make the most of these observations
to detect any discrepancies as they occur.
      </p>
      <p>Properties on Digital Twins A first possible application of runtime verification consists
of an indirect comparison between the twin’s behavior and that of the real-world entity. It
supposes the existence of conditions  1, … ,   , which are known to be true for all executions of
the digital twin; these properties, acting as a form of “guarantee,” are extracted from the twin
beforehand by an arbitrary procedure  , as illustrated in Figure 2. These properties, in turn,
can be converted into monitors that observe the operation of the real-world entity in real time.
Any observed sequence that violates one of the   is, by definition, a sequence that cannot be
. . .</p>
      <p>φn
I
∧
⊤/⊥
produced by the digital twin for the same inputs, and thus indicates a divergence between the
twin and its real-world counterpart.</p>
      <p>Note that in such a scenario, the twin itself does not need to be “executed” —that is, it is
unnecessary to have the twin generate one or more traces for comparison with the real-world
entity’s output. This approach can present advantages in cases where running a twin may incur
a high cost. Instead of a constant synchronization between the twin and the real-world entity,
the lighter monitors may observe the output of the entity as long as it corresponds to expected
behavior. Further analysis (and possible adaptation of the twin) is only required when one of
the properties is violated by the observations. This, in itself, may require substantial analysis to
determine which are the relevant   that need to be monitored.</p>
      <p>
        Declarative Definition of a Twin In this first suggested mode of operation, the detection
of divergences is sound: a violation of one of the properties indicates a genuine discrepancy
between the twin and the real-world entity. The detection is complete if any sequence satisfying
⋀   is also a possible (valid) sequence produced by the twin. In such a case, the twin’s behavior
is completely captured by the conditions   that serve as definitions. Thus, one can imagine
specifying the operation of the twin in a declarative way, as opposed to a “procedural” or
“imperative” way. Instead of programming the twin as an executable object that receives inputs
and produces outputs, the execution of the twin is driven by a satisfiability (SAT) solver: given a
sequence of inputs, the solver finds a sequence of outputs satisfying the properties, and returns
that sequence as the twin’s reaction to the inputs. Such a declarative approach has already been
attempted to simulate the execution of web services from temporal logic specifications [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Generalizing Runtime Verification</title>
      <p>
        The previous approach is the most direct application of runtime verification to digital twins.
However, its soundness rests on the hypothesis that a set of properties of the twin can be
extracted and used as formal guarantees on its execution. For a twin that is defined procedurally,
those properties can be deduced from its implementation (for example by defining properties
manually and verifying them through model checking [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], or by observing multiple executions
of the twin and deducing a formal model of its execution using process mining [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]).
      </p>
      <p>However, obtaining these guarantees may be a complex process, and completely capturing
the behavior of the twin in such a way may not be a realistic assumption. Another possibility
consists of handling the twin as a black box, and to directly compare its output to that of the
real-world entity (for a given input sequence), as described in Figure 1. A second point that
this article puts forward is that this comparison can be framed as a generalization of runtime
verification.</p>
      <p>
        Monitoring Two Traces Contrary to RV, monitoring twins involves not one, but (at least)
two traces at the same time (  and   ). The “property” that needs to be evaluated in such a
case correlates the events observed in both traces. This is a particular case of what is called a
hyperproperty [
        <xref ref-type="bibr" rid="ref15 ref16">15, 16</xref>
        ]; while a property determines whether a trace is valid or not in isolation,
in hyperproperties traces are valid or not based on their relation with other traces. It shall be
noted that this operation, taken in its most abstract form, can be any calculation; as we shall
discuss below, it is not restricted to the pairwise comparison of events at matching indices
in both traces, and can involve arbitrary constraints on the values and ordering of events at
various locations.
      </p>
      <p>
        Expressiveness As a matter of fact, an anticipated challenge for the leveraging of RV
techniques to digital twin monitoring is the relatively low expressiveness of the notations they use
as their specification language. A recent taxonomy of existing RV approaches highlights the
fact that many of them use formalisms based on propositional temporal logic or finite-state
automata [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Some of them have support for quantification over data values, or implement
basic forms of aggregation such as sum or average [
        <xref ref-type="bibr" rid="ref18 ref19 ref5 ref9">18, 5, 19, 9</xref>
        ]. However, these languages are
ill-suited in their present form to handle the rich event types and complex (and often numerical)
relationships that can involve the values they contain —and most importantly, specification
languages for hyperproperties are even more restricted than for classical properties.
Towards Stream Processing In this context, it might be desirable to expand the vision of the
problem and to consider it as a more general form of complex event processing (CEP) [
        <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
        ].
CEP is typically concerned with data-rich events, and considers arbitrary calculations over these
events in order to produce higher-level (i.e. “complex”) events. Its more general computational
model could be harnessed in order to express the potentially intricate operations required
for uncovering discrepancies between the output of a digital twin and that of its real-world
counterpart. Previous works have shown how CEP engines can evaluate properties specified
in many languages used in RV and extend them with additional constructs [22], making them
good candidates to address the expressiveness issues mentioned above.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Qualifying Divergence</title>
      <p>Another important challenge lies in the fact that not all divergences between an entity and
its twin are meaningful and indicative of a problem. There are situations where discrepancies
between an entity and its twin are expected, if not unavoidable, and still do not represent any
malfunction, modeling error, or significant drift between a twin and its real-world counterpart.
(a) Loose equality
(b) Multiple worlds</p>
      <p>Sources of Divergence A first such case is caused by uncertainty in measurements. A
physical entity will typically have its environment and behavior measured by sensors, whose
output is intrinsically tainted with uncertainty, bias, or even spurious drop-outs. Thus one
cannot expect a strict equality between values produced (or predicted) by a twin and those
measured in a real-world system. It turns out that several works in the field of RV have addressed
the issue of verifying properties in the presence of missing or imprecise events [23, 24, 25],
which could be leveraged to the context of digital twins.</p>
      <p>A second source of divergence may be caused by diferent interleavings in the events produced
by a twin and its counterpart. This can happen when events produced by multiple components
of the system happen more or less simultaneously, and are arbitrarily flattened to a particular
ordering which may difer depending on uncontrollable or external factors. Instrumentation
is sometimes designed on purpose to lose some ordering information, as is the case in some
cyber-physical systems [26].</p>
      <p>A final source of divergences comes from under-specification . In some cases, it is expected
that the digital twin is run from a coarse-grained description of the real-world entity that
does not totally capture its internal state. This typically shows up as the system appearing
to operate non-deterministically, producing diferent outputs in what are apparently identical
input conditions. In some other cases, non-determinism may simply arise from the fact that
multiple possible (and equally acceptable) outcomes are possible for the same set of initial
conditions.</p>
      <p>For all these reasons, it is unrealistic that the comparison procedure  shown in Figure 1
looks at   and   and simply expects both to be identical. We identify two ways of dealing
with this issue, one being the opposite of the other, and illustrated in Figure 3.
Single World, Loose Equality A first possibility, illustrated in Figure 3a is to let a digital twin
produce a unique output for a given input (i.e. a “single possible world”). However, it is allowed
(and even expected) that this output   difers slightly from   ; therefore, the comparison
procedure  does not look for strict equality between the two streams, but rather evaluates
a relaxed property. For example, for a system producing a stream of numerical values, one
may expect that the running average over a sliding window of  values is the same, but not the
individual events produced by both systems. In mathematical terms, the comparison criterion
is an equivalence relation that is looser than equality. For numerical values, this can be likened
to fuzzy comparators [27].</p>
      <p>This mode of operation brings challenges of its own. First, an appropriate equivalence relation
must be defined, and it is expected that such relation be specific to each problem domain. Second
is the necessity of evaluating this relation eficiently at runtime, over two streams of events that
are progressively produced by both the twin and the real-world entity. Deviations should be
reported on-the-fly, as obviously one cannot wait for the executions to complete before starting
the comparison. This seemingly innocuous observation makes it dificult to use well-known
string distance criteria, such as Levenshtein distance [28], which have a high computational
complexity and typically expect strings to be completely known in advance to calculate their
value.</p>
      <p>Multiple Worlds, Strict Equality An alternate approach, illustrated in Figure 3b, is to allow
a twin to produce multiple possible outputs for a given input. Each of these outputs corresponds
to one of the “possible worlds” the system can be in for given input conditions. Strict equality is
then sought between the real-world entity’s output, and one of those possible worlds1. In this
setting, the multiple possible worlds can either be represented explicitly (as an enumeration of
all possible outputs) or implicitly (through an abstract property that it satisfied by all possible
worlds). For example, a numerical value associated with a precision interval counts as an
abstract representation of multiple exact numerical values.</p>
      <p>The multi-world trace semantics has been used to address the question of runtime verification
with uncertainty [23, 29], and could be adapted to the problem of stream comparison for digital
twins.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper, we have highlighted the connections that can be made between the question of
detecting discrepancies between a digital twin and a concrete entity, and the problem of runtime
verification already studied in the community of software engineering and formal methods.
Although they present clear similarities, these two problems are nevertheless distinct, and some
adaptation is therefore necessary in order to leverage existing runtime verification techniques
to the particular context of digital twins.</p>
      <p>The article identified several research directions aimed at enabling real-time divergence
checking using RV techniques, which will be explored in more detail in future work. Among
these, we note the design of specification languages that are more expressive and appropriate
to the problem of digital twins, as well as the definition of trace comparison metrics that are
less strict than a simple position-by-position equality.</p>
      <p>1Stated otherwise, the entity’s output must be included in the possible outputs produced by the twin.</p>
      <p>Systems, Springer US, 2009, p. 1064.
[22] S. Hallé, R. Khoury, Writing domain-specific languages for beepbeep, in: C. Colombo,
M. Leucker (Eds.), Runtime Verification - 18th International Conference, RV 2018, Limassol,
Cyprus, November 10-13, 2018, Proceedings, volume 11237 of Lecture Notes in Computer
Science, Springer, 2018, pp. 447–457. doi:10.1007/978- 3- 030- 03769- 7_27.
[23] R. Taleb, R. Khoury, S. Hallé, Runtime verification under access restrictions, in: S. Bliudze,</p>
      <p>S. Gnesi, N. Plat, L. Semini (Eds.), FormaliSE@ICSE, IEEE, 2021, pp. 31–41.
[24] Y. Joshi, G. M. Tchamgoue, S. Fischmeister, Runtime verification of LTL on lossy traces, in:</p>
      <p>A. Sefah, B. Penzenstadler, C. Alves, X. Peng (Eds.), SAC, ACM, 2017, pp. 1379–1386.
[25] D. A. Basin, F. Klaedtke, S. Marinovic, E. Zalinescu, Monitoring compliance policies over
incomplete and disagreeing logs, in: S. Qadeer, S. Tasiran (Eds.), RV, volume 7687 of Lecture
Notes in Computer Science, Springer, 2012, pp. 151–167.
[26] S. Wang, A. Ayoub, O. Sokolsky, I. Lee, Runtime verification of traces under recording
uncertainty, in: S. Khurshid, K. Sen (Eds.), RV, volume 7186 of Lecture Notes in Computer
Science, Springer, 2011, pp. 442–456.
[27] A. Kaufmann, M. M. Gupta, Introduction to Fuzzy Arithmetic: Theory and Applications,</p>
      <p>Van Nostrand Reinhold, 1991.
[28] G. Navarro, A guided tour to approximate string matching, ACM Comput. Surv. 33 (2001)
31–88.
[29] M. Leucker, C. Sánchez, T. Schefel, M. Schmitz, D. Thoma, Runtime verification for timed
event streams with partial information, in: B. Finkbeiner, L. Mariani (Eds.), RV, volume
11757 of Lecture Notes in Computer Science, Springer, 2019, pp. 273–291.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Grieves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Vickers</surname>
          </string-name>
          , Digital Twin: Mitigating Unpredictable,
          <source>Undesirable Emergent Behavior in Complex Systems</source>
          , Springer,
          <year>2017</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>113</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Bartocci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Falcone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Francalanza</surname>
          </string-name>
          , G. Reger, Introduction to runtime verification, in: E. Bartocci, Y. Falcone (Eds.),
          <source>Lectures on Runtime Verification - Introductory and Advanced Topics</source>
          , volume
          <volume>10457</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>33</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Moosbrugger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. Y.</given-names>
            <surname>Rozier</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Schumann,</surname>
          </string-name>
          <article-title>R2U2: monitoring and diagnosis of security threats for unmanned aerial systems</article-title>
          ,
          <source>Formal Methods Syst. Des</source>
          .
          <volume>51</volume>
          (
          <year>2017</year>
          )
          <fpage>31</fpage>
          -
          <lpage>61</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Varvaressos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lavoie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gaboury</surname>
          </string-name>
          , S. Hallé,
          <article-title>Automated bug finding in video games: A case study for runtime monitoring</article-title>
          ,
          <source>Comput. Entertain</source>
          .
          <volume>15</volume>
          (
          <year>2017</year>
          ) 1:
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          :
          <fpage>28</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>B. D'Angelo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Sankaranarayanan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Sánchez</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Robinson</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Finkbeiner</surname>
            ,
            <given-names>H. B.</given-names>
          </string-name>
          <string-name>
            <surname>Sipma</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Mehrotra</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          <string-name>
            <surname>Manna</surname>
          </string-name>
          ,
          <article-title>LOLA: runtime monitoring of synchronous systems</article-title>
          , in: TIME, IEEE Computer Society,
          <year>2005</year>
          , pp.
          <fpage>166</fpage>
          -
          <lpage>174</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P. O.</given-names>
            <surname>Meredith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Jin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Grifith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <surname>G. Rosu,</surname>
          </string-name>
          <article-title>An overview of the MOP runtime verification framework</article-title>
          ,
          <source>Int. J. Softw. Tools Technol. Transf</source>
          .
          <volume>14</volume>
          (
          <year>2012</year>
          )
          <fpage>249</fpage>
          -
          <lpage>289</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Colombo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. J.</given-names>
            <surname>Pace</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Schneider, LARVA - safer monitoring of real-time Java programs (tool paper)</article-title>
          , in: D. V.
          <string-name>
            <surname>Hung</surname>
          </string-name>
          , P. Krishnan (Eds.), SEFM, IEEE Computer Society,
          <year>2009</year>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>37</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Reger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. C.</given-names>
            <surname>Cruz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. E.</given-names>
            <surname>Rydeheard</surname>
          </string-name>
          ,
          <article-title>Marq: Monitoring at runtime with QEA</article-title>
          , in: C.
          <string-name>
            <surname>Baier</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          Tinelli (Eds.), TACAS, volume
          <volume>9035</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2015</year>
          , pp.
          <fpage>596</fpage>
          -
          <lpage>610</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Basin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Klaedtke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Marinovic</surname>
          </string-name>
          , E. Zalinescu,
          <article-title>Monitoring of temporal first-order properties with aggregations</article-title>
          ,
          <source>Formal Methods Syst. Des</source>
          .
          <volume>46</volume>
          (
          <year>2015</year>
          )
          <fpage>262</fpage>
          -
          <lpage>285</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Yannakakis</surname>
          </string-name>
          ,
          <article-title>Principles and methods of testing FSMs: A survey</article-title>
          ,
          <source>Proceedings of the IEEE</source>
          <volume>84</volume>
          (
          <year>1996</year>
          )
          <fpage>1089</fpage>
          -
          <lpage>1123</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>C.</given-names>
            <surname>Constant</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Jéron</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Marchand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Rusu</surname>
          </string-name>
          ,
          <article-title>Integrating formal verification and conformance testing for reactive systems</article-title>
          ,
          <source>IEEE Trans. Software Eng</source>
          .
          <volume>33</volume>
          (
          <year>2007</year>
          )
          <fpage>558</fpage>
          -
          <lpage>574</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hallé</surname>
          </string-name>
          ,
          <article-title>Model-based simulation of SOAP web services from temporal logic specifications</article-title>
          , in: I.
          <string-name>
            <surname>Perseil</surname>
            ,
            <given-names>K. K.</given-names>
          </string-name>
          <string-name>
            <surname>Breitman</surname>
          </string-name>
          , R. Sterritt (Eds.), ICECCS, IEEE Computer Society,
          <year>2011</year>
          , pp.
          <fpage>95</fpage>
          -
          <lpage>104</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>C.</given-names>
            <surname>Baier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Katoen</surname>
          </string-name>
          , Principles of Model Checking, MIT Press,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>W. van der Aalst</surname>
          </string-name>
          , Process Mining: Data Science in Action, Springer,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Clarkson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. B.</given-names>
            <surname>Schneider</surname>
          </string-name>
          , Hyperproperties, in: CSF, IEEE Computer Society,
          <year>2008</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>65</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.</given-names>
            <surname>Finkbeiner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Stenger</surname>
          </string-name>
          , L. Tentrup, Monitoring hyperproperties,
          <source>Formal Methods Syst. Des</source>
          .
          <volume>54</volume>
          (
          <year>2019</year>
          )
          <fpage>336</fpage>
          -
          <lpage>363</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Falcone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krstic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Reger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Traytel</surname>
          </string-name>
          ,
          <article-title>A taxonomy for classifying runtime verification tools</article-title>
          ,
          <source>Int. J. Softw. Tools Technol. Transf</source>
          .
          <volume>23</volume>
          (
          <year>2021</year>
          )
          <fpage>255</fpage>
          -
          <lpage>284</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hallé</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Villemaire</surname>
          </string-name>
          ,
          <article-title>Runtime enforcement of web service message contracts with data</article-title>
          ,
          <source>IEEE Trans. Serv. Comput</source>
          .
          <volume>5</volume>
          (
          <year>2012</year>
          )
          <fpage>192</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>L.</given-names>
            <surname>Convent</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hungerecker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Leucker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schefel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schmitz</surname>
          </string-name>
          , D. Thoma,
          <article-title>TeSSLa: Temporal stream-based specification language</article-title>
          , in: T. Massoni,
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Mousavi</surname>
          </string-name>
          (Eds.), SBMF, volume
          <volume>11254</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2018</year>
          , pp.
          <fpage>144</fpage>
          -
          <lpage>162</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hallé</surname>
          </string-name>
          ,
          <source>Event Stream Processing With BeepBeep</source>
          <volume>3</volume>
          :
          <string-name>
            <given-names>Log</given-names>
            <surname>Crunching and Analysis Made Easy</surname>
          </string-name>
          , Presses de l'Université du Québec,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <article-title>Event stream processing (ESP)</article-title>
          , in: L. Liu, M. T. Özsu (Eds.), Encyclopedia of Database
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>