<!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>Model Finding and Model Completion with USE</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Martin Gogolla</string-name>
          <email>gogolla@informatik.uni-bremen.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Loli Burguen~o</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Antonio Vallecillo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universidad de Malaga</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Bremen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This short contribution demonstrates central options in the tool USE (Uml-based Speci cation Environment) for exploring UML models within software development. It particularly uses so-called classifying OCL terms for building validation and veri cation scenarios and for completing partial models. The contribution demonstrates the tool's options with an example: statecharts together with a simple syntax model and a model for capturing nite fractions of the statechart semantics.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        In this paper, we demonstrate the options available in the tool USE [
        <xref ref-type="bibr" rid="ref10 ref11">10,11</xref>
        ]
(Umlbased Speci cation Environment) for UML and OCL models and the concept of
classifying terms (CTs) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which permit generating relevant and distinguished
sample object models for a given speci cation, together with the completion
capabilities of the USE model validator for specifying particular validation ("Are
we building the right product; aim: build test cases) and veri cation ("Are we
building the product right; aim: verify a property) scenarios. With them we are
able to quickly develop distinguishable and structurally non-equivalent object
models that satisfy certain system properties. More precisely, classifying OCL
terms permit de ning equivalence classes with those models that, from the
modeller's perspective, are equivalent. Then, the USE model validator is able to
generate one representative object model for each equivalence class, hence
signi cantly simplifying the number of test cases, and improving the e ectiveness
of the model checking process. In this contribution we illustrate these ideas for
exploring models within software development. We demonstrate the tool options
with a simple example: statecharts together with a simple syntax model and a
model for capturing nite fractions of the statechart semantics. One central
advantage we see in our approach is that we o er mainstream languages like UML
and OCL to formulate models and use these languages also to give feedback.
      </p>
      <p>The structure of the rest of this paper is as follows. Section 2 presents the
background work: CTs and the USE model validator completion capabilities.
Section 3 shows how a system can be tested with cts and object model
completion. Section 4 compares our work to similar related proposals. Finally, Sect. 5
concludes the paper.</p>
    </sec>
    <sec id="sec-2">
      <title>Modeling with USE</title>
      <sec id="sec-2-1">
        <title>Running example</title>
        <p>Our running example is shown in Fig. 1 with a class model and names of needed
OCL invariants. The model serves to describe the syntax of statecharts (left part
of the class model) and a semantics for statecharts in terms of a nite number of
traces (right part). The top left object model in Fig. 2 shows on the left an
example for a statechart and on the right an example trace. One could also say that
the left side represents design time elements and the right side runtime items.
The OCL invariants for the syntax part require unique state names, existence
of a single initial and a single nal state, deterministic transitions, and each
state to lie between the initial and the nal state. The OCL invariants for the
semantics part require each trace to be a cyclefree string of pearls (TraceNode
objects linked together looking like a string of pearls), to be connected to the
initial state and to show events corresponding to the transition events. Our view
on the model is that we have speci ed syntax and semantics of a particular
statechart language. Our tool allows the developer to systematically explore the
model by building test cases in form of object models and thereby to validate
and verify model properties and get con dence into the model.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Classifying terms</title>
        <p>Usual approaches to generate object models from a metamodel explore the state
space looking for di erent solutions. The problem is that many of these
solutions are in fact very similar, only incorporating small changes in the values of
attributes and hence \equivalent" from a conceptual or structural point of view.</p>
        <p>
          Classifying terms (CTs) [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] constitute a technique for developing test cases
for UML and OCL models. CTs are arbitrary OCL queries on a class model
calculating a characteristic value for each object model. Each expression can
be boolean, allowing the de nition of up to two equivalence classes, or of type
integer, where each resulting number de nes one equivalence class. Each
equivalence class is de ned by the set of object models with identical characteristic
        </p>
        <p>Fig. 2. Four di erent object models constructed with classifying terms.
values, selecting one canonical representative object model. Hence, the resulting
set of object models is composed from one object model per equivalence class,
and therefore they represent signi cantly di erent test cases. Besides, they
partition the full input space. For example, the following classifying terms could be
de ned for our metamodel.
context State inv i n i t i a l E q F i n a l :
let INI=State . allInstances &gt;any ( s j s . i s I ni t i a l=true ) in
let FIN=State . allInstances &gt;any ( s j s . isFinal=true ) in</p>
        <p>INI=FIN -- i n v a r i a n t s o n e I n i t i a l and oneFinal give d e t e r m i n a t e n e s s
