<!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>Bridging Engineering and Formal Modeling: WebGME and Formula Integration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tamas Kecskes</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of EECS, Vanderbilt University</institution>
          ,
          <addr-line>Nashville, TN</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Emergence of heterogeneous engineering domains that cross disciplinary boundaries lead to design flows that span multiple Domain Specific Modeling Languages (DSML). Analyzing system level behavior and pursuing cross-domain trade-offs requires the semantic integration of modeling domains. Driven by the specific needs of and our experience with design automation tool suites for Cyber-Physical Systems (CPS), this paper focuses on using model integration languages as a flexible way for modeling cross-domain interactions. The primary challenge in specifying and supporting model integration languages is that both rapid evolvability and semantic precision are required. This challenge is mapped into a metalevel model integration problem, the integration of a metamodeling language used for specifying DSMLs and configuring the underlying meta-programmable modeling tool WebGME, and a formal framework that uses algebraic data types and Constraint Logic Programming - Formula - devoted to formally specifying the semantics of DSMLs and model transformations. The primary contribution of the paper is the deep semantic integration of WebGME and Formula that keep the engineering view of an evolving model integration language and its formal representation tightly synchronized.</p>
      </abstract>
      <kwd-group>
        <kwd>WebGME</kwd>
        <kwd>Formula</kwd>
        <kwd>DSML</kwd>
        <kwd>Model Transformation</kwd>
        <kwd>Constraint Programming</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Modeling tools are key enablers of model-driven
engineering. They are responsible for offering intuitive
engineering interface (usually graphical) for model developers and
they provide a range of services supporting safe model
engineering practices including composing/decomposing,
visualizing, modifying, checking well-formedness,
versioning, and storing large models. Adaption of model-driven
methods in new cross-disciplinary fields such as
CyberPhysical Systems (CPS) challenges modeling tool
developers with heterogeneity: design flows require the integration
of multi-physics, multi-abstraction and multi-fidelity
models expressed in a rich set of domain-specific modeling
languages (DSML). Since design flows and the tools
involved in their implementation change, the suite of relevant
modeling languages is not static; they evolve continuously.
Our approach to manage model heterogeneity has been
the introduction of model integration languages [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] that
are restricted to modeling language constructs limited to
modeling the interactions among different and changing
modeling domains. The cost of introducing easy-to-evolve
model integration languages - that are themselves DSMLs
is the requirement for explicit representation of their formal
semantics, which is necessary to preserve the semantic
integrity of design flows [2].
      </p>
      <p>
        In our previous work, developing the OpenMETA
design automation tool suite for DARPA’s Adaptive Vehicle
Make program [
        <xref ref-type="bibr" rid="ref4">3</xref>
        ], we addressed these needs by pursuing
and coordinating two parallel paths in model integration.
As a first step, we specified and continuously evolved the
CyPhyML model integration language focusing on the
integrated OpenMETA design flow targeting ground vehicle
design [
        <xref ref-type="bibr" rid="ref4">3</xref>
        ]. Since the OpenMETA design flow extended
to multiple physical and cyber domains, CyPhyML itself
proved to be a complex DSML requiring the use of our
meta-programmable modeling tool, WebGME[4]. To satisfy
the need for representing and evolving the formal
semantics of CyPhyML, we developed the OpenMETA Semantic
Backplane[2]. It provided a formal representation of the
interacting physical and cyber domains. Although the
twopronged approach satisfied the basic needs, the challenge
of synchronizing the CyPhyML and Formula models, and
meta-models decreased the benefits of the Semantic
Backplane.
      </p>
      <p>In this paper we discuss our recent work on
establishing a deep integration of WebGME and Formula. Deep
integration means keeping the two representations - the
CyPhyML meta-models and models in WebGME and their
FORMULA equivalent - fully synchronized and providing
seamless access to complementary services of the tools.
WebGME services include [4]:
meta-programmability with prototypal inheritance
that allows smooth language integration and
evolution,
graphical concrete syntax that is highly
customizable,
multiple, well defined APIs for model interpretation
and tool integration,
version control with branch support to allow
modeling in large, and
collaborative, distributed modeling via
webinterface.</p>
      <p>
        FORMULA services include:
