<!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>Applying Model Transformation and Event-B for Specifying an Industrial DSL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ulyana Tikhonova</string-name>
          <email>u.tikhonova@tue.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Maarten Manders</string-name>
          <email>m.w.manders@tue.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mark van den Brand</string-name>
          <email>m.g.j.v.d.brand@tue.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Suzana Andova</string-name>
          <email>s.andova@tue.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tom Verhoeff</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Technische Universiteit Eindhoven</institution>
          ,
          <addr-line>P.O. Box 513, 5600 MB Eindhoven</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2013</year>
      </pub-date>
      <fpage>41</fpage>
      <lpage>50</lpage>
      <abstract>
        <p>In this paper we describe our experience in applying the Event-B formalism for specifying the dynamic semantics of a real-life industrial DSL. The main objective of this work is to enable the industrial use of the broad spectrum of specification analysis tools that support Event-B. To leverage the usage of Event-B and its analysis techniques we developed model transformations, that allowed for automatic generation of Event-B specifications of the DSL programs. The model transformations implement a modular approach for specifying the semantics of the DSL and, therefore, improve scalability of the specifications and the reuse of their verification.</p>
      </abstract>
      <kwd-group>
        <kwd>domain specific language</kwd>
        <kwd>Event-B</kwd>
        <kwd>model transformations</kwd>
        <kwd>verification and validation</kwd>
        <kwd>reuse</kwd>
        <kwd>scalability</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Domain-Specific Languages (DSLs) are a central concept of Model Driven
Engineering (MDE). A DSL provides domain notions and notation for defining
models. It implements the semantic mapping of the models by means of model
transformations. A DSL bridges the gap between the domain level and an
execution platform. From a semantics point of view this gap can be quite wide, i.e.
the DSL implementation usually includes rather complicated design solutions
and algorithms. To manage the complexity of the industrial DSL, considered
in this paper, we provide an explicit definition of its semantics by means of a
formal method. This allows for formal specification of the DSL semantics and
for assessing correctness of the specified semantic mapping via verification and
validation.</p>
      <p>In this paper we discuss the use cases of verification and validation applied
to a DSL specification in an industrial context. We identify two different roles,
that use different types of analysis of the DSL specification. A DSL developer is
interested in validating and checking consistency of the DSL design and
implementation. A DSL user is interested in getting better understanding of the DSL
semantics, for example via simulation of its specifications. Correspondingly, in
the context of MDE a formal specification of a DSL can be given on two
abstraction levels: the DSL metamodel level and the DSL model level.</p>
      <p>
        There exists quite a number of formalisms for specifying behavior and tools
