<!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>SyVOLT: Full Model Transformation Verification Using Contracts</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Levi L u´cio</string-name>
          <email>levi@cs.mcgill.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bentley James Oakes</string-name>
          <email>bentley.oakes@mail.mcgill.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cla´udio Gomesy</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gehan M. K. Selimz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juergen Dingelz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>James R. Cordyz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hans Vangheluwey</string-name>
          <email>hans.vangheluwe@ua.ac.be</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computer Science, McGill University</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-We introduce SyVOLT, a plugin for the Eclipse development environment for the verification of structural pre/post-condition contracts on model transformations. The plugin allows the user to build transformations in our transformation language DSLTrans using a visual editor. The pre-/post-condition contracts to be proved on the transformation can also be built in a similar interface. Our contract proving process is exhaustive, meaning that if a contract is said to hold, then the contract will hold for all input models of a transformation. If the contract does not hold, then the counter-examples (i.e., input models) where the contract fails will be presented. Demo: https://www.youtube.com/watch?v=8PrR5RhPptY</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Model transformations are at the center of model-driven
development, making pragmatic and usable tools for their
verification indispensable. In this paper we introduce SyVOLT
(Symbolic Verifier of mOdeL Transformations) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], an Eclipse
plugin that allows verifying pre-/post-condition structural
contracts on model transformations. SyVOLT’s operation relies
on a theoretical framework that has been developed for the
DSLTrans model transformation language. In this framework,
pre-/post-condition contracts can be shown to either hold
for all input/output pairs resulting from executing a given
DSLTrans model transformation, or not to hold for at least
one of those input/output pairs [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        Extensive work exists on the verification of different aspects
of model transformations [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] the authors describe
a method where ‘Tracts’ can be specified for model
transformations. Tracts resemble SyVOLT’s contracts and define
a set of constraints on the source and target metamodels, a
set of source-target constraints, and a tract test suite, i.e., a
collection of source models satisfying the source constraints.
The accompanying TractsTool can then automatically test the
transformation by verifying if all source/target model pairs
satisfy the constraints in the tract test suite. Several other
approaches support the testing of model transformations based
on different kinds of contracts such as model fragments [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ],
graph patterns [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], Triple Graph Grammars (TGGs) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]
or dedicated testing languages [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        The tool described in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] automatically translates
transformations in a number of transformation languages (such
as ATL) into OCL. Verification is then done using a model
finder which will attempt to find a counter-example to the
property being proved. Anastasakis et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] translate model
transformations to Alloy in order to verify if given assertions
hold for the given transformations. Both these approaches
attempt to exhaustively verify the model transformation, as
SyVOLT does. However, while SyVOLT guarantees that all
counter-examples to a contract are always found, this is not
granted by the two approaches introduced above.
      </p>
      <p>The distinguishing feature of SyVOLT is that, unlike the
methods described above, our tool allows for contracts to be
proved for all possible transformation executions, i.e., for all
possible input models. However, we share with most tools
described above the same implication idea: the pre-condition
of a contract sets constraints on the input models to the
transformation, and the post-condition defines constraints on
the output model.</p>
    </sec>
    <sec id="sec-2">
      <title>II. HIGHLIGHTS</title>
      <sec id="sec-2-1">
        <title>A. Input Independence and Exhaustiveness</title>
        <p>
          SyVOLT proves that pre-/post-condition contracts hold for
