<!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>Veri¯cation of an industrial rule-based manufacturing system using REX</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>AnnMarie Ericsson</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikael Berndtsson</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paul Pettersson</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lena Pettersson</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Humanities and Informatics, University of SkÄovde</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>School of Innovation, Design and Engineering, MÄalardalen University</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Volvo Information Technology</institution>
          ,
          <addr-line>SkÄovde</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Formal methods are not used in their full potential for enhancing software quality in industry. We argue that seamless support in a high-level speci¯cation tool is a viable way to provide system designers with powerful and paradigm speci¯c formal veri¯cation techniques. Event condition action (ECA) rules can be used to model and implement reactive behavior in, for example, the semantic web. Independently of target system, the behavior of rule-based systems are known to be hard to analyze. The REX tool is a rule-based front-end to the timed automata CASE-tool Uppaal. The model-checker in Uppaal is used by REX enabling seamless support for model-checking rule-based speci¯cations. This paper presents experiences from modeling and verifying a system of industrial complexity as interacting rules using REX. We conclude that repeatedly performing formal analysis when constructing a system with interacting rules is a viable way of coping with the complexity of the model. Additionally, we present an implemented algorithm for optimizing the model to reduce the e®ect of state-space explosion.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The paradigm of rule-based systems is well suited for implementing the behavior