context T r a n s i t i o n inv t w o T h r e e O r F o u r E v e n t s :
let n u m E ve n t s=T r a n s i t i o n . allInstances &gt; -- collect yields Bag
collect ( t j t . event ) &gt;asSet ( ) &gt;size ( ) in
n u m Ev e n t s=2 or n u m Ev e n t s=3 or n u mE v e n t s=4</p>
        <p>Each of these two CTs may be true or false. Together, they de ne four
equivalence classes. First, we want to distinguish between statecharts in which the
initial and the nal state coincide, and others with di erent initial and nal states.
Second, we want to have some sample models in which there are 2, 3 or 4 events,
and other models in which there could be less than 2 or more than 4 events.
The model validator, which is the tool in charge of exploring the search space
and generating object models, will simply return one representative of each of
the four equivalence classes. Note that CTs do not always pretend to generate
models that are representative of the complete metamodel, they might be used
to generate models that contain interesting features w.r.t. concrete scenarios of
interest to the modeller, and which are only relevant in a sub-part of the given
speci cation. They are also useful for nding object models that should not
happen in theory, i.e. counterexamples for our speci cation.
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>The USE model validator</title>
        <p>
          Object models are automatically generated from a set of CTs by the USE model
validator, which builds and inspects object models and selects one representative
for each equivalence class. For this, as described in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], each CT is assigned a
boolean or an integer value, and the values of the CTs are stored for each solution.
Using the CTs and these values, constraints are created and given to the Kodkod
solver [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] along with the class model during the validation process. The solver
prunes all object models that belong to the equivalence classes for which there
is already a representative element. The construction process always terminates
and yields a nite number of representative object models.
        </p>
        <p>The validator has to be given a so-called `con guration' that determines how
the classes, associations, data types and attributes are populated. In particular,
for every class a mandatory upper bound for the number of objects must be
stated. Both the USE tool and the model validator plugin are available for
download from http://sourceforge.net/projects/useocl/.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Systematically exploring a model with USE</title>
      <p>In order to illustrate our proposal, let us consider the object models shown
in Fig. 2. These structurally di erent object models have been automatically
generated by using 4 boolean-valued CTs (and a con guration xing attribute
values, links, and lower and upper bounds for the number of objects in a class):
context State inv t w o St a t e s : State . allInstances &gt;size=2
context State inv t h r e e S t a t e s : State . allInstances &gt;size=3
context T r a ce N o d e inv oneTrace : T r ac e N o d e . allInstances &gt;</p>
      <p>select ( tn j tn . src &gt;isEmpty ( ) and tn . trg &gt;notEmpty ) &gt;size=1
context T r a ce N o d e inv t w o Tr a c e s : T r a ce N o d e . allInstances &gt;
select ( tn j tn . src &gt;isEmpty ( ) and tn . trg &gt;notEmpty ) &gt;size=2
In principle, 24 = 16 equivalence classes are possible. However, this number
will not be reached, because, for example, the classifying terms twoStates and
threeStates cannot be true at the same time. Figure 2 shows 4 found solutions.
Essentially, the upper row shows the solutions with 2 states and the lower row
the solutions with 3 states; and the left column displays the solutions having
1 trace and the right column the solutions with 2 traces.</p>
      <p>Another important option in USE is to specify an incomplete object model
with missing attribute values, objects or links, and to ask the USE model
validator to complete the incomplete model into a full model. Fig. 3 shows an example.
In the right side of the upper part, two example traces for two Paper objects
submitted to a Conference together with an incomplete statechart in the left
are shown. In the lower part the result of asking the model validator to complete
the object model is pictured. The model validator has found attribute values
and link-objects for association classes in order to satisfy all model constraints.
Our view is that the full statechart has been automatically deduced from two
example traces and an incomplete statechart description. The price we have to
pay is that we have to present an exhaustive set of invariants. The full models
are available.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Related work</title>
      <p>
        The USE model validator is based on the transformation [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] of UML and OCL
into Kodkod [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Related pproaches rely on foundations like logic programming
and constraint solving [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ], relational logic and Alloy [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], term rewriting [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]
or graph grammars [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. To reason about UML/OCL models, there are di erent
alternatives, for instance, translating them into standard rst-order logic using
theorem provers [
        <xref ref-type="bibr" rid="ref14 ref2 ref3">2,3,14</xref>
        ], or map them to many-sorted rst-order logic [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. There
are (semi-)automatic proving approaches for UML class properties based on
the basis of description logics [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], on the basis of relational logic and pure
Alloy [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] using only a subset of OCL, and focusing on model inconsistencies
with Kodkod [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The approaches in [
        <xref ref-type="bibr" rid="ref17 ref6">6,17</xref>
        ] use metamodels and solvers for
software improvement. A classi cation of model checkers with respect to model
veri cation tasks can be found in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. None of these approaches o ers our options,
i.e. to automatically scroll through several valid object models in one veri cation
task. More details of our approach are given in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and future work</title>
      <p>Exploring the execution space of any non-trivial system is a di cult task. In
this paper we have shown how the tool USE can be employed, in conjunction
with classifying terms, to specify particular validation and veri cation scenarios,
allowing system analysts to look for object models that satisfy certain properties,
or their absence. There are several lines of work that we plan to address next.
First, we would like to validate our proposal with more examples, in order to
gain a better understanding of its advantages and limitations, and to identify
di erent contexts of use in which our approach works well and others in which the
results are not satisfactory (and why). Second, we plan to improve tool support
to further automate all tests, so human intervention is kept to the minimum.
Finally, we need to de ne a systematic approach of de ning classifying terms for
exploring object models using the outlined ideas.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Anastasakis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bordbar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Georg</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ray</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>On Challenges of Model Transformation from UML to Alloy</article-title>
          .
          <source>Software and System Modeling</source>
          <volume>9</volume>
          (
          <issue>1</issue>
          ) (
          <year>2010</year>
          )
          <volume>69</volume>
          {
          <fpage>86</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Beckert</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Keller, U.,
          <string-name>
            <surname>Schmitt</surname>
            ,
            <given-names>P.H.</given-names>
          </string-name>
          :
          <article-title>Translating the object constraint language into rst-order predicate logic</article-title>
          .
          <source>In: Proc. 2nd Veri cation WS</source>
          . (
          <year>2002</year>
          )
          <volume>113</volume>
          {
          <fpage>123</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Brucker</surname>
            ,
            <given-names>A.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wol</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>HOL-OCL: A formal proof environment for UML/OCL</article-title>
          . In Fiadeiro,
          <string-name>
            <given-names>J.L.</given-names>
            ,
            <surname>Inverardi</surname>
          </string-name>
          , P., eds.
          <source>: 11th Int. Conf. FASE. LNCS 4961</source>
          , Springer (
          <year>2008</year>
          )
          <volume>97</volume>
          {
          <fpage>100</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clariso</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Riera</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>UMLtoCSP: A Tool for the Formal Veri cation of UML/OCL Models using Constraint Programming</article-title>
          .
          <source>In: ASE'07</source>
          . (
          <year>2007</year>
          )
          <volume>547</volume>
          {
          <fpage>548</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Cicchetti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruscio</surname>
            ,
            <given-names>D.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eramo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>JTL: A bidirectional and change propagating transformation language</article-title>
          . In Malloy,
          <string-name>
            <given-names>B.A.</given-names>
            ,
            <surname>Staab</surname>
          </string-name>
          , S., van den Brand, M., eds.
          <source>: 3rd Int. Conf. SLE. LNCS 6563</source>
          , Springer (
          <year>2010</year>
          )
          <volume>183</volume>
          {
          <fpage>202</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Cuadrado</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerra</surname>
          </string-name>
          , E.,
          <string-name>
            <surname>de Lara</surname>
          </string-name>
          , J.:
          <article-title>Quick xing ATL model transformations</article-title>
          . In Lethbridge, T., et al.,
          <source>eds.: 18th MoDELS</source>
          , IEEE. (
          <year>2015</year>
          )
          <volume>146</volume>
          {
          <fpage>155</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dania</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clavel</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>OCL2MSFOL: A mapping to many-sorted rst-order logic for e ciently checking the satis ability of OCL constraints</article-title>
          .
          <source>In: Proc. MODELS'16</source>
          . (
          <year>2016</year>
          )
          <volume>65</volume>
          {
          <fpage>75</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ehrig</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , Kuster,
          <string-name>
            <given-names>J.M.</given-names>
            ,
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Generating instance models from meta models</article-title>
          .
          <source>Software and System Modeling</source>
          <volume>8</volume>
          (
          <year>2009</year>
          )
          <volume>479</volume>
          {
          <fpage>500</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Gabmeyer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brosch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seidl</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A Classi cation of Model Checking-Based Veri cation Approaches for Software Models (</article-title>
          <year>2013</year>
          <source>) Proc. 1st VOLT Workshop.</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Buttner,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Richters</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>USE: A UML-based speci cation environment for validating UML and OCL</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>69</volume>
          (
          <year>2007</year>
          )
          <volume>27</volume>
          {
          <fpage>34</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hilken</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Model Validation and Veri cation Options in a Contemporary UML and OCL Analysis Tool</article-title>
          . In Oberweis,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Reussner</surname>
          </string-name>
          , R., eds.:
          <string-name>
            <surname>Modellierung</surname>
          </string-name>
          (MODELLIERUNG'
          <year>2016</year>
          ), GI, LNI
          <volume>254</volume>
          (
          <year>2016</year>
          )
          <volume>203</volume>
          {
          <fpage>218</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Hilken</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Burguen~o,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Vallecillo</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Testing models and model transformations using classifying terms</article-title>
          .
          <source>SoSyM</source>
          (
          <year>2016</year>
          ) http://link.springer. com/article/10.1007%
          <fpage>2Fs10270</fpage>
          -
          <fpage>016</fpage>
          -0568-3.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Kuhlmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>From</surname>
            <given-names>UML</given-names>
          </string-name>
          and
          <article-title>OCL to relational logic and back</article-title>
          .
          <source>In: Model Driven Engineering Languages and Systems. LNCS 7590</source>
          , Springer (
          <year>2012</year>
          )
          <volume>415</volume>
          {
          <fpage>431</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kyas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fecher</surname>
          </string-name>
          , H.,
          <string-name>
            <surname>de Boer</surname>
            ,
            <given-names>F.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jacob</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hooman</surname>
            , J., van der Zwaag,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arons</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kugler</surname>
          </string-name>
          , H.:
          <article-title>Formalizing UML models and OCL constraints in PVS</article-title>
          .
          <source>Electr. Notes Theor. Comput. Sci</source>
          .
          <volume>115</volume>
          (
          <year>2005</year>
          )
          <volume>39</volume>
          {
          <fpage>47</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Queralt</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Artale</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Calvanese</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Teniente</surname>
          </string-name>
          , E.:
          <string-name>
            <surname>OCL-Lite</surname>
          </string-name>
          :
          <article-title>Finite reasoning on UML/OCL conceptual schemas</article-title>
          .
          <source>Data Knowl. Eng</source>
          .
          <volume>73</volume>
          (
          <year>2012</year>
          )
          <volume>1</volume>
          {
          <fpage>22</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Roldan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Duran</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Dynamic Validation of OCL Constraints with mOdCL</article-title>
          .
          <source>ECEASST</source>
          <volume>44</volume>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Steimann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hagemann</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ulke</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Computing repair alternatives for malformed programs using constraint attribute grammars</article-title>
          .
          <source>In: OOPSLA'16@SPLASH</source>
          . (
          <year>2016</year>
          )
          <volume>711</volume>
          {
          <fpage>730</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Straeten</surname>
            ,
            <given-names>R.V.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puissant</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Assessing the Kodkod Model Finder for Resolving Model Inconsistencies</article-title>
          . In: ECMFA. (
          <year>2011</year>
          )
          <volume>69</volume>
          {
          <fpage>84</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Torlak</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jackson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Kodkod: A relational model nder</article-title>
          . In Grumberg,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Huth</surname>
          </string-name>
          , M., eds.
          <source>: 13th Int. Conf. TACAS. LNCS 4424</source>
          , Springer (
          <year>2007</year>
          )
          <volume>632</volume>
          {
          <fpage>647</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>