a model transformation. Such contracts establish relations
between patterns occurring in input and output models of a
model transformation. If a contract holds, a formal guarantee
exists that whenever a transformation’s input model contains
the pattern specified in the pre-condition of the contract,
the transformation’s output model will contain the pattern
specified in the contract’s post-condition. Contracts can
optionally include traceability relations between input and output
patterns. Our technique is exhaustive and input-independent,
in the sense that whenever a contract holds, it will hold for all
possible input models for that transformation. This is possible
because SyVOLT operates on specifications of out-place model
transformations, where unbounded loops and model element
deletions are not allowed. A discussion on the soundness and
completeness of our approach is provided in [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Integration with Eclipse / Graphical Modelling</title>
        <p>
          Eclipse is a popular development environment, as many
model transformation tools such as ATL, DSLTrans [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] and
&gt; Proving contracts:
&gt; Contract ‘‘daughterMother’’ holds for all input models!
&gt; Contract ‘‘motherFather’’ does NOT hold for all input
models! The contract fails on the following Path Conditions:
[‘EmptyPathCondition_RootRule_FatherRule_MotherRule’, ...]
&gt; The smallest Path Conditions where the contract fails are:
[‘EmptyPathCondition_FatherRule_MotherRule’]
&gt; Time to verify 2 contracts: 11.6834638966 seconds.
EGL [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] are integrated with the Eclipse Modeling Framework
(EMF) [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. To take advantage of this ecosystem, SyVOLT
integrates with EMF to represent models in a multitude
of syntaxes, from graphical to textual. Modellers may then
operate in their preferred syntax, although the authors suggest
the visual representation of a contract in the SyVOLT editor
allows for intuitive understanding of the contract’s meaning.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>C. Push-Button Proofs</title>
        <p>The proving process for a SyVOLT contract is fully
automatic and all of the approach’s formal details are
completely hidden from the user. Once the transformation and
the contracts of interest are created, one command will start
the property proving process. This process will automatically
create all required artifacts (as detailed in Section III), run
the process, and provide the results to the user within the
Eclipse environment. This allows the user to continually stay
within the Eclipse environment, where he or she develops the
contracts and the model transformations.</p>
      </sec>
      <sec id="sec-2-4">
        <title>D. Counter-Examples</title>
        <p>When a contract does not hold for a model transformation,
SyVOLT produces additional information for the user to
pinpoint where the contract’s violation occurs. This information
is in the form of the set of model transformation rules used to
build a particular path condition for which the contract fails.
A counter-example is any input model on which this set of
rules would execute: e.g. the sample output in Figure 1 alerts
the user that the contract motherFather fails when only the
transformation’s mother and father rules execute.</p>
      </sec>
      <sec id="sec-2-5">
        <title>E. Based on Symbolic Execution</title>
        <p>
          Our technique shares its principles with symbolic
execution, a classically used technique for code verification. The
underlying idea entails building a finite representation of the
(infinite) set of computations that can be expressed by a model
transformation specification. In this context, each symbolic
execution – which in the context of our work we call a
path condition – is an overlapping combination of a subset
of the transformation’s rules. A path condition represents the
execution of the model transformation over any input model
those rules match on. Contracts of interest are proved on the
set of path conditions built for a model transformation, and are
extrapolated to the infinite set of the model transformation’s
computations through an abstraction relation [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-6">
        <title>F. Proving Contracts about ATL Model Transformations</title>
        <p>
          The Atlas Transformation Language (ATL) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] is
commonly-used in industrial and academic applications.
In order to enable contract proving on ATL transformations,
we have developed a higher-order transformation that is able
to automatically build declarative ATL transformations from
DSLTrans transformations [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Future work is to integrate
this higher-order transformation into SyVOLT’s user interface.
        </p>
      </sec>
      <sec id="sec-2-7">
        <title>G. Scalability and Speed</title>
        <p>
          We have some evidence that SyVOLT scales to
transformations of practical interest. In particular we have verified
contracts on DSLTrans transformations with up to over 60
rules, and ATL transformations with up to 13 rules [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. From
our own experience, the size of a DSLTrans transformation
ranges from 10 up to 50 rules, while the average size of an
ATL transformation is around 20 rules [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Even though our
technique is exhaustive, our experiments show that
verification can be performed within seconds. Gehan Selim’s PhD
thesis [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] provides further evidence of SyVOLT’s speed, by
verifying a relatively large model transformation for giving
semantics to the UML-RT language in terms of the Kiltera
process language [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. SyVOLT’s symbolic execution engine
is fully homegrown [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] and does not depend on third-party
solvers. Although this has implied a large effort to build the
codebase, it has allowed us to have the required control over
the code to iteratively optimize the engine for space and time
economy. [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] demonstrates that our prover is substantially
faster than similar approaches based on SAT solvers.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. ARCHITECTURE</title>
      <p>The guiding principle of the Modelling, Design, and
Simulation Lab is that all tools and processes should be explicitly
modelled at an appropriate abstraction level. This practice
ensures that software development effort is targeted at the
problem’s essential complexity, while alleviating complexity
induced by the computational platforms used.</p>
      <p>
        SyVOLT’s codebase has been developed by applying these
principles. We have used available model-driven development
technology as much as possible, both to develop and as a part
of SyVOLT itself. In particular, we have made it such that the
DSLTrans transformations, the SyVOLT contracts, and path
conditions are all represented and treated as models by the
proof engine. Moreover, we have operationally encoded the
operations required by the algorithm for building a contract
proof as model transformations [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>The following model-driven development tools have been
used in SyVOLT’s development:</p>
      <p>
        Himesis [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]: Himesis is a typed graph representation
format, built upon the open-source igraph library [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
In [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], it is reported empirically that Himesis is a
good format to perform the typical graph manipulation
operations. Himesis is used pervasively within SyVOLT
to represent all models and model transformation rules
required by the proof algorithm.
      </p>
      <p>
        T-Core [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]: T-Core is a collection of model
transformation primitives allowing fine-grained manipulation of
models represented in the Himesis format. The main
operations of T-Core are model matching, model rewriting and
iterating through a set of match sites in a model. The level
of control in model manipulation, together with T-Core’s
speed and scalability when treating large models, suited
our needs well when implementing the property proof
algorithm described in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Note that because T-Core is
also explicitly modelled, a T-Core model transformation
rule is also a (Himesis) model.
      </p>
      <p>Eclipse Modelling Framework (EMF): SyVOLT makes
use of EMF’s Ecore format for the XMI representation
of DSLTrans transformations and SyVOLT’s contracts
within the Eclipse editors.</p>
      <p>Epsilon Generation Language (EGL): Converting Ecore
models into Himesis models is achieved using EGL, a
model-to-text transformation language.</p>
      <p>Figure 2 shows the architecture of our tool, where squares
containing gears (and annotated with number identifiers)
represent computations and squares containing no gears (and
annotated with letter identifiers) represent produced and
consumed data. Two essential blocks are depicted: the graphical
Eclipse front-end for user interaction and the proof engine
back-end which implements the proving algorithm. The
frontend and the back-end communicate in the following way:
in the left-to-right direction, a number of artifacts (models
and model transformations) are synthesized from the graphical
representations of the DSLTrans transformations and of the
SyVOLT contracts, and passed to the back-end. In the reverse
direction, the proof result and counter-examples, if any, are
passed from the proof engine to the front-end.</p>
      <p>In what follows, we will briefly visit each computational
component of SyVOLT to describe its function and the
technologies employed in its development.</p>
      <p>SyVOLT’s architectural components described in Figure 2
are orchestrated by an ANT script from within Eclipse. This
script makes sure all components communicate and execute
in the right order, and allows contract proof to run fully
automatically at the push of a button.</p>
      <sec id="sec-3-1">
        <title>1. SyVOLT Contract Editor</title>
        <p>
          The SyVolt contract editor, shown in Figure 3, is realized
by a set of Eclipse Graphical Modeling Framework (GMF) [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]
plugins, generated using EuGENia [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. The user can prescribe
contracts (the gray, red and blue rectangle in the left-hand
side of Figure 3) and propositional logic properties involving
contracts using the toolbox (right-hand side of Figure 3).
        </p>
        <p>Internally, the graphical editor reads and write two models:
the domain model and the graphical model. The graphical
model can be seen as the realization of the concrete syntax
by storing the coordinates and other visual information about
the shapes that are shown in the graphical editor (Figure 3). In
contrast, the Ecore domain model contains the abstract syntax:
the essence of the elements that form the contracts and the
propositional properties. The domain model is the artifact used
when generating the models for the construction of the proof.</p>
      </sec>
      <sec id="sec-3-2">
        <title>2. Generating Rule and Contract Artifacts</title>
        <p>The translation of DSLTrans transformations and SyVOLT
contracts into Himesis models and model transformation rules
was achieved using the EGL. Specifically, two EGL
model-totext transformations were used: one to generate the Himesis
models representing a DSLTrans transformation (marked (a)
in Figure 2); and another one to generate the T-Core model
transformation rules necessary to prove SyVOLT contracts
(marked (b) in Figure 2).</p>
        <p>From the Ecore models of the DSLTrans model
transformation and contracts of interest, the EGL transformations produce
a number of Python classes that inherit from the Himesis
library and that represent models and T-Core transformation
rules. These classes will be subsequently loaded in memory
and manipulated by the proof engine back-end.</p>
        <p>
          Additional artifacts need to be generated for the property
proof algorithm to execute. These are the path condition
generation T-Core model transformations (marked (c) in Figure 2)
that are needed to perform the model manipulations for a set
of path conditions. These model transformation blocks allow
combining the rules of a DSLTrans model transformation into
a set of path conditions, as per the algorithm described in [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
        <p>This additional model transformation generation step is
achieved by the PyRamify component. PyRamify is a Python
script that takes as input Himesis graphs representing the
rules in the transformation. It produces T-Core matchers and
rewriters for each rule. While matchers allow the contract
prover to determine if and how rules might combine with a
path condition under construction, rewriters combine the
righthand side of a DSLTrans rule with that same path condition.</p>
        <p>Currently, PyRamify is implemented as a Python script, as
we were unable to implement automatic creation of
higherorder artifacts (in our case, T-Core transformations) using
graph-based model transformations. This indicates a need to
further develop model-driven engineering tools that allow for
the explicit manipulation of model transformations as models.</p>
      </sec>
      <sec id="sec-3-3">
        <title>4. Path Condition Generation</title>
        <p>Once the required artifacts have been produced, the prover
moves onto the path condition generation step. The path
condition generation algorithm starts from the empty path condition,
representing the case where no rules in the transformation have
executed. Then, each rule in the DSLTrans model
transformation under analysis is combined with the path conditions
generated thus far, the using path condition generation T-Core
matchers and rewriters (marked (c) in Figure 2). As each rule
is considered, in the same order it would occur during the
transformation’s execution, the set of path conditions will grow
to represent all allowed rules combinations.</p>
      </sec>
      <sec id="sec-3-4">
        <title>5. Contract Proof</title>
        <p>The contract prover component requires two inputs: the path
conditions set, built by the path condition generator (marked
(d) in Figure 2); the contract proof T-Core transformations
(marked (b) in Figure 2). Pre/post condition contracts form
an implication, which needs to be checked for each path
condition. For a contract to hold on a DSLTrans model
transformation, the contract’s implication should hold for every
path condition generated for that model transformation. Thus,
for each submodel of the path condition that is isomorphic
to the pre-condition’s model, the algorithm will try to find a
submodel of the path condition that is isomorphic to the
postcondition’s model. T-Core matchers from the contract proof
T-Core transformations allow checking the existence of these
relations between the contract and the post-condition.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>ACKNOWLEDGEMENTS</title>
      <p>The authors are researchers working for the NECSIS
project, funded by the Automotive Partnership Canada.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Atlas</given-names>
            <surname>Transformation</surname>
          </string-name>
          <article-title>Language</article-title>
          . http://eclipse.org/atl.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Modelling</surname>
          </string-name>
          <article-title>Framework</article-title>
          . https://eclipse.org/modeling/emf/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Epsilon</given-names>
            <surname>Generation</surname>
          </string-name>
          <article-title>Language</article-title>
          . http://www.eclipse.org/epsilon/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Graphical</given-names>
            <surname>Modeling</surname>
          </string-name>
          <article-title>Project</article-title>
          . http://www.eclipse.org/modeling/gmp/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>[5] SyVOLT tool</article-title>
          . http://msdl.cs.mcgill.ca/people/levi/contractprover.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] The igraph Network Analysis Package</article-title>
          . http://igraph.org/.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Amrani</surname>
          </string-name>
          , L. Lu´cio,
          <string-name>
            <surname>G. M. K. Selim</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Combemale</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Dingel</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Vangheluwe</surname>
            ,
            <given-names>Y. L.</given-names>
          </string-name>
          <string-name>
            <surname>Traon</surname>
            , and
            <given-names>J. R.</given-names>
          </string-name>
          <string-name>
            <surname>Cordy</surname>
          </string-name>
          .
          <article-title>A Tridimensional Approach for Studying the Formal Verification of Model Transformations</article-title>
          .
          <source>In ICSTW</source>
          , pages
          <fpage>921</fpage>
          -
          <lpage>928</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Ku</surname>
          </string-name>
          <article-title>¨ster. Analysis of Model Transformations via Alloy</article-title>
          .
          <source>In Proc. of MoDeVVa</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Balogh</surname>
          </string-name>
          et al.
          <article-title>Workflow-Driven Tool Integration Using Model Transformations</article-title>
          . In Graph Transformations and
          <string-name>
            <surname>Model-Driven Engineering</surname>
          </string-name>
          , pages
          <fpage>224</fpage>
          -
          <lpage>248</lpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>B.</given-names>
            <surname>Barroca</surname>
          </string-name>
          , L. Lu´cio, V. Amaral, R. Fe´lix, and
          <string-name>
            <given-names>V.</given-names>
            <surname>Sousa</surname>
          </string-name>
          .
          <article-title>Dsltrans: A turing incomplete transformation language</article-title>
          .
          <source>In Software Language Engineering</source>
          , pages
          <fpage>296</fpage>
          -
          <lpage>305</lpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bu</surname>
          </string-name>
          ¨ttner,
          <string-name>
            <given-names>M.</given-names>
            <surname>Egea</surname>
          </string-name>
          , E. Guerra, and
          <string-name>
            <surname>J. De Lara</surname>
          </string-name>
          .
          <article-title>Checking model transformation refinement</article-title>
          .
          <source>In Theory and Practice of Model Transformations</source>
          , pages
          <fpage>158</fpage>
          -
          <lpage>173</lpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Garc´</surname>
          </string-name>
          ıa-Dom´ınguez,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I.</surname>
          </string-name>
          <article-title>Medina-Bulo. EUnit: A Unit Testing Framework for Model Management Tasks</article-title>
          .
          <source>In MODELS</source>
          , pages
          <fpage>395</fpage>
          -
          <lpage>409</lpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , J. de Lara,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Kappel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Retschitzegger</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>Scho¨nbo¨ck, and</article-title>
          <string-name>
            <given-names>W.</given-names>
            <surname>Schwinger</surname>
          </string-name>
          .
          <source>Automated verification of model transformations based on visual contracts. Autom</source>
          . Softw. Eng.,
          <volume>20</volume>
          (
          <issue>1</issue>
          ):
          <fpage>5</fpage>
          -
          <lpage>46</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Abid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Polack</surname>
          </string-name>
          , and
          <string-name>
            <surname>G. Botterweck. Taming EMF</surname>
          </string-name>
          and
          <article-title>GMF Using Model Transformation</article-title>
          . In D. Petriu,
          <string-name>
            <given-names>N.</given-names>
            <surname>Rouquette</surname>
          </string-name>
          , and O. y. Haugen, editors,
          <source>Model Driven Engineering Languages and Systems SE - 15</source>
          , volume
          <volume>6394</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>211</fpage>
          -
          <lpage>225</lpage>
          . Springer Berlin Heidelberg,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schoenboeck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Retschitzegger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schwinger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Kappel</surname>
          </string-name>
          .
          <article-title>Reality check for model transformation reuse: The ATL transformation zoo case study</article-title>
          .
          <source>In Proceedings of the Second Workshop on the Analysis of Model Transformations (AMT</source>
          <year>2013</year>
          ), Miami, FL, USA,
          <year>September 29</year>
          ,
          <year>2013</year>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>L.</given-names>
            <surname>Lu</surname>
          </string-name>
          ´cio,
          <string-name>
            <given-names>B.</given-names>
            <surname>Oakes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          .
          <article-title>A technique for symbolically verifying properties of graph-based model transformations</article-title>
          .
          <source>Technical report, Technical Report SOCS-TR-2014</source>
          .1,
          <string-name>
            <surname>McGill</surname>
            <given-names>U</given-names>
          </string-name>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>L.</given-names>
            <surname>Lu</surname>
          </string-name>
          <article-title>´cio and</article-title>
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          .
          <article-title>Model Transformations to Verify Model Transformations</article-title>
          .
          <source>In Online Proceedings of Verification of Model Transformations (VOLT)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>J.-M. Mottu</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Baudry</surname>
            , and
            <given-names>Y. L.</given-names>
          </string-name>
          <string-name>
            <surname>Traon</surname>
          </string-name>
          .
          <article-title>Model transformation testing: oracle issue</article-title>
          .
          <source>In ICSTW</source>
          , pages
          <fpage>105</fpage>
          -
          <lpage>112</lpage>
          . IEEE,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>B. J.</given-names>
            <surname>Oakes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Troya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Lucio</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          .
          <article-title>Fully verifying transformation contracts for declarative atl</article-title>
          .
          <source>Accepted for publication at MoDELS</source>
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>E.</given-names>
            <surname>Posse</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          .
          <article-title>An executable formal semantics for UML-RT</article-title>
          .
          <source>Software and Systems Modeling</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>39</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Provost</surname>
          </string-name>
          .
          <article-title>Himesis: A hierarchical subgraph matching kernel for model driven development</article-title>
          .
          <source>In Masters Abstracts International</source>
          , volume
          <volume>45</volume>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Selim</surname>
          </string-name>
          .
          <article-title>Formal Verification of Graph-Based Model Transformations</article-title>
          .
          <source>PhD thesis</source>
          , Queen's University,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Selim</surname>
          </string-name>
          , L. Lu´cio,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Cordy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B. J.</given-names>
            <surname>Oakes</surname>
          </string-name>
          .
          <article-title>Specification and verification of graph-based model transformation properties</article-title>
          .
          <source>In Graph Transformation</source>
          , pages
          <fpage>113</fpage>
          -
          <lpage>129</lpage>
          . Springer,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>E.</given-names>
            <surname>Syriani</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          . De-/re-constructing
          <source>model transformation languages. Electronic Communications of the EASST</source>
          ,
          <volume>29</volume>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>E.</given-names>
            <surname>Syriani</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          .
          <article-title>Performance analysis of Himesis</article-title>
          .
          <source>Technical report</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Burgueno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , and L. Hamann.
          <article-title>Formal specification and testing of model transformations</article-title>
          .
          <source>In Formal Methods for Model-Driven Engineering</source>
          , pages
          <fpage>399</fpage>
          -
          <lpage>437</lpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wieber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Anjorin</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Schu</surname>
          </string-name>
          <article-title>¨rr. On the Usage of TGGs for Automated Model Transformation Testing</article-title>
          .
          <source>In Theory and Practice of Model Transformations</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>