of reactive systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The dynamic behavior of rules is bene¯cial for describing
systems in such diverse areas as health care and algorithmic trading applications.
In the area of web applications, ECA rules are proposed as a suitable paradigm
for implementing, for example, behavioral aware web-applications [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and for
reactive solutions in the sematic web [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Independently of the context of the target system, if a failure of the system
causes a high cost, it must be ensured that such failures can not occur. Using
rules in critical systems implies that the systems behavior must be thoroughly
analyzed. However, analyzing a set of low-level rules is a complex task due to
interactions between rules [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. One rule may, for example, trigger another rule
causing a chain of rule-triggerings or change the outcome of the condition
evaluation of other rules. Additionally, adding, removing or changing a rule without
understanding the e®ects can be dangerous, since changes to the rule base can
introduce major errors in the system. Thus, before a change is introduced in the
rule base, the e®ect of the change need to be thoroughly analyzed to not cause
any undesired side-e®ects in the systems behavior.
      </p>
      <p>
        Formal methods are mathematically based methods for specifying and
verifying systems. Developers of complex applications can increase their product and
process quality by utilizing a formal method [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Additionally, several papers
propose that formal methods provide means for preventing errors from entering
the system in the early phases of development [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. Nevertheless, formal
methods are not used in their full potential in industry. Some of the reasons may be
the high knowledge threshold one needs to pass to be able to use them and the
extra time it may take to construct the speci¯cations [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>Several CASE tools exists supporting di®erent types of formal methods. The
drawback for our purpose is that none of them supports rule-based
applications. Modeling the behavior of a rule-based system in, for example, the timed
automata veri¯cation tool Uppaal is an error prone and time consuming task
since the tool is not designed for modeling rule-based systems.</p>
      <p>
        We address the problem of formally analyzing rule-based applications by
utilizing the power of model-checking for verifying system behavior. A graphical
tool (REX) is constructed [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], serving as a rule-based front-end to the timed
automata CASE-tool Uppaal [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Rules are speci¯ed in a high-level rule-based
language provided by REX. The speci¯cation is automatically transformed from
REX to a timed automata representation of the rule set implying that the
modelchecker in Uppaal can be utilized to verify the rules.
      </p>
      <p>This paper reports experiences gained from using REX in a case study where
an existing industrial system is modeled and veri¯ed. The case-study object is
a system for producing assembly plans for engine plants at Volvo IT in SkÄovde,
Sweden. The chosen system has a complex behavior dependent on both values
of parameters in incoming telegrams and stored values in database tables. The
correctness issue of the case-study object is critical since a failure in this system
stops the production plants and causes severe economical loss for the company.</p>
      <p>
        The behavior of the system is modeled as a set of rules and complex events
in REX. The correctness of the model is veri¯ed by formulating veri¯cation
expressions in REX that are automatically executed in Uppaal. The results of
our case study shows that using REX as a front-end to Uppaal is a feasible
approach for model-checking a rule-based system of industrial complexity. The
experiences gained from performing the case study teaches us that iteratively
utilizing the ability to formally verify properties of the system during
development is a viable way of coping with the complexity arising in a system built by
interacting rules triggered by complex events. This paper focus on reporting the
lessons learned from the case study, for a detailed description of the actual case
study we refer to [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Preliminaries</title>
      <p>An event condition action (ECA) rule executes a sequence of code (action A)
if a speci¯ed condition C is true when event E occurs. The action part of the
rule can be an arbitrary sequence of code and the condition is commonly a
boolean expression or an SQL expression returning true or false. The triggering
event can be a primitive event, i.e. a single occurrence such as an update of a
database, a sensor reading or a message arriving to the system. Additionally,
some systems support complex events, implying that the triggering event may
be a combination of both primitive and complex events.</p>
      <p>Events contributing to a complex event type is composed by operators such as
conjunction(^), disjunction (_) and sequence (;). A complex event E = E1 ^ E2,
for example, is generated when there is an occurrence of both type E1 and type
E2 in the event history.
2.1</p>
      <p>
        REX
The Rule and Event eXplorer (REX) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is a rule-based front-end to the timed
automata CASE tool Uppaal [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. A system and its requirement properties are
speci¯ed in terms of rules in REX. The rules are automatically transformed to
a timed automaton representation while the requirement properties to check are
transformed to an expression in computational tree logic (CTL) and a designated
test-automaton [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. REX automatically runs the model-checker in Uppaal and
forwards the result from the model-checker to its user.
      </p>
      <p>
        Ideally, a model of the system is created in REX to support early detection
of errors in the development phase. Additionally, in the maintenance phase, the
model can be used to ensure that changes in the system, i.e. removing, changing
or adding rules and events, does not cause any undesired side-e®ects.
Specifying models in REX The item types (rules, events, conditions, actions,
dataobjects, data tables) supported by REX are speci¯ed in graphical property
tables. Relations between items of the same type are shown in tree structures
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The operators currently supported in REX includes conjunction, disjunction,
sequence, non-occurrence, times, delay and sliding window. The times operator
generates an event E when a speci¯ed event E1 has occurred n times, the delay
operator generates a speci¯ed event E t time units after the occurrence of a
speci¯ed event E1.
      </p>
      <p>In addition to the item types, a scenario editor provides ability to specify
di®erent scenarios. A scenario may, for example, be that event E1 occurs at time
2 with event parameter x=4; event E2 occurs at time 4 and event E5 occurs at
time 6. In the default scenario, primitive events occur at any time in any order.
However, this behavior is likely to cause a state space explosion in the timed
automaton model. Providing the user with ability to create scenarios gives the
user means to reduce the search space for the model checker and to focus the
veri¯cation on speci¯c problems.</p>
      <sec id="sec-2-1">
        <title>Specifying veri¯cation properties in REX Application speci¯c proper</title>
        <p>
          ties, such as, "can rule R1 execute before rule R3", are speci¯ed using property
templates. Two useful examples of property templates are Universality and
Existence. The Universality pattern is suitable when checking that the system will
always satisfy a speci¯c property. It is, for example, useful when checking that
a correct ¯nal state will always be reached. The Existence pattern is suitable
when checking if an erroneous state can be reached. Each pattern has a scope,
de¯ning the part of execution when the property must hold. Scope Globally, for
example, de¯nes that the property must hold during the entire execution while
scope P Before Q de¯nes that property P must hold before Q holds [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          A property template may, for example be "EXISTS Predicate P BEFORE
predicate Q". The user de¯ned parts of the templates are predicates P,Q,R and
S. In the example, if predicate P="Event E occurs" and predicate Q="Rule R
executes and variable x == 5". Running this property pattern checks whether
event E can occur before rule R executes simultaneously as x == 5. For an
in-depth discussion of how the patterns are used in REX we refer to [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
2.2
        </p>
        <p>
          Uppaal
Uppaal is a toolbox for modeling and analyzing speci¯cations built on the theory
of timed automata [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] extended with additional features. The tool is developed
jointly by Uppsala University and Aalborg University [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. A model in Uppaal
is built by a network of synchronizing timed automata. Each timed automaton
simulates a process which is able to synchronize with other automata.
        </p>
        <p>Given an Uppaal model of a system, model-checking can be performed by
specifying the properties needed to be checked in timed CTL. The property can
quantify over speci¯c states or over a trace of states. It is, for example, possible
to ask if variable x will always have a value less than 5 in location S1 in process
P (A[]P:S1 and x &lt; 5) or if it is possible to reach location S2 within 3 time
units (E &lt;&gt; P:S2 and globalClock &lt; 3). In this paper, Uppaal syntax is used
to describe property expressions.
2.3</p>
        <p>TUR
The group Manufacturing Production Systems at Volvo IT SkÄovde is responsible
for development and maintenance of IT solutions, mainly in the areas Supply
Chain and Production Planning, for the engine plants in the car factory. The
system TUR is implemented and maintained by this group.</p>
        <p>The main task of TUR is to convert a high-level assembly plan for items
(di®erent types of engines) to be manufactured to a detailed ordered plan for
each sub-item (camshaft, crankshaft, etc.) to be constructed or delivered by each
assembly-line. The detailed assembly-plan contains an ordered sequence of items
to be produced or delivered by each assembly-line.</p>
        <p>To avoid lack of items, the assembly plans provided by TUR must be
coordinated. The order of items manufactured by di®erent plants must be correlated
with each other since assembly lines combining items from di®erent plants must
receive all items contributing to their item in correct time and order.</p>
        <p>The system TUR is a sequential program with a rule-based semantics. The
control °ow of TUR was modeled as rules and complex events in REX. The
model created in this project consists of 63 rules, 12 complex events, 50 primitive
events, 30 data variables and 45 event parameters separated on di®erent events.
Some of the complex events are composed by other complex events in an event
hierarchy. One of the complex events with depth three, and four of the complex
evens have depth two. The rules are heavily interacting with each other, i.e. the
execution of most rules trigger one or several other rules.</p>
        <p>Additionally, the speci¯cation consists of 12 modeled database tables with
5 rows ¯lled with values. Moreover, 20 of the actions performed by the rules
consist of a function modeling an SQL SELECT expression over one or more of
the modeled tables. The veri¯cation of the model was performed by constructing
veri¯cation expressions in REX that were automatically executed in the
modelchecker provided by Uppaal.</p>
        <p>The main problem in verifying TUR was that the behavior of the system to
a high degree is dependent on values in database tables. Checking all execution
paths with all di®erent combinations of initial database values is an unsolvable
problem for any model-checker. A manual analysis were performed to ¯nd a
set of initial database states, each representing one of the observable behaviors.
The observable behaviors are identi¯ed to be a correct execution with no error
message for each possible telegram arriving to the system and di®erent types of
error messages that can be reported for each type of telegram. This approach
resulted in 20 di®erent initial database states, each of them were checked by 34
di®erent veri¯cation expressions.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Lessons learned</title>
      <p>The experience of using REX for modeling a system larger than toy-size
pinpointed abilities of REX that are useful in a tool for developing rules. However, it
also revealed some areas where REX can be improved. The following subsections
discuss what features a modeling and veri¯cation tool for rule-based system need
to support, based on experiences gained from this project.
3.1</p>
      <sec id="sec-3-1">
        <title>Performance</title>
        <p>The performance of REX and Uppaal is dependent on the level of non-determinism
in the model. The non-determinism of the TUR system origins in the fact that
the behavior is dependent on values in database tables. The approach taken for
overcoming this problem is to trade memory consumption with time. Instead of
checking one large non-deterministic model, several rather deterministic models
are checked. In the case-study, each model was veri¯ed in less than 1 second.
One can argue that reducing the number of checked initial states to 20 is more
testing than model-checking. However, the model-checker can still ¯nd erroneous
traces that would have been unrevealed by a testing approach although some
errors might be uncovered. Since checking for all di®erent initial database states
is impossible, one have to put a lot of e®ort in ¯nding a representative set of
initial database states in systems like TUR.</p>
        <p>The approach with scenarios is a trade o® between time and memory since
dividing a speci¯cation into several more deterministic models consumes less
memory for checking each model. However, it takes time to run, create and
administrate a large set of models. Additionally, some errors may not be reveal
if we don't check all possible combinations of initial states.</p>
        <p>The behavior of TUR depends on values in database tables, however, the
problem with state space explosion is similar for systems where the input to
the system is a large number of di®erent events occurring in nondeterministic
order. If the number of di®erent events that can occur in any order is n, then the
number of orders that must be checker is n!. In REX, preprocessing is performed
to analyze the rule set and reduce the number of events in the input domain.
The preprocessing complements the approach of trading memory for time.
Preprocessing in REX Transforming the entire set of rules from REX to
Uppaal will in many cases result in an unnecessarily big automaton. Some
of the rules in the rule set will not a®ect the outcome of running the query
independently of if they are triggered or not. In order to reduce the search space
for the model checker, REX removes rules and events not related to the queried
property before transforming the rule set.</p>
        <p>Since properties in REX are expressed in terms of rules and events with
clearly speci¯ed relations, it is possible to preprocess the model in order to
reduce its size. If, for example, property P is de¯ned to check whether rule R1
can be executed before rule R2, only rules and events that can a®ect when R1
or R2 will execute is included in the automaton generated to verify P.</p>
        <p>
          We utilize the knowledge of relations between rules given by the triggering
(TG) and activation (AG) graphs [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. However, the representation of an arc
ai;j in the activation graph is extended to represent any change in the condition
evaluation of rule Rj when Ri is executed, not just a change from false to true.
        </p>
        <p>Let the set N represent all rules in the rule set and R represent the set of all
rules included in property P. The nodes in the triggering and activation graphs
are representing the rules in set N. For each node ni 2 N, add all rules
representing nodes that can reach ni in TG or AG to the set R. After preprocessing the
set of rules and the property to check in REX, the set R contains all rules which
directly or transitively triggers or activates some of the rules in the property.
All rules in R and all events that may trigger some rule in R are included in the
transformed model.</p>
        <p>Assume, for example, a set of rules N = fR1; R2; R3; R4; R5; R6g. For i = 1 to
6, each rule Ri 2 N are triggered by an event Ei. The triggering and activation
graph of the rule set is shown in Figure 1, ¯lled lines represents triggerings
and dashed lines represents activations. Assume that property P = R2 always
executes before R1 must be checked and assume a non-deterministic environment
where all events E1; E2; E3; E4; E5 and E6 can occur in any order. Checking
property P in Uppaal without preprocessing the set of rules results in 6! di®erent
occurrence orders for the speci¯ed events. This implies that there are 6! di®erent
occurrence orders for Uppaal to check.</p>
        <p>If the preprocessor is utilized, the set R initially contains R1 and R2. After
preprocessing the rule set, R = fR1; R2; R3g. Hence, if the rule set is
preprocessed, the set of rules transformed to Uppaal is reduced to R1; R2; R3 and
the environment automaton only consist of E1; E2; E3 resulting in 3! di®erent
occurrence orders.</p>
        <p>In the case study, the preprocessing did not have a signi¯cant impact of the
performance result since the non-determinism mainly originated in data from
database tables and not in events occurring in non-deterministic order. However,
it may be possible to improve the algorithm for preprocessing rules. If a tuple in
a table is never read by any rule in the rules resulting from the preprocessing, it
should be possible to remove the table from the rule set before it is transformed
to Uppaal and in that way reduce the search space even further.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Support for automatic veri¯cation</title>
        <p>Support for veri¯cation is the main aim of the REX tool. The ability to formulate
and run veri¯cation questions in every stage of the modeling phase, even when
the system is not yet executable, is invaluable when designing a set of rules. The
developer need to think very hard about the behavior of the system to be able
to formulate veri¯cation expressions and de¯ne expected results. By running
the expressions in the veri¯er, the developer retrieves feedback about whether
the set of rules behave as intended. If an error is introduced at some stage of
development it may be revealed when the veri¯er is executed.</p>
        <p>During the case study, the ability to model-check the behavior of the model in
Uppaal was repeatedly used. The experience from this approach is that several
errors were detected immediately after entering the model. As an example, a
new rule R1 was introduced in the model. The action part of R1 generate event
E1, E1 triggers rule R2 which is perfectly right. However, E1 is also the initiator
of the complex event E3. The fact that E1 initiates E3 was not observer by the
developer, but revealed in the model-checker since it found an execution path
where rules triggered by E3 could execute in wrong order due to R1.</p>
        <p>Lots of research concerning analysis of wether a set of rules is terminating
or not exists within the area of active databases [15{17]. However, when a
complex system, such as TUR, is modeled where the rules are heavily interacting
with each other, guarantees for termination and con°uence is not su±cient. The
issue of ensuring that the system behaves as intended requires that application
speci¯c properties can be veri¯ed iteratively during development. If veri¯cation
is performed for the ¯rst time when the model is ¯nished, the errors may be
hard to correct in a rule-based system with interacting rules. The complexity of
the behavior of the rule base quickly increases with its size and if the rules are
interacting with each other it may be hard to correct an erroneous rule without
causing undesirable side-e®ects.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Support for simulating rule behavior</title>
        <p>The simulator in REX uses Uppaal to retrieve step by step information about
the execution. Each step is a step of execution in the timed automata
representation of the rule set. The information is parsed to rules and events before it is
presented to the user. REX supports the ability to exclude single rules and events
or groups of rules and events from being visualized in the simulator in order to
focus the simulation on speci¯c items. In each step, the user can choose which
rule to execute in the next step. Additionally, traces retrieved from executing a
veri¯cation expression can be visualized in the simulator.</p>
        <p>The simulator in REX provided good support for understanding the behavior
of TUR during the case study. However, with the amount of rules that exists in
the TUR model, it is hard to follow the behavior of all rules simultaneously. REX
shows the state of each rule in each step in a separate color coded swim-lane.
The swim-lanes are organized horizontally and scrolling is required to view all
rules. The solution is good if the user want to follow the behavior of one or a
group of rules, however, it is hard to grasp the behavior of the entire rule set.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion and Related Work</title>
      <p>Most previous work addressing formal analysis of rule based systems concern
the properties termination and con°uence (e.g. [15{17]). As far as we know,
no previous work addresses model-checking of application speci¯c properties on
rules with complex events.</p>
      <p>
        Some previous works exist within the area of visually showing executing
rules (e.g. [
        <xref ref-type="bibr" rid="ref18 ref19">18, 19</xref>
        ] ). Most works only shows examples on small rule sets and it
is not clear how the solutions scale when the set of rules is increasing. In the
work of [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], Vizar, a 3D approach for showing rules is presented where rules
can be shown in di®erent levels of abstraction. The simulator in Vizar displays
an existing trace ¯le while REX utilizes a model-checker supporting step-wise
simulation. The experience from the case study clearly indicates that it is hard to
view the execution of a large set of rules in a comprehensive way. Using di®erent
views for di®erent levels of abstractions as in Vizar may be a feasible way to
improve rule visualization in practise.
      </p>
      <sec id="sec-4-1">
        <title>Conclusion</title>
        <p>Independently of application area (e.g. Semantic Web, manufacturing,
algorithmic trading) analyzing a set of low-level rules is a complex task due to
interactions between rules. This paper presents experiences from modeling and verifying
a system of industrial complexity as interacting rules using REX. In particular,
we have presented our experiences with respect to i) performance, ii) support
for automatic veri¯cation and iii) support for simulating rule behavior using a
model-checker.</p>
        <p>The performance of a rule analysis tool is one of the crucial issues if it is
going to be used in practice. Using a model-checker can potentially lead to state
space explosion problems. In order to avoid such problems, we have implemented
an algorithm that preprocess rule sets.</p>
        <p>Automatic veri¯cation of a rule set in every stage of the application
development, even when the system is not yet executable, provides support for coping
with the complexity of interacting rules.</p>
        <p>Simulating rule behavior visually is a good option when verifying a rule set
together with domain experts. However, there are no obvious approaches to
visualize large rule sets or the entire behavior of a rule set.</p>
        <p>We argue that the approach of creating high-level tools to existing formal
analysis tools is a viable way of reducing the burden of analyzing ECA rules.</p>
        <p>Finally, we believe that automatic veri¯cation of rule sets and simulating
rule sets visually desperately need to be integrated with existing software
development methods and notations. To the best of our knowledge, many software
projects develop ECA rules in ad hoc manners rather than developing ECA rules
as a natural component of their software development process.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgement</title>
      <p>This work was partially supported by the Swedish Foundation for Strategic
Research via the strategic research centre PROGRESS and CUGS (the national
graduate school of computer science). The authors would like to thank the sta®
at Volvo IT SkÄovde for access to the system TUR and for help and support
during this project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bailey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Berndtsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dietrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kozlenkov</surname>
          </string-name>
          , W. May,
          <string-name>
            <given-names>P. L.</given-names>
            <surname>Patranjan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pinto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schroeder</surname>
          </string-name>
          , and G. Wagner, \
          <article-title>State-of-the-art on evolution and reactivity</article-title>
          .,
          <source>Tech. Rep. REWERSE deliverable I5-D1</source>
          ,
          <year>2004</year>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Daniel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Facca</surname>
          </string-name>
          , \
          <article-title>Modeling web applications reacting to user behaviors,"</article-title>
          <source>Comput. Netw.</source>
          , vol.
          <volume>50</volume>
          , no.
          <issue>10</issue>
          , pp.
          <volume>1533</volume>
          {
          <issue>1546</issue>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>J.</given-names>
            <surname>Bailey</surname>
          </string-name>
          , G. Dong, and
          <string-name>
            <given-names>K.</given-names>
            <surname>Ramamohanarao</surname>
          </string-name>
          , \
          <article-title>Decidability and undecidability results for the termination problem of active database rules," in PODS '98: Proceedings of the seventeenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems</article-title>
          . New York, NY, USA: ACM Press,
          <year>1998</year>
          , pp.
          <volume>264</volume>
          {
          <fpage>273</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>J.</given-names>
            <surname>Bowen</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Hinchey</surname>
          </string-name>
          , \
          <article-title>Ten commandments of formal methods</article-title>
          ...
          <source>ten years later," Computer</source>
          , vol.
          <volume>39</volume>
          , no.
          <issue>1</issue>
          , pp.
          <volume>40</volume>
          {
          <issue>48</issue>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Bowen</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Hinchey</surname>
          </string-name>
          , \
          <article-title>Ten commands of formal methods," in High-integrity system speci¯cation and design</article-title>
          ,
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Bowen</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Hinchey</surname>
          </string-name>
          , Eds. Springer-Verlag,
          <year>1998</year>
          , pp.
          <volume>215</volume>
          {
          <fpage>230</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>A.</given-names>
            <surname>Hall</surname>
          </string-name>
          , \
          <article-title>Using formal methods to develop an atc information system," IEEE Softw.</article-title>
          , vol.
          <volume>13</volume>
          , no.
          <issue>2</issue>
          , pp.
          <volume>66</volume>
          {
          <issue>76</issue>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>L.</given-names>
            <surname>Baresi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Orso</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Pezze</surname>
          </string-name>
          , \
          <article-title>Introducing formal speci¯cation methods in industrial practice,"</article-title>
          <source>in ICSE '97: Proceedings of the 19th international conference on Software engineering</source>
          . New York, NY, USA: ACM Press,
          <year>1997</year>
          , pp.
          <volume>56</volume>
          {
          <fpage>66</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>A.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Berndtsson</surname>
          </string-name>
          , \
          <article-title>Rex, the rule and event explorer,"</article-title>
          <source>in DEBS '07: Proceedings of the 2007 inaugural international conference on Distributed eventbased systems</source>
          ,
          <year>2007</year>
          , pp.
          <volume>71</volume>
          {
          <fpage>74</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Bengtsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. G.</given-names>
            <surname>Larsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pettersson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wang</surname>
          </string-name>
          , \
          <article-title>Uppaal - a tool suite for automatic veri¯cation of real-time systems,"</article-title>
          <source>In Hybrid Systems III: Veri¯cation and Control</source>
          , pp.
          <volume>232</volume>
          {
          <issue>243</issue>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. A. Ericsson, \
          <article-title>Verifying an industrial system using rex,"</article-title>
          <source>in Technical Report HSIKI-TR-08-001</source>
          , School of Humanities and informatics, University of SkÄovde,
          <year>June 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>A.</given-names>
            <surname>Ericsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pettersson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Berndtsson</surname>
          </string-name>
          , and M. SeiriÄo, \
          <article-title>Seamless formal veri¯- cation of complex event processing applications,"</article-title>
          <source>in DEBS '07: Proceedings of the 2007 inaugural international conference on Distributed event-based systems</source>
          ,
          <year>2007</year>
          , pp.
          <volume>50</volume>
          {
          <fpage>61</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>M. B. Dwyer</surname>
            ,
            <given-names>G. S.</given-names>
          </string-name>
          <string-name>
            <surname>Avrunin</surname>
            , and
            <given-names>J. C.</given-names>
          </string-name>
          <string-name>
            <surname>Corbett</surname>
          </string-name>
          , \
          <article-title>Property speci¯cation patterns for ¯nite-state veri¯cation,"</article-title>
          <source>in Proc. 2nd Workshop on Formal Methods in Software Practice (FMSP-98)</source>
          , M. Ardis, Ed. New York: ACM Press,
          <year>1998</year>
          , pp.
          <volume>7</volume>
          {
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>R.</given-names>
            <surname>Alur</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. L.</given-names>
            <surname>Dill</surname>
          </string-name>
          , \
          <article-title>A theory of timed automata,"</article-title>
          <source>Theoretical Computer Science</source>
          , vol.
          <volume>26</volume>
          , pp.
          <volume>183</volume>
          {
          <issue>235</issue>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. E. Baralis,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Paraboschi</surname>
          </string-name>
          , \
          <article-title>Improved Rule Analysis by Means of Triggering and Activation Graphs," in Rules in Database Systems</article-title>
          (RIDS 95), T. Sellis, Ed.,
          <year>1995</year>
          , pp.
          <volume>165</volume>
          {
          <fpage>181</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>J. Bailey</surname>
            , G. Dong, and
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Ramamohanarao</surname>
          </string-name>
          , \
          <article-title>On the decidability of the termination problem of active database systems,"</article-title>
          <source>Theoretical Computer Science</source>
          , vol.
          <volume>311</volume>
          (
          <issue>1-3</issue>
          ), pp.
          <volume>389</volume>
          {
          <issue>437</issue>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>A.</given-names>
            <surname>Aiken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hellerstein</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          , \
          <article-title>Static analysis techniques for predicting the behavior of active database rules,"</article-title>
          <source>ACM Transactions on Database Systems</source>
          , vol.
          <volume>20</volume>
          , pp.
          <volume>3</volume>
          {
          <issue>41</issue>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. E. Baralis,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Paraboschi</surname>
          </string-name>
          , \
          <article-title>Compile-time and runtime analysis of active behaviors," Knowledge and Data Engineering, IEEE Transactions on</article-title>
          , vol.
          <volume>10</volume>
          , no.
          <issue>3</issue>
          , pp.
          <volume>353</volume>
          {
          <issue>370</issue>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. T. Fors, \
          <article-title>Visualization of rule behaviour in active databases,"</article-title>
          <source>in VDB</source>
          ,
          <year>1995</year>
          , pp.
          <volume>215</volume>
          {
          <fpage>231</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. E. Benazet,
          <string-name>
            <given-names>H.</given-names>
            <surname>Guehl</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Bouzeghoub</surname>
          </string-name>
          , \
          <article-title>Vital: A visual tool for analysis of rules behaviour in active databases,"</article-title>
          <source>in Proceedings of the Second International Workshop on Rules in Database Systems</source>
          . Springer-Verlag,
          <year>1995</year>
          , pp.
          <volume>182</volume>
          {
          <fpage>196</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>T.</given-names>
            <surname>Coupaye</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. L.</given-names>
            <surname>Roncancio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bruley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Larramona</surname>
          </string-name>
          , \
          <article-title>3d visualization of rule processing in active databases,"</article-title>
          <source>in NPIV '97: Proceedings of the 1997 workshop on New paradigms in information visualization and manipulation</source>
          ,
          <year>1997</year>
          , pp.
          <volume>39</volume>
          {
          <fpage>42</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>