for analyzing these specifications using different verification and validation
techniques. In this research we use the Event-B formalism [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and the Rodin
platform [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], as they allow the implementation of all use cases listed above. By
using Event-B and Rodin we can (1) prove consistency of the DSL semantics
specifications with (automatic and interactive) provers, (2) find deadlocks and
termination problems using model checkers, (3) use animators to validate the
specified semantics with the help of domain experts, and (4) provide
graphical visualization of the specification to help DSL users to understand how their
programs run. All these tools are available in Rodin for Event-B.
      </p>
      <p>In this paper, we show how Event-B and Rodin can be adopted in practice
and applied to the industrial use cases, through model transformations from
the DSL to Event-B. Our model transformations can automatically generate an
Event-B specification for each concrete DSL program. For this, we apply the
techniques of composition and instantiation of Event-B specifications. Composition
of Event-B specifications simplifies the creation, maintenance and verification of
larger specifications, because one can handle the smaller components separately.
Instantiation is a way to concretize a generic Event-B specification, defined on
the DSL metamodel level, to the model level of a concrete DSL program. The
instantiation technique allows for the reuse of verification results from one level
to the other. As a result of applying these techniques, our model transformations
improve usability of Event-B and Rodin.</p>
      <p>In the rest of the paper, Section 2 gives the overview of the industrial DSL
and defines roles and use cases; Section 3 introduces the Event-B formalism;
Sections 4.1 and 4.2 describe the decomposition and instantiation techniques;
Section 4.3 outlines the implementation of our approach and results of its
application. Related work is discussed in Section 5. Conclusions and directions for
future work are given in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Case Study and Use Cases</title>
      <p>Our case study was performed at ASML,1 a producer of complex lithography
machines for the semiconductor industry. In our case study we specified the
dynamic semantics of the LACE DSL. LACE (Logical Action Component
Environment) is one of the DSLs, developed by and used within ASML for controlling
lithography machines. A lithography machine consists of many physical
subsystems (such as actuators, projectors, and sensors), which operate simultaneously
in order to perform the required functions of the machine. LACE allows for
specifying how subsystems operate in collaboration with each other by means of
so-called logical actions. An example of a logical action is shown in Figure 1.</p>
      <p>LACE has a graphical notation based on UML activity diagrams. A logical
action consists of subsystem actions (rounded rectangles in Figure 1), each of</p>
      <sec id="sec-2-1">
        <title>1 www.asml.com, http://en.wikipedia.org/wiki/ASML_Holding</title>
        <p>objectPosition
framePosition</p>
        <p>take_a_snapshot
Laser</p>
        <p>Sensor</p>
        <p>Handler</p>
        <p>Projector
AdjustFramePosition</p>
        <p>PositionObject
ProduceLight</p>
        <p>GrabAFrame</p>
        <p>MoveToParking</p>
        <p>SwitchGlass
snapshot
which belongs to a subsystem, that executes this subsystem action (vertical
column, containing the rounded rectangle). Subsystem actions, combined together
into a so-called scan (dashed rounded rectangle), are executed synchronously.
Thus, in Figure 1 the Sensor subsystem starts and stops the GrabAFrame action
at the same moments, as the Laser subsystem starts and stops the ProduceLight
action. Subsystem actions within a logical action can be executed sequentially or
concurrently (thick arrows, fork and join nodes). For example, the subsystem
actions AdjustFramePosition and PositionObject are independent actions and
can be executed in any order or in parallel, but the GrabAFrame action can be
performed only after both these actions are finished. Finally, subsystem actions may
require and produce data. The dataflow in a logical action is depicted by means
of thin arrows, input and output pins. For example, in Figure 1 the GrabAFrame
action produces data, which is saved in the snapshot output parameter.</p>
        <p>The high-level description of the machine subsystems’ behavior, given in
logical actions, is translated into the invocations of hardware drivers and a
synchronization driver in such a way that the resulting execution matches the behavior
specified in the logical actions. The semantic gap between LACE and driver
functions is wide, and thus the translation is hard to develop, maintain,
understand, and use. We construct a formal specification of LACE and apply different
kinds of analysis to it, in order to enhance understandability, maintainability
and usage of the DSL translation. We identify the following roles and use cases
of specification of a DSL and its analysis in the industrial context (Figure 2).</p>
        <p>A DSL developer designs and develops the DSL by constructing its
metamodel and semantic translations. Formal specification of this DSL
implementation allows for the verification, such as checking that it is consistent,
noncontradictive, feasible and complete. A DSL user specifies DSL programs as
instances of the DSL metamodel. In the context of formal methods the
instantiation of metamodel by a DSL program needs to be verified separately. Formal
specification of the DSL programs allows for the execution of specifications, and</p>
        <p>DSL developer</p>
        <p>DSL user</p>
        <p>DSL implementation</p>
        <p>DSL programs
prove / evaluate
conformance</p>
        <p>prove
consistency
simulate /
model check /
visualize
thus for model checking and simulation. The construction of the LACE
specifications and the implementation of the listed use cases are described in Section 4.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Event-B</title>
      <p>
        Event-B is an evolution of the B method, both introduced by Abrial [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Event-B
employs set theory and first-order logic for specifying software and/or hardware
behavior. A big advantage of Event-B is its tool support, offered by the Rodin
platform [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Using Rodin and its plug-ins, one can create and edit Event-B
specifications, verify them using automatic or interactive provers, animate and
model check Event-B specifications.
      </p>
      <p>An Event-B specification consists of contexts and machines. A context
describes the static part of a system: sets, constants and axioms. A machine uses
(sees) the context to specify behavior of a system via a state-based formalism.
Variables of the machine define the state space. Events, which change values of
these variables, define transitions between the states. An event consists of guards
and actions, and can have parameters. An event can occur only when its guards
are true, and as a result of the event its actions are executed. The properties of
the system are specified as invariants, which should hold for all reachable states.
The properties are verified via proving automatically generated proof obligations
and/or via model checking.</p>
      <p>
        The attractive simplicity of Event-B is enhanced by techniques such as shared
event composition and generic instantiation, which support scalability and reuse
of Event-B specifications [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We discuss these techniques in detail in Section 4.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Model Transformations from LACE to Event-B</title>
      <p>
        The Rodin platform allows for the implementation of the use cases described in
Figure 2, provided that the corresponding Event-B specifications of LACE are
given. This poses the following problems. First, the semantics of LACE is
complex, therefore capturing it within Event-B machines is challenging and results
in a big specification, which is hard to understand, maintain and verify. To tackle
this problem we apply two types of composition of Event-B specifications:
composition of semantic features and composition of machines (Section 4.2). The
LACE specification is composed using model transformations. Second, while a
specification of LACE on the metamodel level can be created and analyzed once,
specifications of the LACE programs need to be constructed and analyzed many
times by DSL users. We cannot expect DSL users to create Event-B
specifications of their LACE programs and to verify them themselves. Therefore, we
apply model transformations from LACE to Event-B to automatically generate
specifications of LACE programs and we use the generic instantiation technique
to verify their conformance to the LACE specification, given on the metamodel
level (Section 4.1). Moreover, we enhance simulation of Event-B specifications
of LACE programs by providing a user-friendly visualization.
4.1 Instantiation of Event-B specification
Generic instantiation is a technique, proposed by Abrial and Hallerstede to reuse
an existing Event-B specification by refining the data structures, specified in its
constants and variables, in a new copy of this specification [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We apply generic
instantiation as depicted in Figure 3 (on the left). The concepts of conceptual
machine and of composite machine are introduced in Subsection 4.2.
      </p>
      <p>DSL / EMF</p>
      <p>Event-B
l
e
od le
The metamodel context captures the structure specified in the LACE
metamodel. A conceptual machine uses this context to specify the dynamic
semantics of LACE in terms of the metamodel. Based on the structural properties,
specified in the axioms of the metamodel context, the conceptual machines
are proved to be consistent and complete by discharging the corresponding proof
obligations using the Rodin provers. Thus, the semantics is verified on the
metamodel level. The metamodel context and the conceptual machines for a
specific DSL are constructed manually and only once.</p>
      <p>In the model context, values are assigned to the sets and constants,
introduced in the metamodel context. The assignments are done in the axioms of
the model context. Therefore, being used by a composite machine, this
context specifies behavior of a concrete LACE program – on the model level. This
specification can be model checked and animated, allowing for the analysis of a
particular LACE program. Model contexts are generated from LACE programs
automatically by means of model transformations.</p>
      <p>
        According to the generic instantiation technique, if all structural properties,
defined in the metamodel context, can be derived for the structure, instantiated
in the model context, then the verification of the Event-B specification can be
extended straightforwardly from the metamodel level to the model level [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] it is proposed to use theorem proving to show this derivation.
      </p>
      <p>
        Due to the large sizes of the model contexts, generated from LACE
programs, the automatic provers of Rodin fail to discharge instantiation theorems.
On the other hand, we do not expect an average DSL user to prove these
theorems using Rodin interactive provers, as it requires knowledge of propositional
calculus and understanding of proof strategies. Therefore, instead of the
theorem proving, we employ evaluation of structural properties predicates in the
ProB animator integrated in Rodin [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Thus, we achieve automatic proof of
instantiation in Event-B.
4.2
      </p>
      <p>Composition of Event-B specification
As we mentioned before, capturing semantics of LACE within Event-B machines
is rather complicated due to their different abstraction levels. To handle this
complexity we employ modularity of LACE semantics. Each module is described
separately as a conceptual machine in Event-B. Composition of the conceptual
machines gives a resulting Event-B machine, which specifies the LACE dynamic
semantics. The modular approach facilitates development, understandability and
proving the correctness of the specification. We distinguish two types of
modularity in the dynamic semantics of LACE: semantic modularity and architectural
modularity.</p>
      <p>To manage complexity of the LACE semantics we decompose it into separate
semantic features (SFs): Core SF, Order SF, Scan SF and Data SF. The Core
SF specification defines common concepts and interfaces: logical actions,
consisting of subsystem actions, subsystems and events for requesting execution of
logical actions and subsystem actions. Order SF, Scan SF and Dataflow SF are
specified independently on the basis of the Core SF machine by adding extra
variables, invariants, parameters, guards and actions to the Core SF machine
and by changing some of the Event-B types, used in it. Order SF introduces
partial order of execution of subsystem actions within a logical action. Scan
SF joins subsystem actions into scans. Data SF introduces input and output
parameters and dataflow within a logical action. The composition of semantic
features is implemented via weaving Event-B code of the machines in the model
transformation (the self-referential M2M arrow in Figure 3).</p>
      <p>
        The LACE implementation consists of different software components, such
as: logical action components (LAC), that translate logical action requests into
subsystem actions, and subsystems (SS), that execute subsystem actions. This
architectural modularity of LACE is implemented in Event-B using the shared
event composition approach [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Software modules are specified in separate
machines, which are then composed into one composite machine specifying the
whole system. The interaction of the modules is implemented via composition
(or in fact, synchronization) of the events of the composing machines.
Composition of events means conjunction of the events’ guards and composition of
the events’ actions in one composite event. The composition of the LAC and
SS machines is implemented using model transformation (the M2M arrow from
conceptual machines to composite machines in Figure 3).
      </p>
      <p>As a result of the intersection of two types of specification modularity, eight
conceptual machines and four composition schemes need to be specified: for
each semantic feature we specify a conceptual machine of each software module
(LAC and SS) and a scheme of the interaction of LAC with SS. An Event-B
machine that specifies the LACE semantics as a whole is composed of LAC and
SS machines, that include Event-B code for all four semantic features, according
to the compositional schemes of all four semantic features. Two dimensions of
the modularity presented above simplify creation, verification and validation of
Event-B components and maintenance of the model transformations.
4.3</p>
      <p>
        Implementation
The LACE-to-Event-B transformations, described in Sections 4.1 and 4.2, were
implemented using the Operational QVT (Query/View/Transformation)
language [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] in the Eclipse environment. The input for the transformation is
provided directly by the LACE implementation software, which employs model
transformation and code generation techniques in the Borland Together
environment, and therefore is compatible with EMF (Eclipse Modeling Framework).
As a target metamodel for the transformation we use the Event-B Ecore
implementation provided by the EMF framework for Event-B [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>
        The LACE-to-EventB transformation is designed in a modular way, which
follows the logic of instantiation and composition techniques as described in
Sections 4.1 and 4.2. Thus, the transformation is possible to reuse and to generalize.
There are a number of studies in which Event-B has been applied to a
specification of the dynamic semantics of a DSL. A¨ıt-Sadoune and A¨ıt-Ameur employ
Event-B and Rodin for proving properties and animation of BPEL processes [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
Hoang et al. use Event-B and Rodin to automate analysis of Shadow models [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
In both studies, DSL program descriptions are translated into Event-B
specifications. The translations are implemented in the Java programming language.
These works do not use generic instantiation and composition techniques, but
apply refinement of Event-B machines [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] to implement modularity of the
programs. Based on our experience, refinement restricts semantics definition and can
be rather complicated for automatic proving. Moreover, we use model
transformations to implement the generation of Event-B specifications, which increases
the abstraction level of the translation and therefore enhances its reuse.
      </p>
      <p>
        Besides Event-B, other formalisms have been used as a target formal
domain for specifying semantics of DSLs. Chen et al. propose transformational
specification of dynamic semantics using Abstract State Machines (ASM) as a
target formalism and explore specified behavior by means of the AsmL simulator
tool [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Moreover, they introduce semantic units as an intermediate common
language for defining dynamic semantics of DSLs and explore a technique for
their composition [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Another approach, that supports reuse of the DSL
analyses via intermediate specification modules, is proposed by Ratiu et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. They
      </p>
      <sec id="sec-4-1">
        <title>2 www.win.tue.nl/mdse/COREF</title>
        <p>identify conceptually distinct sub-languages, shared by different DSLs, and
transform these to different analysis formalisms. These works support modularity of a
DSL specification by modularizing target formalisms. In this paper we describe
how modularity of the DSL specification arises from the modularity of the DSL
semantics, and apply model transformations to compose semantic modules.
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>In this paper we showed how the dynamic semantics of an industrial DSL can
be defined using the Event-B formalism and model transformations. The Rodin
platform and its plug-ins provide a broad spectrum of functionality and analysis
tools for Event-B specifications. Our objective was to adopt Event-B for the
industrial use cases for two major roles: DSL users and DSL developers. This
was achieved by using MDE techniques – model transformations that define the
semantics mapping from DSL domain to Event-B.</p>
      <p>In order to specify semantics of LACE in a modular and scalable way we
introduce semantic features and specify them in conceptual Event-B machines.
The conceptual machines are verified on the metamodel level using automatic
provers of Rodin. The LACE-to-Event-B transformation composes the
conceptual machines into the LACE specification and instantiates this specification for
concrete LACE programs. The resulting Event-B specifications can be validated
and model checked by DSL developers and can be simulated by DSL users in
the user-friendly GUI – all in the Rodin environment.</p>
      <p>As future work we aim for applying the demonstrated techniques to other
DSLs. For this we need to generalize LACE-to-Event-B transformation by
distinguishing repetitive Event-B code, that can be combined into fine-grained
specification patterns. This will allow not only for reuse of the demonstrated techniques
of instantiation and composition, but also for reuse of already verified and
visualized pieces of specification.
7</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>We are very grateful to Marc Hamilton and Wilbert Alberts (ASML, The
Netherlands) for introducing us to the LACE world and providing very useful feedback
on our experiments. We would like to thank Michael Butler and Colin Snook
(University of Southampton, United Kingdom) for their help with using
EventB and Rodin. We also would like to thank Anton Wijs and Alexander
Serebrenik (Eindhoven University of Technology, The Netherlands) for their useful
comments on this paper.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Meta</given-names>
            <surname>Object</surname>
          </string-name>
          <article-title>Facility (MOF) 2</article-title>
          .0 Query/View/Transformation Specification. Object Management Group (OMG),
          <year>July 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>J.-R.</given-names>
            <surname>Abrial</surname>
          </string-name>
          .
          <article-title>Modeling in Event-B: system and software engineering</article-title>
          , volume
          <volume>1</volume>
          . Cambridge University Press,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>J.-R. Abrial</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Butler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Hallerstede</surname>
            ,
            <given-names>T. S.</given-names>
          </string-name>
          <string-name>
            <surname>Hoang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Mehta</surname>
            , and
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Voisin</surname>
          </string-name>
          .
          <article-title>Rodin: An Open Toolset for Modelling and Reasoning in Event-B</article-title>
          .
          <source>International Journal on Software Tools for Technology Transfer (STTT)</source>
          ,
          <volume>12</volume>
          (
          <issue>6</issue>
          ):
          <fpage>447</fpage>
          -
          <lpage>466</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>J.-R.</given-names>
            <surname>Abrial</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Hallerstede</surname>
          </string-name>
          . Refinement, Decomposition, and Instantiation of Discrete Models: Application to
          <string-name>
            <surname>Event-B. Fundam</surname>
          </string-name>
          . Inform.,
          <volume>77</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>28</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>I. A</given-names>
            ¨
            <surname>ıt-Sadoune</surname>
          </string-name>
          and
          <string-name>
            <surname>Y.</surname>
          </string-name>
          <article-title>A¨ıt-Ameur. Stepwise Design of BPEL Web Services Compositions: An Event-B Refinement Based Approach</article-title>
          . In R. Lee,
          <string-name>
            <given-names>O.</given-names>
            <surname>Ormandjieva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Abran</surname>
          </string-name>
          , and C. Constantinides, editors,
          <source>Software Engineering Research, Management and Applications</source>
          , pages
          <fpage>51</fpage>
          -
          <lpage>68</lpage>
          . Springer Berlin / Heidelberg,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Basin</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Fu¨rst, T. S. Hoang,
          <string-name>
            <given-names>K.</given-names>
            <surname>Miyazaki</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Sato</surname>
          </string-name>
          .
          <article-title>Abstract Data Types in Event-B - An Application of Generic Instantiation</article-title>
          .
          <source>In Workshop on the experience of and advances in developing dependable systems in Event-B, volume abs/1210.7283 of CoRR</source>
          , pages
          <fpage>5</fpage>
          -
          <lpage>16</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>K.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Porter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          .
          <article-title>Compositional Specification Of Behavioral Semantics For Domain-Specific Modeling Languages</article-title>
          .
          <source>Int. J. Semantic Computing</source>
          ,
          <volume>3</volume>
          :
          <fpage>31</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>K.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Abdelwalhed</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Jackson</surname>
          </string-name>
          .
          <source>Semantic Anchoring with Model Transformations. European Conference on Model Driven Architecture - Foundations and Applications</source>
          , pages
          <fpage>115</fpage>
          -
          <lpage>129</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>T. S.</given-names>
            <surname>Hoang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>McIver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Meinicke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Morgan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sloane</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Susatyo</surname>
          </string-name>
          .
          <article-title>Abstractions of non-interference security: probabilistic versus possibilistic</article-title>
          .
          <source>Formal Aspects of Computing</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. L.
          <string-name>
            <surname>Ladenberger</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Bendisposto</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Leuschel</surname>
          </string-name>
          . Visualising
          <string-name>
            <surname>Event-B Models with B-Motion Studio</surname>
            . In M. Alpuente,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Cook</surname>
          </string-name>
          , and C. Joubert, editors,
          <source>Proceedings of FMICS</source>
          <year>2009</year>
          , volume
          <volume>5825</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>202</fpage>
          -
          <lpage>204</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>M.</given-names>
            <surname>Leuschel</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Butler. ProB: A Model Checker for B. In</surname>
          </string-name>
          <string-name>
            <surname>A</surname>
          </string-name>
          . Keijiro,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gnesi</surname>
          </string-name>
          , and M. Dino, editors,
          <source>FME</source>
          , volume
          <volume>2805</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>855</fpage>
          -
          <lpage>874</lpage>
          . Springer-Verlag,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>D.</given-names>
            <surname>Ratiu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Voelter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Molotnikov</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Schaetz</surname>
          </string-name>
          .
          <article-title>Implementing Modular Domain Specific Languages and Analyses</article-title>
          .
          <source>In Proceedings of the Workshop on Model-Driven Engineering, Verification and Validation</source>
          , pages
          <fpage>35</fpage>
          -
          <lpage>40</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>R.</given-names>
            <surname>Silva</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Butler</surname>
          </string-name>
          .
          <article-title>Supporting Reuse of Event-B Developments through Generic Instantiation</article-title>
          . In K. Breitman and
          <string-name>
            <surname>A</surname>
          </string-name>
          . Cavalcanti, editors,
          <source>11th International Conference on Formal Engineering Methods (ICFEM)</source>
          , volume
          <volume>5885</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>466</fpage>
          -
          <lpage>484</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>R.</given-names>
            <surname>Silva</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Butler</surname>
          </string-name>
          . Shared Event Composition/Decomposition in
          <string-name>
            <surname>Event-B. In B. K. Aichernig</surname>
          </string-name>
          , F. S. de Boer, and M. M. Bonsangue, editors,
          <source>Formal Methods for Components and Objects (FMCO)</source>
          , pages
          <fpage>122</fpage>
          -
          <lpage>141</lpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>C. Snook</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Fritz</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Illisaov</surname>
          </string-name>
          .
          <article-title>An EMF Framework for Event-B</article-title>
          . In Workshop on Tool Building in Formal Methods - ABZ Conference,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>