<!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>Towards User-Friendly and Efficient Analysis with Alloy</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Forbidden Pattern</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Xiaoliang Wang, Adrian Rutle and Yngve Lamo Bergen University College</institution>
          ,
          <addr-line>P.O. Box 7030, N-5020, Bergen</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-In model-driven engineering, structural models rep- it is obvious that finding design mistakes as early as in the resent software at the early phases of software development. They modelling phase helps to build better software at a lower cost. afirnealalyssurmeseudlt toingesnofetrwaateret.heThmuosd,eilts iins simubpsoerqtuaennt ttpohmasaeksewhsuicrhe Different kinds of correctness properties on structural modthese models are correct w.r.t. different concerns, e.g., consistency, els are studied in MDE [4]. For instance, consistency requests or lack of redundant constraints. In this paper, we present that a model has at least one instance; lack of redundant cona bounded verification approach using Alloy and integrate it straints requests that, given a model, there exists no constraint into a graphical modelling tool. The graphical models and the C1 that can be derived from another constraint C2, i.e., there sppreocpiefirctaietisontos,bwehvicehriafireedeaxraemainuetodmbaytitchaellAylltoryanAsnfoarlmyzeedr ttoo vAelrliofyy exists at least one instance of the model which satisfies C1 whether the models satisfy the properties. The verification results but not C2. These properties can be categorised into validity, are presented as feedbacks in the modelling tool. In this way, a i.e., whether all the instances of a model satisfy a property, model designer can verify models without knowing the underlying and satisfiability, i.e., whether there exists an instance which verification techniques and receive user-friendly feedbacks. A satisfies a property [2]. challenge in the verification approach is scalability. To tackle this, we present a technique for splitting models into submodels Several approaches and tools have been presented to verify according to their constraints and the properties to be verified. these properties on structural models [2]. Generally, they transA submodel is left-total if each of its instances can be extended late a structural model and the properties to be verified into a to an instance of the whole model by adding elements typed specification in some formalism, e.g., Constraint Satisfaction obfy athmeoedleemleinststhtehnatreadruecnedot tion tthhee vseurbimficoadtieol.nTohfeitvserliefifct-attoitoanl Problem (CSP) [4], [5], Relational Logic [6], [7], etc. Then submodels. We will demonstrate the approach by a running the specification is analysed by theorem provers or constraint example and we present an experimental result to show that solvers to answer whether the model satisfies the properthe splitting technique may alleviate the scalability problem. ties. However, since these approaches are not integrated into modelling tools, the model designers have to switch from a I. INTRODUCTION modelling tool to a verification tool to use the approaches; they also need background in verification. Moreover, most of the approaches present instances when the properties are satisfied, but give no feedback when the properties are violated. This is not convenient for model designing. In this paper, we present a bounded verification approach of structural models using Alloy [8] and integrate it into a modelling tool DPF Model Editor [9]. The procedure of the approach is illustrated in Fig. 1. It translates a structural model specified in Diagram Predicate Framework (DPF) [10] and</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model-driven engineering (MDE) is a branch of software
engineering in which models are the first class entities [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In
the initial phases of software development, structural models
(static models in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) specify the structural information of a
problem domain. They identify the artifacts and their
relationships in the domain. The structure of these models can
be represented as graphs; nodes represent the artifacts while
edges represent relationships. In addition, the requirements of
the domain can be expressed as constraints of these models
in different formalisms, e.g., the Object Constraint Language
(OCL) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. An instance of a structural model is a graph which
is well-typed by the underlying graph of the model, and, in
addition, satisfies all the constraints of the model.
      </p>
      <p>Usually, structural models are specified using a modelling
language, e.g., UML plus OCL, within a modelling tool.
However, since manual work may cause errors, these models
should be verified to ensure correctness. In addition, in MDE,
these models are assumed to generate the models in subsequent
phases which then generate software in the final phases by
model transformations. Thus, the verification of these models
can avoid propagating the errors into the software. Moreover,
Fig. 1: Workflow for analysing structural models using Alloy
a property to be verified into an Alloy specification. Then,
the specification is examined by the Alloy Analyzer to check
if the model satisfies the desired property. If the property
is satisfied (violated), an instance (counterexample) of the
model is generated and displayed in the DPF Model Editor.
Otherwise, it means that there are some problems with the
model. The problematic part of the model will be highlighted
to help the model designer to identify the problem. In this
way, the model designer can verify the model under design
and receive user-friendly feedback which he can understand,
without knowing the underlying verification technique.</p>
      <p>
        The approach is bounded, using a similar strategy as used by
other approaches [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] to verify properties specified
in undecidable formalisms, e.g, First Order Logic (FOL). It
means that the approach finds instances or counterexamples
which satisfies or violates properties within a bounded search
space. The space is determined by a scope, i.e., a user-defined
number which restricts the number of instances of each model
element in a model. In this way, the undecidability of the
underlying formalism is handled. This approach has scalability
problems since the search space grows exponentially along
with the scope; the verification of large models with a large
search space may take long time or become intractable.
      </p>
      <p>To solve this issue, we introduce a technique for splitting
models into submodels based on the factors of the constraints,
i.e., the model elements which are affected by the constraints.
We will look for submodels which are left-total, i.e. the
submodels of which the instances can be extended to be
instances of the model. We outline an approach to check
whether a submodel is left-total based on forbidden patterns
of the constraints. That is, these submodels do not contain any
match of patterns which are forbidden by any constraints of
the model. Then the validation of a model can be reduced to
the validation of its left-total submodels.</p>
      <p>
        In order to demonstrate the contributions of this paper, we
use a civil status model which modifies the traditional civil
status model in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] originally specified in UML and OCL.
For the splitting technique, we run an experiment to compare
the performance before and after splitting, the result shows
that it can alleviate the scalability problem.
      </p>
      <p>In Section II we present background information, and in
Section III the integrated bounded verification approach is
illustrated. Then in Sections IV, we present the techniques
for splitting models into submodels. Afterwards, we compare
our approach with other studies in Section V. Finally, in
Section VI, we summarise and discuss some future work.</p>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND</title>
      <p>We will start by presenting our running example which