formal representation of structural semantics of
modeling languages [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] as strongly-typed,
openWorld logic programs (OLP) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] offering
specifications that are highly declarative and executable,
they can express static, dynamic, and transformation
semantics of DSMLs,
program synthesis and automated reasoning enabled
by the symbolic execution of logic programs into
quantifier-free sub-problems, which are dispatched
to the state-of-the-art SMT solver Z3 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],
modular reuse of DSMLs via the composition of
OLPs in a strong category theoretic sense [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>The primary contribution of this paper is the semantic
integration between the tools, detailing the relationship
between WebGME meta-models and Formula domain
specifications. The following sections presents the integrated
use of WebGME and Formula services using constraint
specification as example.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Modeling in WebGME</title>
      <p>WebGME[4] is the next generation of Vanderbilt’s
Generic Modeling Environment(GME) [9] providing many
newly designed features such as web-based deployment,
version control, real-time collaborative editing and
prototypical inheritance to add more scalability and extensibility for
large, real world applications. WebGME is a response to the
limitations of GME uncovered by the widespread application
of our model-integrated computing (MIC) tools.</p>
      <p>Although the WebGME advanced the modeling
capabilities of GME and provided a highly customizable and
meta-programmable framework; it still lacks an expressive
and easy-to-use platform for well-formedness checking. In
WebGME, the models could be checked with script defined
in JavaScript language, but for model-developers and
engineers its use is cumbersome and lacks expressiveness which
makes it hard to maintain. Elimination of this gap was one
of the key motivations for the deeper integration between
WebGME and Formula.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Formal Specification guages in Formula of</title>
    </sec>
    <sec id="sec-4">
      <title>Modeling Lan</title>
      <p>
        Microsoft Formula[
        <xref ref-type="bibr" rid="ref9">10</xref>
        ] is a constraint logic
programming tool developed by Jackson at Vanderbilt and later
at Microsoft Research [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Formula is based on algebraic
data types and first-order logic with fixed-point semantics.
It has found many application in Model-Based Engineering
such as reasoning about meta-modeling [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ] or finding
specification errors by constraints [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ].
      </p>
      <p>
        The theoretical foundation for Formula reasoning is
based on Non-recursive Horn Domain (a well-known
decidable subset of first-order logic) to reason about
metamodel as mentioned in a previous paper[
        <xref ref-type="bibr" rid="ref12">13</xref>
        ]. Formula is also
capable of generating automatic proofs by the help of the
state-of-the-art satisfiability modulo theories (SMT) solver
Z3 [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ].
      </p>
      <p>In summary, the Formula tool complements WebGME
with a range of essential services: verifying if domain
constraints are consistent (the domain is not empty), completing
partially defined models that are part of the domain,
checking well-formedness of models, formally specifying (and
executing) model transformations, and formally composing
domains.</p>
    </sec>
    <sec id="sec-5">
      <title>4. Integration Architecture</title>
      <p>To provide a seamless and tight integration that
combines the modeling power of WebGME with the reasoning
engine of Formula, we have created an integration
architecture presented in Figure 1. As it is shown, the WebGME
client interface has a single communication channel towards
the server, that helps in providing a unified platform where
the user is able to harness the capabilities of both tools.</p>
      <p>To keep the WebGME project and its Formula
representation synchronized, the system uses the webhook feature of
WebGME. It generates a notification towards a configured
machine - in our case the Formula machine - at every event
of interest. For every new commit in the WebGME model
store, the Formula machine will receive a request to make
the model translation and constraint evaluation. After
finishing, it will store the results in a separate database so they
can be queried later as well. With the help of an additional
middleware, the Formula editor is capable of continuously
querying the results from the server and provide it to the
user - whether it is the evaluation of constraints or some
syntax error.</p>
    </sec>
    <sec id="sec-6">
      <title>5. Semantic Integration and Formula</title>
    </sec>
    <sec id="sec-7">
      <title>Between</title>
    </sec>
    <sec id="sec-8">
      <title>WebGME</title>
      <p>The cornerstone of WebGME and Formula integration
is the transformation of WebGME metamodels and models
into Formula domain and instance representations. We
explain this translation in two steps. First, we discuss a simple
example to demonstrate the two alternative representations,
and second we provide a simplified version of the model
transformation rules.
(a) FSM Meta-model in WebGME
(b) Up-Down Counter model in WebGME
domain FiniteStateMachines {</p>
      <p>Transition ::= new (id: String,
parent: any FSMDiagramTYPE + {NULL},
attributes: any Attr__Transition,
pointers: any Ptr__Transition).</p>
      <p>Attr__Transition ::= new (guard: String,
name: String,
operation: String).</p>
      <p>Ptr__Transition ::= new (base: any FCOTYPE + {NULL},
dst: any StateBaseTYPE + {NULL},
src: any StateBaseTYPE + {NULL}).</p>
      <p>Initial ::= new (id: String,
parent: any FSMDiagramTYPE + {NULL},
attributes: any Attr__Initial,
pointers: any Ptr__Initial).</p>
      <p>Attr__Initial ::= new (name: String).</p>
      <p>Ptr__Initial ::= new (base: any FCOTYPE + {NULL}).</p>
      <p>StateBase ::= new (id: String,
parent: any FSMDiagramTYPE + {NULL},
attributes: any Attr__StateBase,
pointers: any Ptr__StateBase).</p>
      <p>Attr__StateBase ::= new (name: String).</p>
      <p>Ptr__StateBase ::= new (base: any FCOTYPE + {NULL}).</p>
      <p>State ::= new (id: String,
parent: any FSMDiagramTYPE + {NULL},
attributes: any Attr__State,
pointers: any Ptr__State).</p>
      <p>Attr__State ::= new (name: String).</p>
      <p>Ptr__State ::= new (base: any FCOTYPE + {NULL}).</p>
      <p>End ::= new (id: String,
parent: any FSMDiagramTYPE + {NULL},
attributes: any Attr__End,
pointers: any Ptr__End).</p>
      <p>Attr__End ::= new (name: String).</p>
      <p>Ptr__End ::= new (base: any FCOTYPE + {NULL}).
}</p>
      <p>FSMDiagram ::= new (id: String,
parent: any {NULL},
attributes: any Attr__FSMDiagram,
pointers: any Ptr__FSMDiagram).</p>
      <p>Attr__FSMDiagram ::= new (name: String).</p>
      <p>Ptr__FSMDiagram ::=
new (base: any FCOTYPE + {NULL}).</p>
      <p>(c) Domain in Formula
model M of FiniteStateMachines {</p>
      <p>TenMachine_attr is Attr__FSMDiagram("TenMachine").</p>
      <p>TenMachine_ptr is Ptr__FSMDiagram(NULL).</p>
      <p>TenMachine is FSMDiagram("TenMachine",
NULL, TenMachine_attr, TenMachine_ptr).</p>
      <p>Initial_attr is Attr_Initial("Initial").</p>
      <p>Initial_ptr is Ptr__Initial(NULL).</p>
      <p>Initial is Initial("Initial",
TenMachine, Initial_attr, Initial_ptr).</p>
      <p>End_attr is Attr_End("End").</p>
      <p>End_ptr is Ptr__End(NULL).</p>
      <p>End is End("End", TenMachine, End_attr, End_ptr).</p>
      <p>State_One_attr is Attr__State("State One").</p>
      <p>State_One_ptr is Ptr__State(NULL).</p>
      <p>State_One is State("State One",
TenMachine, State_One_attr, State_One_ptr).</p>
      <p>State_Two_attr is Attr__State("State Two").</p>
      <p>State_Two_ptr is Ptr__State(NULL).</p>
      <p>State_Two is State("State Two",
TenMachine, State_Two_attr, State_Two_ptr).</p>
      <p>Tr_I_to_E_attr is
Attr__Transition("x=10", "Transition", "").</p>
      <p>Tr_I_to_E_ptr is Ptr__Transition(NULL, Initial, End).</p>
      <p>Tr_I_to_E is Transition("Tr_I_to_E",
TenMachine, Tr_I_to_E_attr, Tr_I_to_E_ptr).</p>
      <p>Tr_I_to_1_attr is
Attr__Transition("x&gt;10", "Transition", "x:=x-1").</p>
      <p>Tr_I_to_1_ptr is Ptr__Transition(NULL, Initial, Sate_One).
Tr_I_to_1 is Transition("Tr_I_to_1",
TenMachine, Tr_I_to_1_attr, Tr_I_to_1_ptr).</p>
      <p>Tr_I_to_2_attr is
Attr__Transition("x&lt;10", "Transition", "x:=x+1").</p>
      <p>Tr_I_to_2_ptr is Ptr__Transition(NULL, Initial, Sate_Two).
Tr_I_to_2 is Transition("Tr_I_to_2",</p>
      <p>TenMachine, Tr_I_to_2_attr, Tr_I_to_2_ptr).
}</p>
      <p>Tr_1_to_1_attr is
Attr__Transition("x&gt;10", "Transition", "x:=x-1").</p>
      <p>Tr_1_to_1_ptr is Ptr__Transition(NULL, State_One, Sate_One).
Tr_1_to_1 is Transition("Tr_1_to_1",
TenMachine, Tr_1_to_1_attr, Tr_1_to_1_ptr).</p>
      <p>Tr_1_to_E_attr is Attr__Transition("x=10", "Transition", "").
Tr_1_to_E_ptr is Ptr__Transition(NULL, State_One, End).
Tr_1_to_E is Transition("Tr_1_to_E",
TenMachine, Tr_1_to_E_attr, Tr_1_to_E_ptr).</p>
      <p>Tr_2_to_2_attr is
Attr__Transition("x&lt;10", "Transition", "x:=x+1").</p>
      <p>Tr_2_to_2_ptr is Ptr__Transition(NULL, State_Two, Sate_Two).
Tr_2_to_2 is Transition("Tr_2_to_2",
TenMachine, Tr_2_to_2_attr, Tr_2_to_2_ptr).</p>
      <p>Tr_2_to_E_attr is Attr__Transition("x=10", "Transition", "").
Tr_2_to_E_ptr is Ptr__Transition(NULL, State_Two, End).
Tr_2_to_E is Transition("Tr_2_to_E",
TenMachine, Tr_2_to_E_attr, Tr_2_to_E_ptr).</p>
      <p>(d) Model in Formula
5.1. Modeling Example</p>
      <p>Finite State Machine (FSM) is used to demonstrate how
WebGME meta-models are represented as Formula domains.
The FSM modeling language defined as WebGME
metamodel is shown in Figure 2a. The meta-modeling language
(WebGME META) adopts a UML-like concrete syntax,
which is detailed in [4]. A specific FSM instance using
WebGME graphical interface is shown in Figure 2b. The
concrete syntax is configurable as expected from
metaprogrammable modeling tools. The example shows a simple
up-down counter that - given any x integer input value and
an initial state - will check the value of input, if its value
is equal to ten, a transition is triggered to move from initial
state to end state denoting the goal is reached, otherwise
it will jump to either State One or State Two and
keep incrementing or decrementing x until it reaches ten and
transfer to end state. The equivalent Formula representation
are shown in Figures 2c and 2d.</p>
      <p>The definition on Figure 2a, still allows the creation of
malformed models. To avoid it, we need to introduce domain
constraints - so the user can evade flaws like having states
with the same name or not having an initial state at all.
From tool design point of view, Formula has its clear
advantages by allowing consistency check, model synthesis, and
well-formedness checking. The seamless use of Formula’s
constraint language is enabled by the tight integration of the
two tools and will be described in Section 6.</p>
      <p>It is important to note that we leave out from this
discussion the formal specification of behavioral semantics.
Formula supports this by its constructs for specifying model
transformations. The various ways to use Formula for
specifying behavioral semantics in operational or denotation style
is discussed in [2].
5.2. Generation of Formula Domains and Models</p>
      <p>A WebGME plugin, GenFORMULA makes the
translation by using the Core API functions of WebGME. It
creates a Formula domain by traversing the meta-concepts
of the project. By following the rules presented in Figure 3,
every Class definition is translated into three constructors
in Formula. Attr__Class is a tuple for the available
attributes, Ptr__Class couples the pointer definitions, and
Class(id,parent,attributes,pointers) tuple
combines the other two and adds the containment
representation with the parent field. The plugin also
defines ClassTYPE set, that captures the inheritance among
meta-concepts of WebGME. Inheritance among models
and model elements are kept in the base pointer
definition. Finally, it specifies some helper constructs GMENode,
GMEContainment and GMEInheritance to represent
all nodes, their containment relation and inheritance relation.
The user defined constraints are then added without
modification. This step finalizes the Formula domain. Finally the
procedure traverses the whole containment hierarchy in the
WebGME project. For every node, it gathers the necessary
values with the help of the Core API, and translate them
into instances in Formula.</p>
      <p>The resulting formula file is then processed with the help
of the Formula engine to get the constraint evaluations and
syntax check. Being automated, the result is available after
every change, so the user will be notified at the place of
error.</p>
    </sec>
    <sec id="sec-9">
      <title>6. Constraints</title>
      <p>The constraints play important role in specifying the
structural semantics of modeling languages. They restrict
structural characteristics, properties and relations in models
such that all instances of a modeling domain are
semantically well-formed. However, the built-in constraints in
WebGME’s meta-modeling language are quite limited and
do not support the specification and enforcement of complex
constraints. The only available solution is the traversal of
models using JavaScript plugin and check if they satisfy
the constraints. This method is error-prone, do not provide
declarative representation for the constraints to reason about
their properties (e.g. consistency) and make the use of
advanced service such as model synthesis impossible.
Integration of WebGME with Formula eliminates these drawbacks.
6.1. Constraint Example for FSM Domain</p>
      <p>In our examples shown in Figure 4, we collected a
few important constraints regarding the FSM domain. These
well-formedness rules are complex and cannot be expressed
with the graphical suite of meta-modeling of WebGME.</p>
      <p>For example, it is required in any FSM, that all
transitions should have valid states as endpoints. The pointer
concept of WebGME doesn’t specify strict requirement
regarding the target so it can be NULL - as in many applications
that would be perfectly fine. To eliminate this gap, we define
the noSourceTr(t) and noDestinationTr(t) rules
for every transition. Then we combine them to get the
danglingTr(t) rule which can be used to finally get
global NoDangling constraint. Overall, many complicated
constraints can be easily written in logic programming style
Formula Language and evaluated in Formula engine.
6.2. Benefits of Using Formula Constraints in
WebGME</p>
      <p>
        Similar works can be found that enable adding visual
or textual constraints to general modeling. For example,
the Object Constraint Language (OCL) [
        <xref ref-type="bibr" rid="ref14">15</xref>
        ], Semantics Of
Business Vocabulary And Rules (SBVR) and Extensible
Visual Constraint Language (EVCL) [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ] is widely used
in the UML context. Constraint Languages like OCL have
the expressiveness to describe complex constraints but they
lack model transformation and model completion features
that are integral to our needs. Other tools like EVCL [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ]
generate actual JavaScript code to check visually defined
constraints. Consequently, it’s not flexible enough and can
noSourceTr ::= new(t:TransitionTYPE).
noSourceTr(t) :- t is TransitionTYPE,k = t.parent,
k is FSMDiagramTYPE, t.pointers.src = NULL.
noDestinationTr ::= new(t:TransitionTYPE).
noDestinationTr(t) :- t is TransitionTYPE,k = t.parent,
k is FSMDiagramTYPE, t.pointers.dst = NULL.
danglingTr ::= new(t:TransitionTYPE).
danglingTr(t) :- noSourceTr(t) ; noDestinationTr(t).
HasDangling :- t is TransitionTYPE, danglingTr(t).
NoDangling :- no HasDangling.
      </p>
      <p>NotExactlyOneInitState :- p is FSMDiagramTYPE,
t is FSMDiagramTYPE, p.pointers.base = t,
count({s | s is Initial, s.parent = p}) != 1.</p>
      <p>ExactlyOneInitState :- no NotExactlyOneInitState.
NotAtLeastOneEndState :- p is FSMDiagram,</p>
      <p>p.parent = NULL,
k = count({s | s is End, s.parent = p}), k = 0.
AtLeastOneEndState :- no NotAtLeastOneEndState.
ExistsDuplicateName :- s1 is StateBaseTYPE,
s2 is StateBaseTYPE,
s1 != s2, s1.parent = s2.parent,
s1.attributes.name = s2.attributes.name.</p>
      <p>UniqueName :- no ExistsDuplicateName.
reachable ::= new(x: StateBaseTYPE, y: StateBaseTYPE).
reachable(x,y) :- x is StateBaseTYPE, y is StateBaseTYPE,
t is TransitionTYPE, x.parent = y.parent,
x.parent = t.parent,
t.pointers.src = x, t.pointers.dst = y.
reachable(x,y) :- reachable(y,x).
reachable(x,z) :- reachable(x,y), reachable(y,z).
DisjointDiagram :- f is FSMDiagramTYPE,</p>
      <p>x is StateBaseTYPE,
y is StateBaseTYPE, x.parent = f, y.parent = f,
x != y, no reachable(x,y).</p>
      <p>NoDisjointDiagram :- no DisjointDiagram.
be cumbersome to specify large complex set of constraints
with visual blocks. Formula stands in the middle of these
two categories of constraint specification methods by using
declarative constraint specification style, but also providing
a reasoning engine to automatically derive the result by
repeatedly applying rules to a set of initial constants.
6.3. Constraint Editor in WebGME Visualizer</p>
      <p>In WebGME environment, a visualizer for code editing
is implemented for users to write constraints in Formula
syntax. The embedded constraint editor is also used to
render evaluation results directly in the code by changing
the background color of the head of the constraint based on
the result as shown in Figure 5.</p>
      <p>Furthermore, the editor also provides syntax
highlighting and syntax check to help users come up with correct
constraints. Whenever there is a syntax error in the text, an
exclamation mark - left of the faulty line - will be shown and
by hovering over it the user can see the source of the error.
Also, the user can turn on the Formula view, that will result
in a split view shown in Figure 5, where the upper portion
with white background shows the Formula translation of
the Language domain to help the user as those definitions
should make the foundation of the constraints.</p>
    </sec>
    <sec id="sec-10">
      <title>7. Conclusion and Future Work</title>
      <p>This paper discusses the integration of WebGME, a
meta-programmable modeling tool with Formula, a formal
framework and tool for specifying domain specific modeling
languages. The purpose of the integration has been the
construction of an advanced modeling tool that provides
extensive model engineering services, such as graphical
modeling interface, scalable model repository, web-based
implementation architecture and concurrent modeling as
well as rigorous formal foundations and tool for specifying
modeling language semantics, model transformation
semantics, consistency checking, and model synthesis. Seamless
integration of these services are enablers for the safe use of
domain specific modeling language (DSML) technologies
in application domains, where heterogeneous and changing
modeling domains need to be integrated and evolved.</p>
      <p>As described in the paper, the current level of integration
focused on automated and fully synchronized generation
of Formula representation from WebGME models. In the
next step we will address the opposite direction: the
autogeneration of WebGME plugins from Formula specifications
for constraint checking and model transformation. The
primary goal is to preserve the advantages of the
Formulabased declarative specification of model transformations,
such as conciseness, semantic precision and preservation of
domain invariants after the transformation - but without
losing the efficiency of an imperative language implementation,
which is particularly important for large models.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Bapty</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Koutsoukos</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E</given-names>
            .
            <surname>Jackson</surname>
          </string-name>
          , “
          <article-title>Design tool chain for cyber-physical systems: Lessons learned</article-title>
          ,”
          <source>in Proceedings of DAC15. IEEE</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Simko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Levendovszky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <surname>T</surname>
          </string-name>
          . bapty, P. Joe, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          , “
          <article-title>Foundation for model integration: Semantic backplane</article-title>
          ,”
          <source>in Proceedings of the ASME 2012 IDETC/CIE</source>
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>ASME</surname>
          </string-name>
          ,
          <year>2012</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Bapty</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Howard</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E</given-names>
            .
            <surname>Jackson</surname>
          </string-name>
          ,
          <article-title>OpenMETA: A Model-</article-title>
          and
          <string-name>
            <surname>Component-Based Design</surname>
          </string-name>
          <article-title>Tool Chain for Cyber Physical Systems</article-title>
          . Berlin, Heidelberg: Springer Berlin Heidelberg,
          <year>2014</year>
          , pp.
          <fpage>235</fpage>
          -
          <lpage>248</lpage>
          . [Online]. Available: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -54848-2 16
          <string-name>
            <given-names>M.</given-names>
            <surname>Maro</surname>
          </string-name>
          ´ti, T. Kecske´s, R. Kereske´nyi,
          <string-name>
            <given-names>B.</given-names>
            <surname>Broll</surname>
          </string-name>
          , P. Vo¨lgyesi, L. Jura´cz, T. Levendovszky, and
          <string-name>
            <surname>A</surname>
          </string-name>
          ´ . Le´deczi, “
          <article-title>Next generation (meta) modeling: Web-and cloud-based collaborative tool infrastructure</article-title>
          .”
          <source>in MPM@ MoDELS</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>60</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Jackson</surname>
          </string-name>
          and
          <string-name>
            <surname>J</surname>
          </string-name>
          . Sztipanovits, “
          <article-title>Formalizing the structural semantics of domain-specific modeling languages</article-title>
          ,
          <source>” Software &amp; Systems Modeling</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>451</fpage>
          -
          <lpage>478</lpage>
          ,
          <year>Sep 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>E.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schulte</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bjorner</surname>
          </string-name>
          , “
          <article-title>Openworld logic programs: A new foundation for formal specifications</article-title>
          ,
          <source>” Tech. Rep</source>
          ., May
          <year>2013</year>
          . [Online]. Available: https://www.microsoft.com/en-us/research/publication/openworld
          <article-title>-logic-programs-a-new-foundation-for-formal-specifications/</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>De Moura</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bjørner</surname>
          </string-name>
          , “
          <article-title>Satisfiability modulo theories: Introduction and applications</article-title>
          ,” Commun. ACM, vol.
          <volume>54</volume>
          , no.
          <issue>9</issue>
          , pp.
          <fpage>69</fpage>
          -
          <lpage>77</lpage>
          , Sep.
          <year>2011</year>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1995376.1995394
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          , “
          <article-title>A module system for domain-specific languages,” CoRR</article-title>
          , vol.
          <source>abs/1405.4041</source>
          ,
          <year>2014</year>
          . [Online]. Available: http://arxiv.org/abs/1405.4041
          <string-name>
            <given-names>A.</given-names>
            <surname>Ledeczi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Maroti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bakay</surname>
          </string-name>
          , G. Karsai,
          <string-name>
            <given-names>J.</given-names>
            <surname>Garrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Thomason</surname>
          </string-name>
          , G. Nordstrom,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sprinkle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Volgyesi</surname>
          </string-name>
          , “
          <article-title>The generic modeling environment</article-title>
          ,” in Workshop on Intelligent Signal Processing, Budapest, Hungary, vol.
          <volume>17</volume>
          ,
          <year>2001</year>
          , p.
          <fpage>1</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Schulte</surname>
          </string-name>
          , “
          <article-title>Formula 2.0: A language for formal specifications,” in Unifying Theories of Programming and Formal Engineering Methods</article-title>
          . Springer,
          <year>2013</year>
          , pp.
          <fpage>156</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Levendovszky</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Balasubramanian</surname>
          </string-name>
          , “
          <article-title>Reasoning about metamodeling with formal specifications and automatic proofs,”</article-title>
          <source>in International Conference on Model Driven Engineering Languages and Systems</source>
          . Springer,
          <year>2011</year>
          , pp.
          <fpage>653</fpage>
          -
          <lpage>667</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schulte</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bjørner</surname>
          </string-name>
          , “
          <article-title>Detecting specification errors in declarative languages with constraints,” in Model Driven Engineering Languages and Systems -</article-title>
          15th International Conference, MODELS 2012, Innsbruck, Austria,
          <source>September 30-October 5</source>
          ,
          <year>2012</year>
          . Proceedings,
          <year>2012</year>
          , pp.
          <fpage>399</fpage>
          -
          <lpage>414</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Jackson</surname>
          </string-name>
          and
          <string-name>
            <surname>J</surname>
          </string-name>
          . Sztipanovits, “
          <article-title>Constructive techniques for metaand model-level reasoning</article-title>
          ,” in MoDELS, vol.
          <volume>7</volume>
          . Springer,
          <year>2007</year>
          , pp.
          <fpage>405</fpage>
          -
          <lpage>419</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [14] L. de Moura and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bjørner</surname>
          </string-name>
          ,
          <source>Z3: An Efficient SMT Solver</source>
          . Berlin, Heidelberg: Springer Berlin Heidelberg,
          <year>2008</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Richters</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , “
          <article-title>On formalizing the uml object constraint language ocl</article-title>
          ,” in International Conference on Conceptual Modeling. Springer,
          <year>1998</year>
          , pp.
          <fpage>449</fpage>
          -
          <lpage>464</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.</given-names>
            <surname>Broll</surname>
          </string-name>
          and
          <string-name>
            <surname>A</surname>
          </string-name>
          ´ . Le´deczi, “
          <article-title>Extensible visual constraint language</article-title>
          ,”
          <source>in Proceedings of the Workshop on Domain-Specific Modeling. ACM</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>63</fpage>
          -
          <lpage>70</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>