<!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>Language-Independent Model Transformation Veri cation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>K. Lano</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>S. Kolahdouz-Rahimi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>T. Clark</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>King's College London; University of Middlesex</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>One hinderance to model transformation verification is the large number of different MT languages which exist, resulting in a large number of different language-specific analysis tools. As an alternative, we define a single analysis process which can, in principle, analyse specifications in several different transformation languages, by making use of a common intermediate representation to express the semantics of transformations in any of these languages. Some analyses can be performed directly on the intermediate representation, and further semantic models in specific verification formalisms can be derived from it. We illustrate the approach by applying it to ATL.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        A large number of different transformation languages exist, ranging from
declarative languages such as QVT-R [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and Triple Graph Grammars, to hybrid
languages such as ATL [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and UML-RSDS [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], to imperative. There are
nonetheless many commonalities between the processing carried out by transformations,
regardless of the language they are written in.
      </p>
      <p>In this paper we describe a general language-independent framework for
transformation verification, and describe a range of language-independent
verification techniques. The framework is based upon metamodels which provide
language-independent representation of transformation specifications (Section
2). These representations can then be mapped via semantic mappings to suitable
formalisms which support verification (such as theorem provers or constraint
satisfaction checkers). This approach means that only one semantic mapping needs
to be defined and verified for each target formalism, rather than semantic maps
for each different transformation language and target formalism.</p>
    </sec>
    <sec id="sec-2">
      <title>Metamodels for model transformations</title>
      <p>Transformations operate on various models or texts which conform to some
metamodel/language. There may be several input (source) models used by a
transformation, and possibly several output (target) models. A transformation
is termed update-in-place if a model is both an input and output, otherwise it is
a separate-models transformation. Languages can be specified in many different
ways, e.g., by UML class diagrams, by BNF syntax definitions, etc. Here we
will use UML class diagrams, together with OCL constraints. These form the
concrete syntax of language descriptions.</p>
      <p>Figure 1 shows a generic metamodel (termed LMM) which can serve
directly or indirectly as a metamodel (abstract syntax) for a wide range of
modelling languages. The metamodel is also self-representative. EntityType
represents classes and interfaces, DataFeature represents both attributes and
associations. mult 1lower and mult 1upper refer to the multiplicity range of the source
side of the attribute/association (i.e., the side with the entity type which owns
the data feature), whilst mult 2lower and mult 2upper refer to the multiplicity
range of the target side (the side with the type entity type). A value of −1 for
an upper bound indicates a *-multiplicity at that end. isOrdered refers to the
ordering of the target end.</p>
      <p>
        A metaclass Language representing languages has a set entityTypes of EntityType,
a set features of DataFeature, and a set constraints of Constraint . Many
variations on constraint languages could be used, here we adopt the subset of OCL
2.3 used in UML-RSDS [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ]. This includes set and sequence collections from
OCL, operation calls and other feature application and navigation expressions,
but omits null and invalid . The set of all expressions formed over a given base
language L (a class diagram) is denoted Exp(L). To support verification, we
define a proof theory and (logical) model theory with respect to any language L, by
associating a formal first order language and logic to each instance of LMM.
Table 1 gives examples showing how a formal first-order set theory (FOL) language
LL can be associated to instances L of LMM.
      </p>
      <p>An optional association end (with mult 2lower = 0 and mult 2upper = 1) is
formally represented as a set (or sequence) of size 0 or 1. A denumerable type
Object OBJ is included in each LL to represent the set of all possible object
references. A finite set objects ⊆ Object OBJ represents the set of all existing
objects at any point in time. Each entity type E has E ⊆ objects. Constraints
in the expression language Exp(L) are mathematically represented as first-order
set theory axioms in LL, for each base language L.</p>
      <p>
        At the specification level, the effect of a transformation can be characterised
by a collection of mapping specifications, which relate model elements of one or
more models involved in the transformation to each other [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. These mapping
specifications define the intended relationships which the transformation should
establish between the input (source) and output (target) models of the
transformation, at its termination. That is, they define the postconditions Post of
the transformation. In the case of in-place transformations, the initial values of
entity types and features can be notated as E @pre, f @pre in postconditions to
distinguish them from their post-state values. We adapt the mapping metamodel
of [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] to represent transformation specifications (Figure 2). This metamodel is
referred to as T MM in the following.
      </p>
      <p>
        In this figure, Mapping , TransformationSpeci cation, ModelEnd , and MappingEnd
are subclasses of NamedElement . Each mapping has a corresponding
computation step which defines the application of the mapping to specific source elements
that satisfy its condition. Transformation specifications in declarative
transformation languages can be expressed in this metamodel, using abstraction
techniques such as those defined for TGG (triple graph grammars) and QVT-R in
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and for declarative ATL in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]: these techniques express the intended effect
of transformations by OCL constraints describing the poststate of the
transformation. In this paper we show how hybrid languages such as ATL can also be
expressed in T MM. In turn, formal representations of transformation
specifications can be generated from representations in T MM, into a range of formalisms
such as B [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], Z3 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] or Alloy [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], to support semantic analysis. The metamodel
could be extended to include generalisation relations between mappings, as in
ATL and ETL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>The rules:relation constraints express the postconditions Post of the
transformation. Typically each mapping relation constraint Cn ∈ Post has the form of
an implication SCond implies Succ forall-quantified over elements (the source
mapping ends s : Si ) of the source models. The assumptions express the
preconditions Asm of the transformation. The invariants define properties Inv which
should be true initially, and which should be preserved by each computation step
of the transformation.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Veri cation techniques</title>
      <p>
        The following verification techniques can be applied to the T MM representation
of transformations, as follows:
{ Syntactic analysis to identify the definedness conditions def (Cn) and
determinacy conditions det (Cn) of each mapping constraint Cn. These are
the conditions necessary for Cn to have a defined and determinate value,
respectively [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
{ Data dependency analysis, to compute the read-frame rd (Cn) and
writeframe wr (Cn) for each mapping constraint Cn1 and to identify cases of
invalid data-dependency and data-use.
1 wr (Cn) is the set of feature names and entity type names which Cn’s implementation
may modify. rd (Cn) is the set which may be read.
{ Syntactic analysis to establish confluence and termination in the case of
transformations not involving fixed-point iteration.
{ Translation to B AMN, to verify transformation invariants, syntactic
correctness (that the transformation produces target models which conform to the
target metamodel) and model-level semantic preservation (that the source
and target models have equivalent semantics).
{ Translation to Z3, to identify counter-examples to syntactic correctness.
      </p>
      <p>Figure 3 shows an example of data dependency analysis being performed on
the T MM representation of an ATL specification: two rules are identified as
writing to the same entity type and feature, so are potentially in conflict.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Mapping from ATL to transformation metamodel</title>
      <p>}
...
rule rn { ... }
the T MM representation of M is a transformation specification M ′, and each
matched rule ri is represented by two mappings ri Matching and ri Initialisation
of M ′, which both have readOnly mapping ends the sj : Sj . The tk : Tk
are created mapping ends of ri Matching , and updated ends of ri Initialisation.
The input conditions SCond are translated to a condition conjunct SCond ′ of
ri Matching and ri Initialisation. Any using variables are expressed by a
conjunct vt = valt ′ of the condition. The output variables become exists-quantified
variables of the relations of the ri mappings. If an action block Stat is specified,
then a new update operation opri (s2 : S 2; :::; sm : Sm; t 1 : T 1; :::; tk : Tk ) is
introduced, this operation has activity given by the interpretation Stat ′ of Stat
as a UML activity. The resulting relation of ri Matching has context S 1 and
predicate</p>
      <p>T 1→exists(t 1 | t 1:$id = $id ) and ::: and Tk →exists(tk | tk :$id = $id )
This creates target model elements corresponding to the source model elements
that satisfy SCond ′, and establishes tracing relations from s1 to t 1, ..., tk by
assignment of an identifier attribute $id , which is added to each root class of
the source or target metamodels. The relation of ri Initialisation has context S 1
and predicate</p>
      <p>T 1→exists(t 1 | t 1:$id = $id and ::: and</p>
      <p>
        Tk →exists (tk | tk :$id = $id and TCond 1′ and ::: and TCondk ′ and
s1:opri (s2; :::; tk )):::)
In this rule the previously created tj corresponding to s1 are looked-up and their
features initialised. Lazy rules r with first input entity type S 1 are translated to
operations rop of S 1. Calls thisModule:r (v 1; :::; vm) to the rule are interpreted
as calls v 1:rop(v 2; :::; vm) of this operation. The operation rop is stereotyped as
≪ cached ≫ in the case of unique lazy rules2. All ri Matching rules are listed
2 Iterative target patterns are not treated by this translation. These are a deprecated
feature of ATL since ATL 2.0.
before all the ri Initialisation rules in M ′:rules. The translation from ATL to
T MM can be extended to update-in-place transformations, i.e., to the re ning
mode of ATL (ATL 2010 version). The translation from ATL to T MM has
been implemented in the UML-RSDS tools [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        The translated transformation in T MM represents the usual execution
semantics of the ATL transformation, in which target objects are created in a
first phase, followed by links between objects [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Thus every computation of the
translated specification corresponds to a computation of the original
specification. The computation steps (rule applications) of the translation correspond to
the steps of the original specification, so any invariant of the translation will also
be an invariant of the original.
      </p>
      <p>Using B, syntactic correctness can often be proved by using invariants of the
transformation to relate the target model to the source model. Thus a proof of
syntactic correctness of this kind also demonstrates syntactic correctness for the
original transformation. Similarly, model-level semantic preservation can often be
shown by invariant-based reasoning, which can be transferred from the translated
specification to the original.</p>
      <p>A counter-example produced by Z3 or another satisfaction-checking tool gives
a pair (m; n) of a source and target model which can result from completed
execution of the translated transformation, and where n violates some constraint of
T . Such a pair is also a counter-example to syntactic correctness of the original
ATL transformation. For refining mode transformations, termination and
confluence of the translated specification establishes these properties of the original
specification.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Evaluation</title>
      <p>
        In this section we evaluate the approach by considering two example case studies:
the simple UML to relational database example from the ATL Zoo, and the
refactoring transformation of [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. We use an imperative version of the UML
to relational database ATL transformation. This has three lazy rules and one
matched rule with an action block:
rule makeTable {
from c : Entity ( c.generalisation-&gt;size() = 0 )
to t : Table ( rdbname &lt;- c.name )
do {
for ( att in c.ownedAttribute )
{ if ( att.isPrimary )
      </p>
      <p>{ t.tcols-&gt;includes(thisModule.makePrimaryKeyColumn(att)); }
}
for ( att in c.ownedAttribute )
{ if ( att.type.oclIsKindOf(Entity) )</p>
      <p>{ t.tcols-&gt;includes(thisModule.makeForeignKeyColumn(att)); }
}
for ( att in c.ownedAttribute )
{ if ( att.type.oclIsKindOf(PrimitiveType) or att.isPrimary = false )
}
} }
}
}
{ t.tcols-&gt;includes(thisModule.makeColumn(att)); }
}
lazy rule makePrimaryKeyColumn {
from p : Property ( p.isPrimary )
to c : Column ( rdbname &lt;- p.name, type &lt;- p.type.name )
lazy rule makeForeignKeyColumn {
from p : Property ( p.type.oclIsKindOf(Entity) )
to c : Column ( rdbname &lt;- p.name, type &lt;- "String" ),</p>
      <p>f : FKey ( references &lt;- p.type, fcols &lt;- Set{ c } )
}
lazy rule makeColumn {
from p : Property ( true )
to c : Column ( rdbname &lt;- p.name, type &lt;- p.type.name )</p>
      <p>The matched rule is translated to two constraints C 0 and C 1 with context
Entity:
generalisation.size = 0 implies</p>
      <p>Table-&gt;exists( t | t.$id = $id and t.rdbname = name )
generalisation.size = 0 implies</p>
      <p>Table-&gt;exists( t | t.$id = $id and self.makeTable1op(t) )
C 1 has the condition and relation of makeTableMatching, and creates table
objects and sets their attribute values. C 2 has the condition and relation of
makeTableInitialisation, and looks up table objects using the introduced
primary key $id and creates and links columns to the tables. makeTable1op(t )
carries out the procedural code of makeTable’s action block, invoking operations
makePrimaryKeyColumnop, makeForeignKeyColumnop and makeColumnop of
Property corresponding to the lazy rules. For example:
makeColumnop(): Column
post:</p>
      <p>Column-&gt;exists( c | c.$id = $id and c.rdbname = name and
c.type = type.name and result = c )</p>
      <p>Figure 3 shows an example of data-dependency analysis on the translated
specification. Verification properties of interest for this case study include: (i)
termination; (ii) confluence (meaning that semantically equivalent source models
are always mapped to equivalent target models); (iii) that the columns of the
foreign keys are always contained in the set of columns of the tables, formalised
as the transformation invariant fcols ⊆ Table:tcols on FKey.</p>
      <p>For this specification (i) can be shown by data-dependency analysis,
establishing that a bounded iteration implementation is sufficient for C 0 and C 1. (ii)
fails because the association end Table :: tcols is ordered, so that different
representations of the same input model may result in semantically distinct result
models. Proof of (iii) can be carried out by establishing it as a transformation
invariant in B. Table 3 shows the results of verification for the transformation.
Atelier B version 4.0 was used.</p>
      <p>
        The refactoring transformation of [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is an update-in-place transformation
operating on simplified UML class diagrams. It removes apparant attribute clones
from the diagram by applying ‘pull up feature’ refactorings. We use the
extended version of ATL refining mode supported by our translator, to define
an ATL solution with a single rule. For this transformation, there are
several required correctness properties that should be verified: (i) termination;
(ii) preservation of the property of single inheritance, formalised as the
invariant generalisation→size() ≤ 1 on Entity ; (iii) preservation of the
property of no attribute name conflicts within classes, formalised as the invariant
ownedAttribute→isUnique(name) of Entity .
      </p>
      <p>Since the transformation involves fixed-point iteration, termination is shown
by proving that Property :allInstances()→size() is a variant, i.e., that the
number of Property instances in the model is always strictly decreased by applying
the transformation rule. Table 4 shows the results of verification for the
transformation.</p>
      <p>Property ATL via T MM
Termination 6 proof obligations, 5 automatically proved
Single inheritance 13 proof obligations, all automatically proved
No name conflicts 15 proof obligations, 13 automatically proved</p>
      <p>Table 4. Proof effort for refactoring transformation
6</p>
    </sec>
    <sec id="sec-6">
      <title>Related work</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], techniques for the forward engineering of ATL and other MT language
specifications from a platform-independent transformation representation are
defined. The focus is on development of new transformations rather than upon the
reverse-engineering and verification of existing transformations. We explicitly
represent the semantics of the MT languages within our language-independent
representation, including execution phases and the mechanism of target element
lookup/implicit rule invocation. Such semantic representation is not detailed in
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In contrast to the ATL to OCL translations of [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ], we define a behavioural
representation of ATL transformations, capturing the semantics of
transformation computation steps (individual rule applications), instead of a static
poststate relation. This permits analysis of invariants and other behavioural
properties.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>We have outlined a language-independent approach for model transformation
verification, and illustrated this approach by applying it to ATL. We also intend
to apply this approach to other hybrid MT languages, such as ETL, Flock,
GrGen.NET and QVT-O.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kuster</surname>
          </string-name>
          ,
          <source>Analysis of Model Transformations via Alloy</source>
          ,
          <year>Modevva 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>V.</given-names>
            <surname>Bollati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Vara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jimenez</surname>
          </string-name>
          , E. Marcos,
          <article-title>Applying MDE to the (semi-)automatic development of model transformations</article-title>
          ,
          <source>Information and Software Technology</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>F.</given-names>
            <surname>Buttner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Egea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <article-title>Veri cation of ATL transformations using transformation models and model nders</article-title>
          ,
          <source>ICFEM</source>
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Clariso</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , J. De Lara,
          <article-title>Veri cation and Validation of Declarative Model-to-Model Transformations Through Invariants</article-title>
          ,
          <source>Journal of Systems and Software</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , J. de Lara,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <surname>O.</surname>
          </string-name>
          <article-title>Marchi dos Santos, transML: A family of languages to model model transformations</article-title>
          ,
          <source>MODELS</source>
          <year>2010</year>
          , LNCS vol.
          <volume>6394</volume>
          , Springer-Verlag,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>B´ezivin, I. Kurtev, ATL: A model transformation tool</article-title>
          , Sci. Comput. Program.
          <volume>72</volume>
          (
          <issue>1-2</issue>
          ) (
          <year>2008</year>
          )
          <fpage>31</fpage>
          -
          <lpage>39</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>S.</given-names>
            <surname>Kolahdouz-Rahimi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Pillay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Troya</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. Van Gorp</surname>
          </string-name>
          ,
          <article-title>Evaluation of model transformation approaches for model refactoring</article-title>
          ,
          <source>Science of Computer Programming</source>
          ,
          <year>2013</year>
          , http://dx.doi.org/10.1016/j.scico.
          <year>2013</year>
          .
          <volume>07</volume>
          .013.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</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>
          ,
          <article-title>The Epsilon Transformation Language</article-title>
          ,
          <source>in ICMT</source>
          <year>2008</year>
          , LNCS Vol.
          <volume>5063</volume>
          , pp.
          <fpage>46</fpage>
          -
          <lpage>60</lpage>
          , Springer-Verlag,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kolahdouz-Rahimi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <article-title>Comparing veri cation techniques for model transformations</article-title>
          , Modevva workshop,
          <year>MODELS 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kolahdouz-Rahimi</surname>
          </string-name>
          ,
          <article-title>Constraint-based speci cation of model transformations</article-title>
          ,
          <source>Journal of Systems and Software</source>
          , vol
          <volume>88</volume>
          , no.
          <issue>2</issue>
          ,
          <year>February 2013</year>
          , pp.
          <fpage>412</fpage>
          -
          <lpage>436</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <article-title>The UML-RSDS Manual, www</article-title>
          .dcs.kcl.ac.uk/staff/kcl/uml2web/umlrsds.pdf,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <article-title>Null considered harmfull (for transformation veri cation)</article-title>
          ,
          <source>VOLT</source>
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. OMG, MOF
          <volume>2</volume>
          .0 Query/View/Transformation Speci cation,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. OMG,
          <source>Object Constraint Language</source>
          <volume>2</volume>
          .3 Speci cation,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. Z3 Theorem Prover, http://research.microsoft.com/enus/um/redmond/projects/z3/,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>