describes persons, their relations and features: gender and civil
status. In addition, according to the reality, several properties
are required in this model, two of which are as following.
p1) each person has exactly one gender
p2) no person can have both a wife and a husband
Based on these requirements, we can define a model in DPF
(see Fig. 2) using the DPF Model Editor (The complete
example is available at http://dpf.hib.no/downloads/civil.zip).</p>
      <p>
        DPF provides a formalisation of (meta)modelling based on
category theory [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. This is different from UML-based
modelling in which diagrammatic languages are used to specify
model structure and the text-based OCL to specify constraints.
Moreover, DPF workbench enables development of domain
specific languages in a hierarchy where the domain under
study can be specified at several abstraction levels [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. A
model in DPF is represented by a diagrammatic specification
S = (S; CS ) consisting of an underlying graph structure S
and a set of constraints CS . The structure S is a directed
graph containing nodes and arrows that represent the artifacts
and their relationships in a problem domain. As shown in
Fig. 2, the domain artefacts are specified as the nodes Person,
Gender, and CivilStatus. The relations between the artefacts are
specified as the edges wife, husband, pGender and pCivstat.
      </p>
      <p>Models in DPF also contain constraints which specify
required properties. For instance, the property p1 is specified as
the constraint [1..1] on the edge pGender (ac1); p2 is specified
as the constraint [xor] on the edges wife and husband (ac2).
These two constraints are atomic constraints (AC) which are
formulated based on predicates from the signature shown in
Fig. 3: Semantics of AC</p>
      <p>
        In addition to ACs, graph constraints (GC) may be used to
define dependencies among constraints and/or the structures
of a model [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. For example, we further specify that ”if a
person is married and has no wife, the person should have
a husband” as the GC MarriedWithoutWife (gc1) shown in
Table II. Each GC N n L !u R consists of three graphs: left
L, right R and negative application condition N which are
typed by the underlying graph S (denoted by L : S, R : S and
N : S in the table); and two injective graph homomorphisms n
and u (see [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]). In Table II, the morphisms are identified
by the names, e.g., L embeds p1 in R and N . The other GCs
express properties which are explained by their names. Note
that in DPF, GCs are generalised such that L and R can be
specifications instead of graphs, see [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. However, we only
consider classical GCs here and leave the general case to future
work. A graph I well-typed by S satisfies a GC when for every
match l of L in I (i.e. a graph morphism l : L ! I), if there
is no match n of N in I where l = n; n0, then there must
exist a match of R in I where l = u; r, outlined in Fig. 4.
We require also that a match is compatible with typing. For
example, a match of L in a graph I typed by S is a graph
morphism l : L ! I such that l; I = L.
      </p>
      <p>A model in DPF defines its instances as graphs well-typed
by the structure and satisfying all the constraints. We use I M
to denote that the graph I is an instance of the model M .
Recall that the model properties to be
verified can be categorised into validity 9I M j I e (1)
and satisfiability; these can be formally 8I M j I e (2)
expressed as the right two formulae, where M is a structural
model and e is a logical expression, respectively.</p>
      <p>Alloy consists of a structural modelling language and a
constraint solver, the Alloy Analyzer, which are used to
specify and analyse specifications. A specification in Alloy
consists of signatures, which represent artifacts of a domain;
each signature may have fields which represent relationships;
properties about artifacts and relationships are specified as
facts in relational logic. An instance of an Alloy specification
is a set of atoms, the primitive entities in Alloy; each atom
belongs to a signature (in modelling terms we say that the
atom is typed by the signature); each field of the signature is
instantiated by a relation among those atoms. In addition, the
atoms and the relations of an instance satisfies all the facts
in the specification. Alloy supports also inheritance between
signatures. Thus, an atom can be typed by more than one
signature if there is inheritance among those signatures.</p>
      <p>
        Specification analysis is performed by the Alloy Analyzer.
Given a specification and an expression, the analyzer can
examine satisfiability by finding an instance which satisfies the
expression. It can also examine validity by using refutation,
i.e., validity is falsified if there is an instance which violates the
expression, called counterexample. The analysis is bounded: it
uses a user-defined scope which assigns a number to every top
level signature (i.e. signatures which do not inherit from
others) that defines the size of the search space. For each instance
in the space, the size of each signature s, i.e., the number of
atoms typed by s, cannot be larger than scope(s). Thus, the
termination of the analysis is guaranteed on the expense of
being complete, i.e., the analysis results are valid only if an
instance or a counterexample is found within the search space.
Another limitation of the Alloy Analyzer, as for other solvers,
is scalability. Even a small scope may lead to a large search
space [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. With a large scope, the analysis will become slow,
or even intractable. However, according to the small scope
hypothesis, most bugs have small counterexamples, thus many
applications have used Alloy successfully to examine complex
structures [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <sec id="sec-2-1">
        <title>B. Transformation from DPF to Alloy</title>
        <p>DPF represents models diagrammatically while Alloy
represents models textually. Despite of this difference, there is
a similarity between the two approaches. To describe artifacts
and relationships in a domain, DPF uses nodes and edges while
Alloy uses signatures and fields. From the similarity, we can
derive a mapping from DPF models to Alloy specifications
shown in Table III. We assume that nodes, edges and GCs
in DPF are uniquely named. Moreover, we do not allow a
predicate to be applied to the same structure more than once.
For example, two surjective predicates on the same arrow is
not allowed. That is, for any two ACs (p; 1) and (p; 2),
1( (p)) 6= 2( (p)).
1 //Signatures of nodes
2 sig NPerson{}
3 abstract sig NGender{}
4 abstract sig NCivilStatus{}
5 lone sig Nmale, Nfemale extends NGender{}
6 lone sig Nmarried, Nsingle, Ndivorced, Nwidowed
extends NCivilStatus{}
7
8 //Signatures of edges
9 sig Ehusband{src:one NPerson, trg:one NPerson}
10 sig Ewife{src:one NPerson, trg:one NPerson}
11 sig EpGender{src:one NPerson, trg:one NGender}
12 sig EpCivstat{src:one NPerson, trg:one NCivilStatus}</p>
        <p>Listing 1: Civil status model in Alloy</p>
        <p>According to TABLE III, nodes without enumeration
predicates are translated into signatures without fields while edges
are translated into signatures with two fields src and trg
which encode the source and target nodes. The names for the
derived signatures are equal to the names for corresponding
nodes (edges) prefixed with N (E). The prefixes distinguish
signatures for nodes and edges. This makes it easier to
translate the analysis result from Alloy to DPF, as shown
in the sequel. For example, the structure of the civil status
model is translated into signatures shown in Listing 1. The
node Person is translated into sig NPerson{}; the edge wife
is translated into sig Ewife{src:one NPerson, trg:one</p>
        <p>
          NPerson}. It should be mentioned that the approaches [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ],
[
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] handled edges (association in their works)
differently. Associations are encoded as relations between two
classes. With their approaches, it is not possible to represent
parallel links between two instances. But DPF is a framework
to design not only models but also metamodels. Therefore, it
is necessary to consider a more general case where parallel
edges may exist between two nodes. Nodes with enumeration
predicates are handled differently because Alloy does not
have a primitive enumeration type. We simulate enumeration
by inheritance and restricting the size of a signature in an
instance. For example, the two signatures Nmale and Nfemale
extend NGender; the keyword abstract restricts that, in an
instance, no atom is typed by NGender except the atoms typed
by male or female; the keyword lone restricts the number of
instances of Nmale, Nfemale to at most one. In this way, the
signature NGender defines an enumeration type with Nmale
and Nfemale as its literals. Similarly, CivilStatus defines
an enumeration type.
        </p>
        <p>Constraints (ACs and GCs) from the DPF models are
encoded as uniquely named facts in Alloy. ACs are
formulated based on predicates; the DPF Workbench enables the
designer to specify the semantics of these predicates using the
Alloy specification language (see Fig. 5). For example, the
semantics of the predicate multi(min,max) can be specified as
the expression in the Validator field in Fig. 5. The variables
between $$ refer to 1) elements in the arity, e.g., X, XY, and
2) parameters of the predicate, e.g., pmin, pmax (prefixed
with p). Since each AC (p; ) is given by a graph morphism
: (p) ! S, it is translated into a named fact by
replacing the variables referring to elements in (p) with their
corresponding signature names and the parameter variables
with their values; the fact name is p and the names of arrows
(nodes if no arrows in the predicate) connected with ” ”. For
instance, the AC in Fig. 2 is formulated on the edge pGender
based on [1..1]; its graph morphism is = fX 7!Person,
Y 7!Gender, XY 7!pGenderg; the values for the parameters
are min = max = 1. The derived fact, on Line 1 in Listing 2,
is named as multi_EpGender and is instantiated by replacing
variables in $$, e.g. $X$ with NPerson and $pmin$ with 1.
1 fact multi_EpGender{all n:NPerson| let count = #{e:</p>
        <p>EpGender|e.src=n}|count&gt;=1 and count &lt;=1}
2 fact MarriedWithoutWife{
3 all p1:NPerson|((some g:EpCivstat|g.src=p1) and
4 not (some w:Ewife|w.src=p1))
5 implies (some h:Ehusband|h.src=p1) }</p>
        <p>Listing 2: Atomic constraints and GCs in Alloy</p>
        <p>For the GCs, a named fact can be derived according to their
semantics as follows:
1 fact gc{
2 all e1L:T1L,: : :, elL:TlL| L(e1L, : : : elL) and
3 not (some e1N=L:T1N=L,: : :, enN=L:TnN=L| N(
e1L, : : : elL, eN=L, : : : enN=L))</p>
        <p>1
4 implies (some eR=L:T1R=L,: : :, erR=L:TrR=L|</p>
        <p>1
R(e1L, : : : elL, eR=L, : : : erR=L))}</p>
        <p>1
Line 2 encodes the match of L (l in Fig. 4); Line 3 encodes that
for each match l, there is no match of N (n0) where n; n0 = l;
Line 4 encodes that for each match l, there is match of R (r0)
where r; r0 = l. For example, gc1 is translated into the Alloy
fact as shown on Line 2 - 5 in Listing 2.</p>
      </sec>
      <sec id="sec-2-2">
        <title>C. Alloy Analysis and Presentation of Feedback</title>
        <p>Now, we analyse the Alloy specification with the Alloy
Analyzer. We will show how the verification of satisfiability
and validity properties is integrated into DPF Model Editor
by analysis of model consistency and detecting redundant
constraints. Moreover, we translate the analysis result and
present it in the DPF model editor.</p>
      </sec>
      <sec id="sec-2-3">
        <title>1) Analysis of Model Consistency: The DPF workbench is</title>
        <p>extended to support consistency checking of DPF models. The
designer can choose the context menu Validate Model
Consistency and the model will be automatically
translated into a corresponding Alloy specification as described
in Section III-B. The runfg command is used to search for
an instance of the Alloy specification. Recall that the Alloy
Analyzer needs a user-defined scope. In the tool, users can
specify the scope by using a configuration in Eclipse. Here
we use the scope 3 which is the default scope of Alloy. In the
future, we will study how to automatically derive a suitable
scope from models.</p>
        <p>If the Alloy Analyzer finds an instance of a specification,
it visualizes the instance as a graph, e.g., one instance of
the civil status model is shown in Fig. 6. The instance
contains atoms and relations, e.g., NPerson={(NPerson0
),(NPerson1)},Ehusband={(Ehusband)},Ehusband.
trg={(Ehusband1,NPerson0)} etc. The atoms typed by
signatures are visualised as yellow boxes while the relations
which instantiate fields of these signatures as arrows between
those boxes. In order to make it easier for the designer to
interpret the instance, we translate it back to a DPF instance.</p>
        <p>Using Table III, we can derive a mapping from an instance
of an Alloy specification (representing a DPF model) to an
instance of the DPF model. An atom that is typed by a node
signature NX (e.g. NPerson) is translated back to a node in a
DPF instance which is typed by its corresponding node X (e.g.
Person) in the DPF model. In the same way, an atom that is
typed by an edge signature (e.g. EpGender) is translated back
to an edge typed by its corresponding edge in the DPF model
(e.g. pGender) in the DPF model. Moreover, for each edge in
the DPF instance, its source and target nodes are set according
to the relations src and trg in the Alloy instance. If an atom
is typed by both NX and NY where NX inherits from NY, the
atom is translated to a node typed by the node Y in the DPF
model. According to these rules, the instance in Fig. 6 can be
translated into a DPF instance as shown in Fig. 7.
If the Alloy Analyzer cannot find an instance, it may be
that the model is inconsistent. For instance, assume that the
designer adds another constraint which ensures that at least
one single person exists. The constraint is specified as the GC
singlePerson; where N : S and L : S are empty while the
s:pCivstat</p>
        <sec id="sec-2-3-1">
          <title>R : S is p1:Person / single:CivilStatus . After analysing the</title>
          <p>model again, the Alloy Analyser finds no instance; instead,
it gives information about the part of the specification that
cause the inconsistency. For the Alloy Analyzer to give such
information, it is required to select a SAT solver with Unsat
Core. The information contains the locations of the expressions
which contradict each other. We can use the locations to
identify the facts in the Alloy specification that contains such
expressions. Recall that the constraints in DPF is translated
into uniquely named facts in Alloy. From the name of the facts,
we can obtain the corresponding constraints in DPF and
highlight them in the DPF Workbench. In this example, the facts
xor Ewife Ehusband , multi Ecivstat , HasWifeIsMarried ,
HasHusbandIsMarried and singlePerson in the Alloy
specification are identified as the cause of the inconsistency. By
the name of the facts, we find that the corresponding ACs and
GCs in DPF. For instance, the name xor Ewife Ehusband
indicates that the fact is derived from the AC on the edges wife
and husband which is formulated based on the predicate xor
(see Fig. 8). In the same way, we can find other constraints
in DPF, e.g., the multiplicity constraint [1..1] on the edge
pCivstat (highlighted in red), and the GCs hasWifeIsMarried ,
hasHusbandIsMarried and singlePerson (shown in message
box) are the inconsistency causes. After checking the five
constraints, the designer can easily find the problem, e.g, in
the civil status model, the atomic constraint [xor] should be
replaced with a [nand] constraint which specifies that a person
cannot have both a wife and a husband. After this correction,
the model is verified consistent.</p>
          <p>Fig. 9: Redundant constraints feedback in DPF Workbench</p>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>2) Detecting Redundant Constraints: Searching for re</title>
        <p>dundant constraints is performed similarly as model
consistency analysis. When the designer chooses the context menu
Redundancy Check, the DPF model is translated to an
Alloy specification. Then we use the command check{c_i
} to check whether the constraint ci is redundant. Given a
model (S; CS = fc1; : : : ;cng), a constraint cn+1 62 CS is
redundant if every graph that is typed by S and satisfies
fc1; : : : ;cng also satisfies cn+1. In Alloy, the check can be
preformed by a check fcn+1 g command which tries to find a
counterexample satisfying c1^ : : : ^cn but not cn+1. If such
a counterexample is found, it means that the constraint is not
redundant. Otherwise, the constraints which can imply cn+1
will be reported. The technique to find which constraints that
can imply cn+1 is the same as to find which constraints make a
model inconsistent. For the civil status model, four constraints
are found redundant as shown in Fig. 9. The designer may
choose to keep or delete these. Notice that the two graph
constraints marriedWithoutHusband and marriedWithoutWife
are derived by each other. Only one of the constraints can be
deleted otherwise the model will lose information.</p>
        <p>In the end, we should emphasise that the approach to
analyse models using Alloy is incomplete. If the analyzer
cannot find an instance or a counterexample in a certain scope,
we can only assure that the model is not consistent or a
constraint is not redundant with the given scope.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>IV. MODEL SPLITTING</title>
      <p>In this section, we present a model splitting technique
which split a model into submodels. We will show that the
verification of a model can be reduced into the verification of
a submodel if the submodel is left-total.</p>
      <sec id="sec-3-1">
        <title>A. Left-total submodel</title>
        <p>Given a constraint c on a structure S, c can only affect a part
S0 of S, where S0 S and c is either an AC or a GC. Due to
the pullback construction in Fig. 3 and the semantics of GCs
in Fig. 4, this means that for every graph I well-typed by S,
we only need to inspect the elements which are typed by S0 to
decide whether I satisfies c. For example, the AC [surj] on the
pGender
edge pGender affects only Person / Gender (S1). Given
a graph, e.g., p:Person / s:Civilstatus , only the subgraph typed
by S1, i.e., p:Person , affects whether the graph satisfies the
constraint. We will define this restriction formally as follows.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 1 (Restriction). Given a subgraph S0 of a graph S,</title>
        <p>the restriction of a graph I well-typed by S on S0 is the largest
subgraph of S which is well-typed by S0 . The restriction is
denoted as I#s0 , where s0 is the inclusion s0 : S0 ! S. When
the inclusion can be identified from the context, we will use
I#S0 to denote the restriction. Formally, it is the pullback of</p>
      </sec>
      <sec id="sec-3-3">
        <title>I, where</title>
        <p>is the typing of I, as
the diagram S0 s!0 S
shown in Fig. 10.</p>
        <p>S00 </p>
        <p>O
00
I#(s00;s0)

s00</p>
        <p> s0
/ S0</p>
        <p>O
0
/ I#s0</p>
        <p>
Fig. 10: Restriction
/ S</p>
        <p>O
/ I
(I#S1 )#S1\S2 = (I#S2 )#S1\S2 .</p>
        <p>Since pullback are compositional, restrictions are also
compositional along inclusions. That is, given a subgraph S00 of
S0, the restriction of I on S00 equals to the restriction of I
on S0 then further on S00, i.e., I #s00;s0 = (I#s0 ) #s00 . Given
a structure S and two of its subgraphs S1 and S2 with the
overlapping S1 \ S2, for every graph I well-typed by S,</p>
      </sec>
      <sec id="sec-3-4">
        <title>Definition 2 (Factor). Given a constraint c on a structure</title>
      </sec>
      <sec id="sec-3-5">
        <title>S, the factor 'c of the constraint is a subgraph of S which</title>
        <p>contains all the types referred to in the definition of the
constraint. Given an AC c = (p; ), its factor 'c is ( (p));
Given a GC gc, its factor 'gc is N (N ) [ L(L) [ R(R).</p>
      </sec>
      <sec id="sec-3-6">
        <title>Corollary 1. Given a constraint c on a structure S, its factor</title>
        <p>'c affects whether a graph satisfies the constraint. It means
that for each graph I well-typed by S, I satisfies c if and only
if I#'c satisfies c.</p>
        <p>For example, the factors of the four constraints in the
civil status model ([surj] and [1..1] on the edge pGender, [nand]
between the edges wife and husband, and gc1) , are shown in
Fig. 11. Consider the [surj] on the edge pGender, the constraint
can be expressed as the FOL expression 8g:Gender|9pg:
pGender|pg.trg=g. The types referred to in the expression
are the node Gender and the edge pGender. The factor '[surj]
contains these two types, however, since the factor is a graph,
'[surj] also contains the node Person.
[irr]</p>
        <p>wife
Definition 3 (Splitting). Given a model M = (S; CS ), a
splitting of M , denoted as M = M1 M2, are two submodels
M1 = (S1; CS1 ) and M2 = (S2; CS2 ), where S1 [ S2 = S.</p>
      </sec>
      <sec id="sec-3-7">
        <title>In addition, for every constraint c of each submodel Mi, its</title>
        <p>factor 'c is a subgraph of the structure Si. If the factor of
a constraint is the subgraph of both structures, the constraint
belongs to both submodels.</p>
        <p>If the factor of one constraint is a subgraph of the factor
of another constraint, the two constraints belong to the same
submodels, e.g, [surj] and [1..1] on pGender. In Fig. 12 the
civil status model is split into two submodels according to
the factors of its constraints. Notice that, submodels are also
models, thus, these can be further split into submodels.
w
p1:Person</p>
        <p>a
!
p2:Person
h
c1 &amp;
c2/ married
w
p1:Person</p>
        <p>a
!
p2:Person
h
gg12 6/ male
c1</p>
        <p>(
c2 / married
(a) Instance of M1</p>
        <p>(b) Instance of M
whole model. For example, an instance of the submodel M1
shown in Fig. 13a is not an instance of M , since it violates
[1..1] on pGender. But it can become an instance of M by
adding elements typed by the types in M2, e.g., an edge g1
to p1, depicted in dash lines in Fig. 13b. Some submodels are
special in that, every instance of these submodels can become
an instance of the whole model by adding elements typed by
the types in other submodels. Inspired by the term left-total
relations, we call these submodels as left-total submodels.
Definition 4 (Left-total model). Given a submodel M1 =
(S1; CS1 ) of model M , M1 is left-total, if for every instance</p>
      </sec>
      <sec id="sec-3-8">
        <title>I1 of the submodel M1, there exists an instance I of the model</title>
      </sec>
      <sec id="sec-3-9">
        <title>M where the restriction of I on S1 equals to I1. Formally, it</title>
        <p>means that 8I1 M19I M j I#S1 = I1.</p>
        <p>A left-total submodel can be used to reduce the verification
of the whole model if the factor of the property to be verified
is a subgraph of the underlying structure of the submodel, as
proved by the following theorem.</p>
      </sec>
      <sec id="sec-3-10">
        <title>Theorem 2. Verification of a property p on M can be reduced</title>
        <p>to the verifications of p on M1 if M1 is a left-total submodel
of M and the factor of p is a subgraph of S1. Formally, it can
be expressed as the following two formulae.</p>
        <p>8I M j I p , 8I1 M1 j I1 p (3)
9I M j I p , 9I1 M1 j I1 p (4)
Proof. The proof of formula 4 follows from formula 3.
Proof of formula 3.
) Since M1 is left-total, for each instance I1 of M1, there
exists an instance I of M such that I #S1 = I1. Because I
satisfies p and I#'p = (I#S1 )#'p = I1#'p , I1 also satisfies p.
( For each instance I of M , I satisfies p because I #'p =
(I#S1 )#'p and I#S1 satisfies p.</p>
        <p>The theorem implies that a verification problem can be
reduced when there is a left-total submodel containing the
factor of the property to be verified. For example, Given a
model (S; CS = fc1; : : : ;cng), to check if a constraint cn+1
is redundant, we need to check the formula 8I M j I cn+1.
We will not verify this on the whole model. Instead, we can
verify this on the left-total submodel where the factor of cn+1
is a subgraph of the structure of the submodel.</p>
        <p>But some properties can be verified on a left-total submodel
even if theirs factor is not a subgraph of the structure of
the submodel. For instance, consistency is such a special
property where the factor of the property is the whole structure.
However, given a left-total submodel M1, M is consistent if
and only if M1 is consistent. If M1 has an instance, according
to Definition 4, M also has an instance. Conversely, if M has
an instance, M1 also has an instance. Hence, the verification
of consistency can be performed on a left-total submodel.</p>
      </sec>
      <sec id="sec-3-11">
        <title>B. How to find left-total submodels?</title>
        <p>Given a model, we can split the models into submodels
based on their factors. Now, the problem is how to find
lefttotal submodels. We find that given two submodels M1 and
p:Pe_rson _ :wife</p>
        <p>p:Pe_rson :husband/p1:Person
:husband (1)</p>
        <p>:wife
p:Pe_rson :wife / p1:Person p:Person :wife 1- p1:Person</p>
        <p>:husband
(3)
p:Person :wife / p1:Person
(5)
:husband )
p2:Person
(2)
(4)
M2, the key point to find whether M1 is left-total, is to check
every graph well-typed by the overlapping structure of the two
submodels. According to Definition 4, M1 is left-total if and
only if every instance I1 of M1 can become an instance I of
M such that I#S1 = I1. According to the restriction definition,
if I1#S1\S2 is an instance of M2, I1 satisfies all the constraints
of M2. Thus, I1 can become an instance of M . Otherwise, if
I1#S1\S2 is not an instance of M2, we should find an instance
I2 of M2 where I2#S1\S2 = I1#S1\S2 . Notice that if a graph
well-typed by S1 \ S2 is not contained by any instance of M1,
we will not bother to consider it. In the following theorem,
we will prove the criteria formally.</p>
        <p>Theorem 3. Given a splitting M = M1 M2, M1 is left-total,
if and only if, for each graph well-typed by the overlapping of
the underlying structures, denoted as S1 \ S2, if G 2M2 and
there is an instance I1 of M1 where I1#S1\S2 = G, then there
is an instance I2 of M2 where I2#S1\S2 = G. Formally, it can
be expressed as:
8G : S1 \ S2
j
)
(G 2M2 ^ 9I1 M1 j I1#S1\S2 = G)
9I2 M2 j I2#S1\S2 = G
(5)
Proof. ( For every instance I1 of M1, if I1 M then the
condition for left total is satisfied. Otherwise, I1 2 M . Let
G = I1 #S1\S2 . According to the condition, there exists an
instance I2 of M2 where I2#S1\S2 = G. Let I = I1 [ I2, since
I #S1 = I1 M1 and I #S2 = I2 M2, I is an instance of M .
Thus, the submodel M1 is left-total.
) Assume that the formula is false. It means that there is an
instance I1 of M1 where G = I1#S1\S2 is not an instance of
M2. In addition, there is no instance I2 of M2 where G =
I2#S1\S2 . Since M1 is left-total, there exists an instance of M
where I#S1 = I1. It also means there is an instance I0 = I#S2
of M2 where G = I0#S1\S2 , which causes contradiction.</p>
        <p>To check the criteria, we now consider a more general
problem: given a model M with structure S, whether there
exists a forbidden graph, i.e. a graph well-typed by S which
is not an instance of M and not a subgraph of any instance
of M . To answer this problem, we introduce the notion of
forbidden pattern and show that whether a submodel M1 is
left-total is depending on the forbidden patterns of M1 and
M2.</p>
        <p>Given a model M with structure S, if a graph is a forbidden
graph for c, it means that the graph will never become an
instance of M whenever adding elements typed by S. For
example, for the multiplicity constraint [1..1] on the edge
pGender</p>
        <p>Person / Gender , a forbidden graph is a person having
two genders. Constraints may have no forbidden graph. e.g.,
[surj] on the edge pGender. Since a forbidden graph will never
be valid although we add correctly typed elements to it, each
constraint has either no forbidden graph or infinitely many.
In other words, forbidden graphs can be generalised as some
patterns. If one of the patterns is present in a graph, the graph
is a forbidden graph.</p>
        <p>Constraint
Person p G[1e.n.1d]er/ Gender</p>
        <sec id="sec-3-11-1">
          <title>Person _ wife</title>
          <p>[irr]
p:Person
1:pGende-1rg1:Gender p:Person1:pGende/rg1:Gender
2:pGender
2:pGender )</p>
          <p>g2:Gender
p:Person _ :wife
Pers_on _ wife</p>
          <p>[nand]
husband</p>
          <p>:husband
Definition 5 (Forbidden Pattern). Each constraint c on a
structure S has a set of forbidden patterns where</p>
        </sec>
      </sec>
      <sec id="sec-3-12">
        <title>1) each forbidden pattern FP is a forbidden graph FG</title>
      </sec>
      <sec id="sec-3-13">
        <title>2) each FG of c has an injective match from one of its</title>
        <p>forbidden patterns to FG</p>
      </sec>
      <sec id="sec-3-14">
        <title>3) for each FP , no other forbidden pattern includes FP</title>
        <p>Forbidden pattern represents forbidden graphs; each
forbidden pattern represents a set of forbidden graphs. For example,
for the multiplicity constraint [1..1] on the edge pGender, the
graph that a person has two genders is its only forbidden
pattern. It represents all the forbidden graphs where there is a
person having more than one gender. The forbidden patterns of
the constraints [1..1], [irr] and [nand] are shown in the TABLE IV.</p>
        <p>Given a model M with structure S, the forbidden patterns of
M is the union of the forbidden patterns of all the constraints
on the model. Given a subgraph S0 of S, there are forbidden
graphs well-typed by S0 if and only if there exists one
forbidden pattern well-typed by S0. It means that the type
graph of one forbidden pattern is a subgraph of S0.</p>
        <p>Based on forbidden patterns, the criteria in Theorem 3 can
be reduced into several conditions, which are stated in the
following theorem.</p>
        <p>Theorem 4. Given a splitting M = M1 M2, the submodel</p>
      </sec>
      <sec id="sec-3-15">
        <title>M1 is left-total if and only if one of the following conditions</title>
        <p>are satisfied:</p>
      </sec>
      <sec id="sec-3-16">
        <title>1) the overlapping of the underlying structures is empty, i.e.,</title>
        <p>S1 \ S2 = ;
