<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Graphical Languages for Functional Reactive Modeling based on Petri nets</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">David</forename><surname>Mosteller</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Michael</forename><surname>Haustermann</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Leonie</forename><surname>Dreschler-Fischer</surname></persName>
						</author>
						<author>
							<affiliation key="aff0">
								<orgName type="department">Faculty of Mathematics, Informatics and Natural Sciences</orgName>
								<orgName type="institution">University of Hamburg</orgName>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff1">
								<orgName type="department">Department of Informatics</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Graphical Languages for Functional Reactive Modeling based on Petri nets</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">F94E707AA7768D3E53FD47F5D2582A1E</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-23T23:13+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Metamodeling</term>
					<term>Petri nets</term>
					<term>Reference Nets</term>
					<term>Functional Programming</term>
					<term>Reactive Programming</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The ideas of functional programming have become well adopted by various fields of information science due to their useful properties regarding their application to nowadays complex and heterogeneous IT environments. The graphical modeling tools that support us in keeping up with mentioned complex environments often lack the functional perspective, especially when it comes to formal operational semantics. The Rmt approach (Renew Meta-Modeling and Transformation) provides a conceptual framework for the development of domain specific modeling languages with transformational semantics based on mappings to Petri net components. Petri nets provide a dynamic perspective of systems based on states and state transitions. With the Rmt approach this perspective is leveraged to the abstract perspective of domain specific modeling languages. In this contribution Petri net components are developed that capture functional properties for the specification of domain specific modeling languages using operational semantics. The benefits of this approach are the means to develop graphical formalisms utilizing formal operational semantics and data processing by using a functional abstraction.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>A popular perspective in the recent past has been the notion of functional reactive systems. With the emergence of ubiquitous systems and the Internet of Things (IOT) we are surrounded by software systems that constantly react to events in our environment. Petri nets are very well suited to model such types of applications as they share many characteristics with the functional reactive paradigm. They support synchronous as well as asynchronous message passing, have a precise notion of locality and they are inherently concurrent. Although they are state-based in nature, they do support taking a functional perspective.</p><p>In this contribution we provide a conceptual basis to develop executable graphical languages for modeling reactive systems based on functional system decomposition. As a result of this contribution, we provide sophisticated net components that apply the functional perspective. Our novel approach enables the application of known concepts of functional programming languages such as higher-order functions and recursion by utilizing the nets-within-nets paradigm to ensure the referential transparency. The basis of this work is provided by the formalism of Reference Nets <ref type="bibr" target="#b9">[10]</ref>, a variant of high-level Petri nets, which will be introduced in Section 2. We will use this formalism to demonstrate its usefulness for modeling functional reactive systems and complex data structures in Section 3. Once this is achieved we can turn to the development of abstract (domain specific) modeling languages (DSML) that are more useful for end users by using the Rmt approach (Renew Meta-Modeling and Transformation approach, <ref type="bibr" target="#b12">[13]</ref>) in Section 4. An example of such a DSML suited for modeling a home automation scenario will be presented in Section 5. Section 6 presents a comparison of our approach with related work before we summarize our results in the conclusion (Section 7).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Reference Nets</head><p>The Reference Net formalism is a high-level Petri net formalism with support for modeling complex data structures, remote synchronization and Java integration. Some of the core features of Reference Nets will be presented in the following as they are relevant for this contribution. The Java features will not be discussed in detail as they are of minor interest in this context. A thorough introduction to Reference Nets with Java integration is in the Renew manual <ref type="bibr" target="#b10">[11]</ref>. Renew provides full support for modeling and execution of Reference Nets and other modeling languages. An example of the application to software engineering can be found in the latest research paper on Renew <ref type="bibr" target="#b1">[2]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 1: Using collections in Reference Nets</head><p>With high-level Petri nets, data in the form of colors is unified using unification expressions on the transitions with regard to the variable bindings on the edges. Reference Nets are not the only high-level Petri net formalism with support for collection types, however, Figure <ref type="figure">1</ref> shows an example of how they are realized there. On the left side the variable c is calculated from the inputs a and b and all of the three variables are outputted in a tuple to the place on the right side. Tuples can be hierarchically nested to perform complex operations on them by the means of unification. Lists, as depicted in Figure <ref type="figure">1</ref> on the right, are even more powerful as they permit iterative or recursive processing. In fact, in the depicted example the transition may fire three times, each time computing a new value for variable c from its head element (h) and variable b, which is only read and not removed by using a test arc.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 2: Synchronous channels of Reference Nets</head><p>Synchronous channels, as exemplarily depicted in Figure <ref type="figure">2</ref>, control the firing of multiple transitions as one synchronized event. A synchronous channel consists of a pair of downlink (caller) and uplink (callee), so the reference must be known on one side of the channel. They may have arguments to transport information similar to the call of a function, but they have a slightly different notion as the unification of arguments enables a bidirectional exchange of data. In the depicted example the downlink (left side) calls the right side (uplink) in the local net instance (this). The first argument (m) on the downlink can be unified with the String ("match") on the uplink. The second argument (b) receives its actual parameter from the right side and the calculation of variable c is performed on the downlink transition on the left side before it flows through the channel to the uplink. Figure <ref type="figure">3</ref>: Dynamic hierarchies: nets-within-nets <ref type="bibr" target="#b18">[19]</ref> Clearly, the expressiveness of synchronous channels is quite powerful. However, they unfold their real potential in combination with dynamic hierarchies and the nets-within-nets paradigm <ref type="bibr" target="#b18">[19]</ref>. Using the new syntax shown in the up-most part of Figure <ref type="figure">3</ref> Reference Nets can create instances of other net patterns. This enables dynamic hierarchies up to an arbitrary level of nesting. The depicted example is restricted to a level of two and models a message sending scenario. It shows a system of three components. In the center is a system net, which manages the instances of senders (left) and receivers (right). The latter communicate through the synchronous channels (send and receive) of the system net. While this configuration models a small application scenario, the next section goes a step further and demonstrates how Reference Net systems may be applied to model a more comprehensive application. Recall the net on the left side of Figure <ref type="figure" target="#fig_0">4</ref>, which we have discussed in the previous section. It may be considered as a function that computes an output from a number of inputs. It even pertains functional key characteristics, like referential transparency and immutability of objects. However, we already know that this is only half of the truth, so we must restrict ourselves to pertain these properties, which we will consider in the following. Synchronous channels provide us with the means to explicitly model side effects and control their impact on the computation (cf. right side of Figure <ref type="figure" target="#fig_0">4</ref>). If we wish the data passed along the synchronous channel to be immutable, we simply design our data structure to allow read access only. The simple Reference Net model in Figure <ref type="figure" target="#fig_1">5</ref> implements a key-value pair data structure comparable to JSON or other similar data types. It is created by calling the new channel with a list as argument containing a type identifier as head and a list of key-value pairs as tail. It uses a flexible arc (double arrow) we have not introduced up to now, which "unpacks" all of the key-value pairs to the output place. From there the individual values can be queried through the get-channel but due to the test arc, read only access is permitted. An example of its usage will be demonstrated shortly. In order to form a reactive system it must gain the ability to react upon events that are triggered by its environment. The example of sender and receiver from Figure <ref type="figure">3</ref> in Section 2 contained patterns of this behavior. It has been revisited in Figure <ref type="figure" target="#fig_2">6</ref> and extended by an event passing mechanism. The system component in the center remains mainly the same, only the listener is now registered with the observable to listen for occurring events. The observable stores the event listener together with the respective event type. As a first step in the cyclic process an instance of the key-value data net is created with a new event from the pattern at the leftmost inscription. It contains a type identifier ("event"), a timestamp (600) and a message ("Hello"). Each time this event occurs the listener is notified by the synchronous transition (listen). The actual reactive system is modeled as depicted by the rightmost part (event listener). All it does is store the message text to the rightmost place. Note that multiple events can be processed concurrently at a time by the event listener.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Functional Reactive Systems</head><p>When nets are interpreted as functions, the nets-within-nets paradigm with the possibility to instantiate new nets enables the creation of higher-order functions. Figure <ref type="figure">7</ref> shows an example of a higher-order function implemented as a Reference Net. The left side shows a net that maps integer values to colors using the net on the right side. The creation of a new instance of the colorforcode net ensures the referential transparency for every element in the list.</p><p>The map component has an input/output behavior just like the function that was depicted in Figure <ref type="figure" target="#fig_0">4</ref>. Note the input and output elements on the map component, one consuming a list (xs) as an input to the computation, the other producing a list (ys) as a result. The input list is processed successively, taking into account the position of the elements in the list, so that the output order Figure <ref type="figure">7</ref>: Higher-order functions corresponds to the input order. The unpacking is done by separating the head element ({x:xs}) while counting the elements on Place count at the same time. While the (un)packing of the list is sequentialized, the actual function calls execute in parallel. The function is applied by firing the transition call, which creates a net instance of the net colorforcode. The result is retrieved from the net instance by the subsequent transition ret. The right part of the map component symmetrically collects the results while respecting the initial order. The colorforcode net returns names of colors for numbers according to the tuples in Place mapping.</p><p>We will see a more sophisticated implementation of a reactive system using higher-order functions in Section 5. First, we introduce the means to develop graphical modeling languages as abstractions of Reference Net systems in the next section.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Functional Reactive DSML</head><p>In this section we will demonstrate the development of domain-specific languages with the Rmt framework specifically with respect to modeling functional reactive systems. The development of an executable modeling language with the Rmt framework consists mainly of two steps, the development of constructs for the graphical editor and the provision of operational semantics in the form of Petri net components [1, <ref type="bibr">Chapter 5]</ref>. The following part gives a brief summary of creating a graphical editor with the Rmt framework. It is taken from our previous work <ref type="bibr" target="#b13">[14]</ref>, where we developed an executable formalism of BPMN. It was adopted to this context for demonstration purposes.</p><p>The Rmt framework (Renew Meta-Modeling and Transformation) <ref type="bibr" target="#b12">[13]</ref> is a model-driven framework for the agile development of DSML. It follows concepts from software language engineering (SLE, <ref type="bibr" target="#b8">[9]</ref>) and enables a short development cycle to be appropriately applied in prototyping environments. With the Rmt framework, the specification of a language and a corresponding modeling tool may be derived from a set of models, defined by the developer of a modeling technique. A meta-model defines the structure (abstract syntax) of the language, the concepts of its application domain, and their relations. The visual Figure <ref type="figure">8</ref>: Excerpt from the Rmt models for a home automation modeling tool instances (concrete syntax) of the defined concepts and relations are provided using graphical components from Renew's modeling constructs repertoire. They are configurable by style sheets and complemented with icons and a tool configuration model to facilitate the generation of a modeling tool that nicely integrates into the Renew development environment.</p><p>Figure <ref type="figure">8</ref> displays a selected excerpt from the models required for the home automation DSML, together with the tool that is generated from these models. The parts of the figure are linked with colored circles and numbers. The metamodel (upper left) defines the concepts for classifiers (4, 5) and relations (1) of the modeling language and the corresponding model <ref type="bibr" target="#b2">(3)</ref>. Annotations are realized as attributes of these concepts (2). The concrete syntax (upper right) is provided using graphical components, which are created with Renew, as it is depicted for the XOR-split and the map component <ref type="bibr" target="#b3">(4,</ref><ref type="bibr" target="#b4">5)</ref>. Icon images for the toolbar can be generated from these graphical components. The representation of the inscription annotation (2) and the data-flow relation ( <ref type="formula">1</ref>) is configured with style sheets.</p><p>The tool configuration model (lower left) facilitates the connection between abstract and concrete syntax and defines additional tool related settings. The concepts of the meta-model are associated with the previously defined graphical components (4), with custom implementations or default figure classes that are customizable by style sheets (1), and the icons. Connection points for constructs are specified with ports <ref type="bibr" target="#b7">(8)</ref>. The general tool configuration contains the definition of a file description, an extension (6), and the ordering of tool buttons <ref type="bibr" target="#b6">(7)</ref>. With these models, a tool is generated as a Renew plug-in, as shown at the bottom right side of Figure <ref type="figure">8</ref>. A complete example of Rmt models and additional information about the tools can be found in our article on the Rmt framework <ref type="bibr" target="#b12">[13]</ref>.</p><p>Table <ref type="table" target="#tab_0">1</ref> shows the semantic mapping, a mapping of graphical components to semantic Reference Net components. In combination with the previously described steps, this is all it needs in order to build models that are ready to be executed within the Renew simulation environment. With the integrated sim-ulation plugin <ref type="bibr" target="#b13">[14]</ref> feedback from the simulation may be visualized directly in the representation of the original DSML. The first row of Table <ref type="table" target="#tab_0">1</ref> shows the graphical components (above) and the semantic components (below) that initiate and terminate the execution of a DSML and also an (atomic) action. The second row contains elements that organize control flow and the data component (cf. Figure <ref type="figure" target="#fig_1">5</ref>) and the third row contains the higher-order functions. The start component takes a variable as an argument on the new channel and the stop component terminates by returning a value. The values may be of arbitrary type, the variable (o) is inserted as a placeholder. The XOR-split component accepts a conditional statement (cond) that may be evaluated to a boolean value. The XOR-split component must be complemented by a closing XOR-merge component to merge the execution paths. The same holds for the parallel split and the parallel join components respectively, only, they do not branch conditionally but concurrently. The key-value data Reference Net, which we have introduced in the previous section, is included as a data storage component. Map, filter and forall are Reference Net implementations well known to the users of functional languages. They operate on lists and each of them applies a Reference Net (net(x)) in order to perform a certain task. The map component receives elements (x) as input and maps them to elements (y) as output. How this mapping is achieved, is subject to the applied net, the inputs and outputs of this component however are always of type list. This also holds for the filter component, however, the applied net maps arbitrary elements to boolean outputs in order to perform the filter operation. The forall component in contrast does not necessarily return any values at all, it merely guarantees that the computation on each input is completed by call of the ret channel with no arguments.</p><p>Net components were originally developed by Cabac [1, Chapter 5] and they are adopted from his work. The basic and control flow components, were used by Cabac to implement agent interactions (including a variant of the forall component), the data component and the components modeling higher-order functions are novel results.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Home Automation DSML</head><p>Once the abstract and concrete syntax are at hand the graphical editor may already be employed to draw basic models using the home automation DSML. The elements of the home automation DSML can be annotated with inscriptions. The semantic components may hold variables where the generator replaces a place holder with the value of the respective inscription.</p><p>Figure <ref type="figure">9</ref> shows the model of a home automation process. It models a simplified heating control unit for an office building. The process is triggered by an hourly cron job. During working hours the level of the heating system is set for each floor of the building according to the values of sensors, which are installed throughout the building. First, the sensor temperatures are read and then the values are filtered by office rooms (sensor.roomtype). The temperatures are subsequently mapped to a heating configuration and applied to the heating sys-Figure <ref type="figure">9</ref>: An example of a heating control modeled with a DSML for home automation tem. In between office hours (timestamp) the heating system is shutdown for saving energy.</p><p>Together with the semantic mapping we developed in the previous section, the home automation DSML models can be executed within the Renew simulation environment. Using the net generator from the RMT framework the Reference Net depicted in Figure <ref type="figure">10</ref> was generated from the home automation model in Figure <ref type="figure">9</ref>. It was extended with some inscriptions to become executable within the Renew simulation environment. The state of the home automation system becomes interactively inspectable and with the adaption to an appropriate home automation API the model could be used to control a home automation system.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Related Works</head><p>Graphical modeling techniques that apply a functional decomposition have a long tradition in computer science. The basis of functional block diagrams and its many variants are the interpretation of elements that are commonly depicted by rectangles as black boxes that transform inputs to outputs (cf. structured analysis and design technique <ref type="bibr" target="#b15">[16]</ref>). Standard languages exist to simulate mature instances of such diagrams, for instance using Modelica <ref type="bibr" target="#b17">[18]</ref> or Matlab Simulink <ref type="bibr" target="#b20">[21]</ref>, and even approaches to verification <ref type="bibr" target="#b21">[22]</ref>. However, they are usually self-contained and do not account for the environment as in functional reactive programming.</p><p>Figure <ref type="figure">10</ref>: The Reference Net generated from the home automation DSML There are many programming libraries that support functional reactive programming and some of them even provide a graphical notation, like the GraphDSL using Akka streams <ref type="bibr" target="#b3">[4]</ref>. As an advancement of the map-reduce approach to big data processing, the Apache Spark project gains support for graphical flow-based programming <ref type="bibr" target="#b11">[12]</ref>. They also target IOT and cyber-physical systems, however, the approach taken with this contribution is somewhat different as it focuses more on the operational semantics than on the processing of huge amounts of data.</p><p>Several frameworks exist that support developers in creating their own (domain specific) modeling languages based on metamodels (ADOxx <ref type="bibr" target="#b4">[5]</ref>) and some of them even provide means for simulation or interactive execution (GEMOC Studio <ref type="bibr" target="#b2">[3]</ref>). The execution semantics is usually coded within the modeling environment, while with the Rmt approach it is provided by transformations to Petri nets. The Viatra eclipse project provides an event driven reactive framework for model transformations <ref type="bibr" target="#b19">[20]</ref>, which is an interesting approach for Petri net transformations.</p><p>Petri nets in general already offer a functional perspective due to their locality principle. For complex applications a powerful inscription language is necessary. Petri net formalisms often choose functional languages for this purpose to maintain the perspective. The Coloured Petri Nets formalism <ref type="bibr" target="#b7">[8]</ref> for example uses ML as inscription language. To address the issue that simulators still have problems with side effects, the Curry-Coloured Petri Nets formalism uses a purely functional language to prevent side-effect related problems and logic program evaluation for the transition binding search <ref type="bibr" target="#b16">[17]</ref>. In comparison to these formalisms, Reference nets allow the creation of dynamic hierarchies using the nets-within-nets paradigm. This makes the implementation of advanced concepts from functional languages possible, such as recursion and higher-order functions while maintaining referential transparency.</p><p>Concerning the transformation based approach one may criticize that it is not actually functional, because it does not allow the combination of functions in the sense of currying or function composition. This would require a mechanism to modify the net structures at run-time, like higher-order Petri nets <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b5">6]</ref> or reconfigurable nets <ref type="bibr" target="#b14">[15]</ref>. However, no such thing is currently supported by the Reference Net formalism and it would involve quite an effort to bring these ideas together with the high-level concepts of Reference Nets.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Conclusion</head><p>Software models created from a composition of functional components can be employed to support the undestanding of complex reactive environments. They may be executed within the Renew simulator for inspection and used as control mechanism, similar to a workflow execution system. In Section 2 we have laid the foundation by the means of Reference Nets. It was demonstrated in Section 3 how Reference Nets can be employed to model functional reactive systems and complex data structures. We introduced the means for creating a modeling language that supports this paradigm and developed functional net components in Section 4 to formalize their semantics. This was used to build a simple example of a home automation DSML that may be used to generate a Reference Net model to be executed within the Renew simulation environment. It can be extended with further constructs to extend the applications of the home automation DSML.</p><p>In the future we would like to advance the approach to perform formal analysis most probably using state space analysis, which is interesting because only parts of the environment are visible. Another interesting idea is the extension of the Reference Net formalism to support real higher-order functions and the combination of functions.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: A functional perspective on Reference Nets</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: An immutable named key-value pair data structure</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: A reactive system</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 :</head><label>1</label><figDesc>Mapping of graphical and Petri net constructs</figDesc><table><row><cell></cell><cell>Start</cell><cell>Stop</cell><cell>Action</cell></row><row><cell>XOR-Split</cell><cell cols="3">XOR-Merge Parallel Split Parallel Join</cell><cell>Data</cell></row><row><cell>Map</cell><cell></cell><cell>Filter</cell><cell>Forall</cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Modeling Petri Net-Based Multi-Agent Applications</title>
		<author>
			<persName><forename type="first">L</forename><surname>Cabac</surname></persName>
		</author>
		<ptr target="http://www.sub.uni-hamburg.de/opus/volltexte/2010/4666/" />
	</analytic>
	<monogr>
		<title level="s">Agent Technology -Theory and Applications</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<date type="published" when="2010">2010</date>
			<publisher>Logos Verlag</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Software development with Petri nets and agents: Approach, frameworks and tool set</title>
		<author>
			<persName><forename type="first">L</forename><surname>Cabac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Haustermann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Mosteller</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.scico.2017.12.003</idno>
		<ptr target="https://doi.org/10.1016/j.scico.2017.12.003" />
	</analytic>
	<monogr>
		<title level="j">Sci. Comput. Program</title>
		<imprint>
			<biblScope unit="volume">157</biblScope>
			<biblScope unit="page" from="56" to="70" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Language engineering with the GEMOC Studio</title>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Barais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Wortmann</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSAW.2017.61</idno>
		<ptr target="https://doi.org/10.1109/ICSAW.2017.61" />
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on Software Architecture Workshops (ICSAW)</title>
				<imprint>
			<date type="published" when="2017-04">2017. April 2017</date>
			<biblScope unit="page" from="189" to="191" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Davis</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-1-4842-4176-9_6</idno>
		<ptr target="https://doi.org/10.1007/978-1-4842-4176-9_6" />
		<title level="m">Akka Streams</title>
				<meeting><address><addrLine>Berkeley, CA</addrLine></address></meeting>
		<imprint>
			<publisher>Apress</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="57" to="70" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">On the conceptualisation of modelling methods using the ADOxx meta modelling platform</title>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">G</forename><surname>Fill</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Karagiannis</surname></persName>
		</author>
		<idno type="DOI">10.18417/emisa.8.1.1</idno>
		<ptr target="https://doi.org/10.18417/emisa.8.1.1" />
	</analytic>
	<monogr>
		<title level="m">Enterprise Modelling and Information Systems Architectures</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="page" from="4" to="25" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Algebraic higher-order nets: Graphs and petri nets as tokens</title>
		<author>
			<persName><forename type="first">K</forename><surname>Hoffmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Mossakowski</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-40020-2_14</idno>
		<idno>540-40020-2_14</idno>
		<ptr target="https://doi.org/10.1007/978-3-" />
	</analytic>
	<monogr>
		<title level="m">Recent Trends in Algebraic Development Techniques, 16th International Workshop, WADT 2002</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">M</forename><surname>Wirsing</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Pattinson</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Hennicker</surname></persName>
		</editor>
		<meeting><address><addrLine>Frauenchiemsee, Germany</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2002">September 24-27, 2002. 2003</date>
			<biblScope unit="volume">2755</biblScope>
			<biblScope unit="page" from="253" to="267" />
		</imprint>
	</monogr>
	<note>Revised Selected Pa</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Higher-order petri net modelling: Techniques and applications</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">W</forename><surname>Janneck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Esser</surname></persName>
		</author>
		<idno type="DOI">10.5555/846335.846338</idno>
		<ptr target="https://dl.acm.org/doi/10.5555/846335.846338" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Conference on Application and Theory of Petri Nets: Formal Methods in Software Engineering and Defence Systems</title>
				<meeting>the Conference on Application and Theory of Petri Nets: Formal Methods in Software Engineering and Defence Systems<address><addrLine>AUS</addrLine></address></meeting>
		<imprint>
			<publisher>Australian Computer Society, Inc</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page" from="17" to="25" />
		</imprint>
	</monogr>
	<note>CRPIT &apos;02</note>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Coloured Petri Nets -Modelling and Validation of Concurrent Systems</title>
		<author>
			<persName><forename type="first">K</forename><surname>Jensen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">M</forename><surname>Kristensen</surname></persName>
		</author>
		<idno type="DOI">10.1007/b95112</idno>
		<ptr target="https://doi.org/10.1007/b95112" />
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Software Language Engineering: Creating Domain-Specific Languages Using Metamodels</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kleppe</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008-12">Dec 2008</date>
			<publisher>Pearson Education</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Referenznetze</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kummer</surname></persName>
		</author>
		<ptr target="http://www.logos-verlag.de/cgi-bin/engbuchmid?isbn=0035&amp;lng=eng&amp;id=" />
		<imprint>
			<date type="published" when="2002">2002</date>
			<publisher>Logos Verlag</publisher>
			<pubPlace>Berlin</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<author>
			<persName><forename type="first">O</forename><surname>Kummer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Wienberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Duvigneau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Cabac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Haustermann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Mosteller</surname></persName>
		</author>
		<ptr target="http://www.renew.de/" />
		<title level="m">Renew -User Guide (Release 2.5</title>
				<meeting><address><addrLine>Hamburg</addrLine></address></meeting>
		<imprint>
			<publisher>Theoretical Foundations Group</publisher>
			<date type="published" when="2016-06">Jun 2016</date>
		</imprint>
		<respStmt>
			<orgName>University of Hamburg ; Faculty of Informatics</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Graphical flow-based spark programming</title>
		<author>
			<persName><forename type="first">T</forename><surname>Mahapatra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Prehofer</surname></persName>
		</author>
		<idno type="DOI">10.1186/s40537-019-0273-5</idno>
		<ptr target="https://doi.org/10.1186/s40537-019-0273-5" />
	</analytic>
	<monogr>
		<title level="j">Journal of Big Data</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page">4</biblScope>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Integrating Petri net semantics in a model-driven approach: The Renew meta-modeling and transformation framework</title>
		<author>
			<persName><forename type="first">D</forename><surname>Mosteller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Cabac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Haustermann</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-662-53401-4_5</idno>
		<ptr target="https://doi.org/10.1007/978-3-662-53401-4_5" />
	</analytic>
	<monogr>
		<title level="j">Transaction on Petri Nets and Other Models of Concurrency XI</title>
		<imprint>
			<biblScope unit="volume">11</biblScope>
			<biblScope unit="page" from="92" to="113" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Integrated simulation of domain-specific modeling languages with Petri net-based transformational semantics</title>
		<author>
			<persName><forename type="first">D</forename><surname>Mosteller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Haustermann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Moldt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Schmitz</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-662-60651-3_4</idno>
		<ptr target="https://doi.org/10.1007/978-3-662-60651-3_4" />
	</analytic>
	<monogr>
		<title level="j">T. Petri Nets and Other Models of Concurrency</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="page" from="101" to="125" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Overview of Reconfigurable Petri Nets</title>
		<author>
			<persName><forename type="first">J</forename><surname>Padberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kahloul</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-75396-6_11</idno>
		<ptr target="https://doi.org/10.1007/978-3-319-75396-6_11" />
		<imprint>
			<date type="published" when="2018">2018</date>
			<publisher>Springer International Publishing</publisher>
			<biblScope unit="page" from="201" to="222" />
			<pubPlace>Cham</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Structured analysis (sa): A language for communicating ideas</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">T</forename><surname>Ross</surname></persName>
		</author>
		<idno type="DOI">10.1109/TSE.1977.229900</idno>
		<ptr target="https://doi.org/10.1109/TSE.1977.229900" />
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering SE</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="16" to="34" />
			<date type="published" when="1977-01">Jan 1977</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Tools for Curry-Coloured Petri nets</title>
		<author>
			<persName><forename type="first">M</forename><surname>Simon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Moldt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Schmitz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Haustermann</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-21571-2_7</idno>
		<idno>-030-21571-2_7</idno>
		<ptr target="https://doi.org/10.1007/978-3" />
	</analytic>
	<monogr>
		<title level="m">Application and Theory of Petri Nets and Concurrency -40th International Conference, PETRI NETS 2019</title>
		<title level="s">Proceedings. Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">S</forename><surname>Donatelli</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Haar</surname></persName>
		</editor>
		<meeting><address><addrLine>Aachen, Germany</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2019">June 23-28, 2019. 2019</date>
			<biblScope unit="volume">11522</biblScope>
			<biblScope unit="page" from="101" to="110" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Introduction to Physical Modeling with Modelica</title>
		<author>
			<persName><forename type="first">M</forename><surname>Tiller</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-1-4615-1561-6</idno>
		<ptr target="https://doi.org/10.1007/978-1-4615-1561-6" />
		<imprint>
			<date type="published" when="2001">2001</date>
			<publisher>Kluwer Academic Publishers</publisher>
			<pubPlace>USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Petri nets as token objects -an introduction to elementary object nets</title>
		<author>
			<persName><forename type="first">R</forename><surname>Valk</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-27793-4_29</idno>
	</analytic>
	<monogr>
		<title level="m">19th International Conference on Application and Theory of Petri nets</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">J</forename><surname>Desel</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Silva</surname></persName>
		</editor>
		<meeting><address><addrLine>Lisbon, Portugal; Berlin Heidelberg New York</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="1" to="25" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Road to a reactive and incremental model transformation platform: three generations of the VIATRA framework</title>
		<author>
			<persName><forename type="first">D</forename><surname>Varró</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bergmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Á</forename><surname>Hegedüs</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Á</forename><surname>Horváth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ráth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Ujhelyi</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10270-016-0530-4</idno>
		<ptr target="https://doi.org/10.1007/s10270-016-0530-4" />
	</analytic>
	<monogr>
		<title level="j">Software &amp; Systems Modeling</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="609" to="629" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">System simulation techniques with MATLAB and Simulink</title>
		<author>
			<persName><forename type="first">D</forename><surname>Xue</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Chen</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>John Wiley &amp; Sons</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Formal verification of simulink/stateflow diagrams</title>
		<author>
			<persName><forename type="first">L</forename><surname>Zou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Zhan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fränzle</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-24953-7_33</idno>
		<idno>319-24953- 7_33</idno>
		<ptr target="https://doi.org/10.1007/978-3-" />
	</analytic>
	<monogr>
		<title level="m">Automated Technology for Verification and Analysis -13th International Symposium, ATVA 2015</title>
		<title level="s">Proceedings. Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">B</forename><surname>Finkbeiner</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Pu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Zhang</surname></persName>
		</editor>
		<meeting><address><addrLine>Shanghai, China</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">October 12-15, 2015. 2015</date>
			<biblScope unit="volume">9364</biblScope>
			<biblScope unit="page" from="464" to="481" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