2) every graph well-typed by S1 \ S2 is an instance of M2</p>
      </sec>
      <sec id="sec-3-17">
        <title>3) there are no instances of M1</title>
      </sec>
      <sec id="sec-3-18">
        <title>4) If M1 and M2 have instances, every forbidden pattern of</title>
        <p>M2 well-typed by S1 \ S2 is also a forbidden pattern of
M1</p>
        <p>According to Theorem 3, the first three conditions are
obviously correct. In the following, we just prove the last
condition.</p>
        <p>Proof. Given a forbidden pattern F P of M2 which is
welltyped by S1 \ S2, there is a graph G well-typed by S1 \ S2
which is not an instance of M2. If F P is also a forbidden
pattern of M1, there is no instance I1 of M1 where I1#S1\S2 = G,
therefore, the formula 5 is true. Otherwise, there is no instance
I2 of M2 where I2 #S1\S2 = G, therefore, the formula 5 is
false.</p>
        <p>The conditions 1 and 4 can be checked based on the
definition of constraints or properties; while the other two
conditions can be checked by using of the Alloy Analyzer.
It should be noted that, the last condition implies also that, if
no forbidden pattern of M2 is well-typed by S1 \ S2, M1 is
a left-total submodel. This can be used to evaluate whether a
submodel is left-total according only to the forbidden patterns
of M2. For verification purpose, we can use conditions 1 and
4 to check if M1 is left-total. In the example, the M2 has
only one forbidden pattern which is not well-typed by Person.
Thus, M1 is a left-total submodel.</p>
      </sec>
      <sec id="sec-3-19">
        <title>C. Experimental Results</title>
        <p>After we find the left-total submodels, we can verify
properties on these submodels. For example, when we check
the consistency of the civil status model using the Alloy
Analyzer, the verification can be performed on the submodel
M1. The experimental results are shown in Table V. It shows
the verification performances for each scope (S, from 5 to
20) in seconds: translation time from Alloy to SAT (T),
verification time (T) and the total time (V+T), of three models
M , M 0 and M1. M is the whole model in Fig. 12. M1 is
the left-total submodel by splitting M ; From the result of
M and M1, we can see that there is no big improvement
after splitting. The reason is that M is almost unchanged
compared to M1; only one edge is different. In order to show
the improvement by splitting, we use M 0 as an artificial model,
pGenderi
by adding Person / Genderi for i = 1::100, to the M .
The performance result shows big improvement especially in
a large scope; e.g. at scope 20 the time cost is reduced from
36.898s to 1.874s.</p>
        <p>The experiment result in TABLE V is for a consistent
model. For this model, the Alloy Analyzer will stop when
it finds an instance. This is different from the verification
of inconsistent models, where the Alloy Analyzer will walk
through the whole search space. In order to demonstrate the
splitting technique for the two different situations, we run an
experiment on the civil model in Fig 2, i.e., the inconsistent
version of the model before replacing the constraint [xor] with
[nand]. The experimental results are shown in Table VI. M is
the inconsistent civil status model; M1 is the left-total model
by splitting M ; Again, since M1 is only slightly different from
M, there is no big improvement after splitting the model. In the
same way as for the consistent model, we create an artificial
model M. The performance result shows a better improvement,
e.g., at scope 20 the time cost is reduced from 211.730s to
19.842s.</p>
        <p>The two experiment results show that when applying the
splitting technique to a model, if the derived left-total model
is much smaller than the original model, the performance can
be greatly improved, especially at larger scopes.</p>
        <p>
          There exists many approaches which work on verification
of structural models in MDE [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Generally, these approaches
translate a structural model and the properties to be verified
into a specification in some formalisms. Then the specification
is analysed by an existing tool to answer whether the model
satisfies the properties. For example, the authors in [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ],
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] translated UML or EMF models into Constraint Logic
Programming (CSP) and use the constraint solvers, ECLiPSe;
the works in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] translated UML models into
Alloy specifications, and use the Alloy Analyzer; Ali et al. [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
and Brucker et al. [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] translated UML models into HOL and
use the theorem solver Isabelle. Our approach is similar to
the ones using Alloy. But we use a different formalization
for the structure which can handle general cases; moreover,
we do not provide a transformation of FOL expressions into
Alloy facts; instead, we provide an interface with which users
can specify their constraints in Alloy directly. Most of these
works implemented their approaches but did not integrate
the implementation into a modelling tool, except [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] which
is integrated into EMF model editor in Eclipse. While our
work integrates the verification approach into our modelling
tool and thus the model designer avoids switching between
modelling tools and verification tools, in the other approaches
the model designer specifies models in the modelling tool and
uses verification tools to verify the models; afterwards, she has
to interpret the verification results back to the corresponding
artifacts in the modelling tool. Our approach also hides the
underlying verification techniques and provides feedback to
the model designer no matter what verification results is given.
        </p>
        <p>
          Many verification approaches have scalability problems [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
Our work provides a technique to reduce the verification
of a model into the verification of its left-total submodels.
The technique splits models into submodels according to
the factors of constraints; then the left-total submodels are
identified based on the forbidden patterns of the constraints.
Shaikh et al. [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] has present a similar splitting algorithm for
verification of UML class diagrams with invariants in OCL.
This algorithm splits models based on dependencies between
classes which are derived from invariants. According to the
dependencies, submodels which are trivially satisfiable can be
omitted. These submodels are mainly the ones which contain
only multiplicity constraints and have no other constraints.
In other words, their algorithm splits models mainly based on
the multiplicity constraints. In contrast, our technique consider
more general constraints. Moreover, we present the technique
formally and give a formal prove for it. This can also be used
to formally prove Shaikh’s algorithm.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>VI. CONCLUSION</title>
      <p>We have presented a bounded verification approach of
structural models using Alloy. The approach is integrated into our
modelling tool. The model designers can verify models under
construction with the approach. They can receive user-friendly
feedback as to the verification results of some properties, e.g.,
consistency and lack of redundant constraints without knowing
the underlying verification technique. The approach is general
in the sense that as long as the language used to specify
the constraints can be translated to Alloy, the properties can
be verified using the DPF Workbench. We also provide a
technique to tackle the scalability problem of the verification
approach. According to the factors and the forbidden patterns
of the constraints, models can be split into some left-total
submodels. The verification of the models can be reduced to
the verification of those left-total submodels. We illustrated
the work by checking the consistency of a sample model. The
experimental results show that the splitting technique alleviates
the scalability problem when the left-total submodel is much
smaller than whole model.</p>
      <p>Currently, to verify models, users must specify a scope for
verification. We will study how to derive a suitable scope
from constraints. In addition, in this paper, we construct the
forbidden patterns manually, but in future work we will study
if and how these patterns can be derived automatically.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          , “Guest Editor's Introduction:
          <string-name>
            <surname>Model-Driven</surname>
            <given-names>Engineering</given-names>
          </string-name>
          ,” IEEE Computer, vol.
          <volume>39</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>31</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Gonza</surname>
          </string-name>
          <article-title>´lez and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>Formal verification of static software models in MDE: A systematic review</article-title>
          ,
          <source>” Information &amp; Software Technology</source>
          , vol.
          <volume>56</volume>
          , no.
          <issue>8</issue>
          , pp.
          <fpage>821</fpage>
          -
          <lpage>838</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Object</given-names>
            <surname>Management</surname>
          </string-name>
          <string-name>
            <surname>Group</surname>
          </string-name>
          ,
          <article-title>Object Constraint Language Specification</article-title>
          ,
          <year>February 2010</year>
          , http://www.omg.org/spec/OCL/2.2/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , R. Clariso´, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Riera</surname>
          </string-name>
          , “
          <article-title>On the verification of UML/OCL class diagrams using constraint programming</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>93</volume>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Gonza</surname>
          </string-name>
          ´lez, F. Bu¨ttner, R. Clariso´, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>EMFtoCSP: a tool for the lightweight verification of EMF models</article-title>
          ,”
          <source>in Proceedings of the First International Workshop on Formal Methods in Software Engineering - Rigorous and Agile Approaches</source>
          ,
          <source>FormSERA</source>
          <year>2012</year>
          , Zurich, Switzerland, June 2,
          <year>2012</year>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gnesi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gruner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Plat</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , Eds. IEEE,
          <year>2012</year>
          , pp.
          <fpage>44</fpage>
          -
          <lpage>50</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          , G. Georg,
          <string-name>
            <surname>and I. Ray</surname>
          </string-name>
          , “
          <article-title>On challenges of model transformation from UML to Alloy,” Software</article-title>
          and
          <string-name>
            <given-names>Systems</given-names>
            <surname>Modeling</surname>
          </string-name>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bohling</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Richters</surname>
          </string-name>
          , “
          <article-title>Validating UML and OCL models in USE by automatic snapshot generation</article-title>
          ,
          <source>” Software and System Modeling</source>
          , vol.
          <volume>4</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>386</fpage>
          -
          <lpage>398</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Alloy</surname>
          </string-name>
          , Project Web Site, http://alloy.mit.edu/community/.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lamo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mantz</surname>
          </string-name>
          , Øyvind. Bech,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sandven</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          , “DPF Workbench:
          <article-title>a multi-level language workbench for MDE,”</article-title>
          <source>in Proceedings of the Estonian Academy of Sciences</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          , “
          <article-title>Diagram Predicate Framework: A Formal Approach</article-title>
          to MDE,”
          <source>Ph.D. dissertation</source>
          , University of Bergen,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          <article-title>Bu¨ttner, and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>Initiating a benchmark for UML and OCL analysis tools</article-title>
          ,
          <source>” in 7th TAP</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>115</fpage>
          -
          <lpage>132</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Barr</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <source>Category Theory for Computing Science (2nd)</source>
          .
          <article-title>Prentice-Hall, Inc</article-title>
          .,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lamo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mantz</surname>
          </string-name>
          ,
          <string-name>
            <surname>W.</surname>
          </string-name>
          <article-title>MacCaull, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          , “DPF Workbench:
          <string-name>
            <given-names>A Diagrammatic</given-names>
            <surname>Multi-Layer Domain Specific (Meta-)Modelling</surname>
          </string-name>
          Environment,” in Computer and Information Science, ser.
          <source>Studies in Computational Intelligence</source>
          ,
          <year>2012</year>
          , vol.
          <volume>429</volume>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>H.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Prange</surname>
          </string-name>
          , and G. Taentzer, Fundamentals of Algebraic Graph Transformation, ser. Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>D.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <article-title>Software Abstractions: Logic, Language, and Analysis</article-title>
          . The MIT Press,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bu</surname>
          </string-name>
          <article-title>¨ttner and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>Lightweight string reasoning for OCL,” in 8th</article-title>
          <source>ECMFA Proceedings</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>244</fpage>
          -
          <lpage>258</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , R. Clariso´, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Riera</surname>
          </string-name>
          , “
          <article-title>UMLtoCSP: a tool for the formal verification of UML/OCL models using constraint programming</article-title>
          ,
          <source>” in 22nd IEEE/ACM ASE</source>
          ,
          <year>2007</year>
          , pp.
          <fpage>547</fpage>
          -
          <lpage>548</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S. M. A.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          , “
          <article-title>From UML to Alloy and Back Again,” in MoDELS Workshops, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>6002</volume>
          . Springer,
          <year>2009</year>
          , pp.
          <fpage>158</fpage>
          -
          <lpage>171</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          , G. Georg,
          <string-name>
            <surname>and I. Ray</surname>
          </string-name>
          , “
          <article-title>On challenges of model transformation from UML to Alloy,” Software and System Modeling</article-title>
          , vol.
          <volume>9</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>69</fpage>
          -
          <lpage>86</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>B. F. B.</given-names>
            <surname>Braga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. P. A.</given-names>
            <surname>Almeida</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Guizzardi, and</article-title>
          <string-name>
            <given-names>A. B.</given-names>
            <surname>Benevides</surname>
          </string-name>
          , “
          <article-title>Transforming OntoUML into Alloy: towards conceptual model validation using a lightweight formal method</article-title>
          ,
          <source>” ISSE</source>
          , vol.
          <volume>6</volume>
          , no.
          <issue>1-2</issue>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>63</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>F.</given-names>
            <surname>Mostefaoui</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Vachon</surname>
          </string-name>
          , “
          <article-title>Verification of Aspect-UML models using alloy,” in AOM '07: Proceedings of the 10th international workshop on Aspect-oriented modeling</article-title>
          . ACM Press,
          <year>2007</year>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>48</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Nauman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Alam</surname>
          </string-name>
          , “
          <article-title>An Accessible Formal Specification of the UML and OCL Meta-</article-title>
          Model in Isabelle/HOL,” in Multitopic Conference,
          <year>2007</year>
          .
          <article-title>INMIC 2007</article-title>
          . IEEE International,
          <year>Dec 2007</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wolff</surname>
          </string-name>
          , “
          <article-title>HOL-OCL: A formal proof environment for UML/OCL</article-title>
          ,” in Fundamental Approaches to Software Engineering, 11th International Conference,
          <source>FASE 2008 Proceedings, ser. Lecture Notes in Computer Science</source>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Fiadeiro</surname>
          </string-name>
          and P. Inverardi, Eds., vol.
          <volume>4961</volume>
          . Springer,
          <year>2008</year>
          , pp.
          <fpage>97</fpage>
          -
          <lpage>100</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Shaikh</surname>
          </string-name>
          , R. Clariso´,
          <string-name>
            <given-names>U. K.</given-names>
            <surname>Wiil</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Memon</surname>
          </string-name>
          , “
          <article-title>Verification-driven slicing of UML/OCL models</article-title>
          ,”
          <source>in ASE</source>
          <year>2010</year>
          , 25th IEEE/ACM International Conference on Automated Software Engineering,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pecheur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Andrews</surname>
          </string-name>
          , and E. D. Nitto, Eds. ACM,
          <year>2010</year>
          , pp.
          <fpage>185</fpage>
          -
          <lpage>194</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>