=Paper= {{Paper |id=Vol-2651/paper12 |storemode=property |title=Modular Model Checking of Reference Nets: MoMoC |pdfUrl=https://ceur-ws.org/Vol-2651/paper12.pdf |volume=Vol-2651 |authors=Sven Willrodt,Daniel Moldt,Michael Simon |dblpUrl=https://dblp.org/rec/conf/apn/WillrodtMS20 }} ==Modular Model Checking of Reference Nets: MoMoC== https://ceur-ws.org/Vol-2651/paper12.pdf
                    Modular Model Checking of
                     Reference Nets: MoMoC

                 Sven Willrodt, Daniel Moldt, and Michael Simon

 University of Hamburg, Faculty of Mathematics, Informatics and Natural Sciences,
    Department of Informatics http://www.informatik.uni-hamburg.de/TGI/




        Abstract Reference nets provide a high expressiveness for modeling.
        However, like other high-level Petri nets, they are hard to analyze. In
        this contribution, we present our model checking tool for Reference nets:
        Modular Model Checker (MoMoC). Its two main purposes are to provide
        a proof of concept and to lay the foundation for a modular framework
        for Reference net model checking and verification in general.
        To allow CTL model checking, novel atomic propositions are added to
        the specification language that cover the unique Reference net concepts.
        For its specific main purpose, the application in the context of teaching,
        we provide a dynamic coloration of the reachability graph according to
        results of the extended CTL algorithm.
        MoMoC is the first working tool in this area. The main emphasis is on
        the overall architecture as our intention is to extend this framework in
        the future to cover more features and to become more efficient.


Keywords: High-level Petri nets, Nets-within-nets, Reference nets, Tool, CTL
Model Checking


1     Introduction
Low-level Petri nets have a large repertoire of methods like partial order re-
duction [30], symmetries [25], the sweep-line method [6] or alternative ways to
represent the state space [10,22] to cope with large model sizes. However, for
high-level Petri nets, research is still needed. Information about tools and links
to Petri net topics can be found at http://www.informatik.uni-hamburg.de/
TGI/PetriNets/tools/ and http://www.petrinet.de.
    The lack of verification methods holds especially for Reference nets with
their special features of synchronous channels and the nets-within-nets concept.
We consider model checking as a subdiscipline to be a strong candidate for the
verification of Reference nets.
    An idea that we have worked on for quite a while now is the partitioning of
the whole Reference net system into its sub-nets. It is a central hypothesis that
    Copyright c 2020 for this paper by its authors. Use permitted under Creative Com-
    mons License Attribution 4.0 International (CC BY 4.0).
182     Sven Willrodt, Daniel Moldt, and Michael Simon

a partitioning of the net system based on the nets-within-nets concept will aid in
developing efficient model checking methods. Therefore, we developed concepts,
methods and tools. In this contribution we present our current prototype for a
modular model checking framework called Modular Model Checker (MoMoC).
A first step was to use MoMoC for our theory teaching lessons in bachelor
courses which was performed successfully this year.
    The overarching goal is to provide a flexible framework that can easily be
modified to allow for experiments with different kinds of verification techniques.
A module structure provides the necessary flexibility. Modules are largely inde-
pendent from each other and can be individually optimized and exchanged for a
specific purpose. The current prototype implements explicit CTL model check-
ing. As a basis, we use the reachability graph generation functionality from [27].
The reachability graph is a central means for the model checking and was devel-
oped as the first step. Therefore, the Reference net reachability graph generation
is also discussed in this contribution.
    In the following we briefly present the basic notions in Section 2. The main
goal and the purpose of MoMoC as well as our requirements for and features of
this prototype are covered in Section 3. The architecture and some basic behavior
are sketched in Section 4. Section 5 demonstrates the usage of MoMoC by a
simple example, before we conclude in Section 6. Several text passages in this
contribution originate from [31], which provided first insights.


2     Background

Inspired by the nets-within-nets formalism of [29], the idea of object- and agent-
oriented Petri nets [4,20] and object-oriented programming in general, Reference
nets as a modeling technique and Renew as the accompanying tool have been
developed [16,17].
    Reference nets allow the use of net instances as tokens and recognize Java
expressions as inscriptions. Templates can be considered as classes and instances
as objects. Each net instance can technically be replaced by an object and vice
versa. Communication between net instances is realized via synchronous channels
[5,16]. Due to the dynamic instantiation of net instance tokens, markings may
contain an arbitrary number of instances of each net template.
    Although Renew is developed by our group since the end of the 90s, verifi-
cation has only been addressed for simple versions of nets and only small studies
have been performed. Tools like Maria [18], LoLA [32], GreatSPN [1], Maude [8]
and others have been (partially) integrated to provide verification options for
traditional net variants like P/T nets. For high-level Petri nets several interest-
ing model checking tools exist that are not integrated [9,11,14]. However, the
mapping from Renew’s Reference net formalism to a formalism that can be
read by these tools poses a very difficult problem in itself. The unique Reference
net concepts cannot be easily translated to other CPN concepts and it is only
feasible to translate a subset of all possible Java inscriptions to other inscription
languages. Therefore, we pursue a different model checking approach based on
                      Modular Model Checking of Reference Nets: MoMoC           183

the exploration of reachable markings using Renew’s own simulation core. A
central benefit is that this approach retains all of the Reference net formalism’s
expressive power.
    Model checking is a method to verify systems that are modeled as state-
transition systems [3,7]. With their capability to express concurrency and dis-
tribution, Petri nets are a popular modeling language for which model checking
is an appropriate method [12]. Every year, the Model Checking Contest [15] is
held, where tools can compete in verifying Petri nets. There, highly optimized
tools are tested which use efficient algorithms to perform different kinds of model
checking. However, there is no tool for formalisms where nets can contain other
marked nets as tokens.
    Due to the unique concepts of the Reference net formalism, the reachability
graph is constructed and presented differently by MoMoC compared to other
tools for Coloured Petri nets, e.g. CPN/Tools. The reachability graph is explored
based on a single root net instance in the initial marking of the root net template.
In general a marking in the reachability graph is always associated with a single
root net instance state. However, this state can recursively contain other marked
net instances. The state of the overall system can be explored by traversing the
contained net instances in the UI. A working prototype, the Reference Net
Reachability Graph (Rnrg) plugin, is presented in [27].
    The Rnrg plugin is a reachability graph generator prototype for Reference
nets. Its primary design philosophy is the minimalism of the implementation.
MoMoC has a different design philosophy: the central aspects are modularity
and extensibility of the implementation. We took the reachability graph genera-
tion functionality from the Rnrg plugin, broke it apart into flexible components
and added the architecture for the integration of different model checking meth-
ods as modules. Thus, the MoMoC plugin contains all of the Rnrg plugin’s
functionality and builds upon it. We consider it as its successor. The original
Rnrg functionality can still be accessed as a procedure module. Working model
checking functionality is also already provided in the form of a CTL procedure
module. It is a proof-of-concept of this architecture and a prototype for future
model checking methods. Furthermore, MoMoC adds visualization functionality
that is essential for its practical usability and deployment in teaching.
    In the future, it is of particular interest to develop optimized model checking
methods that make use of the concepts that distinguish Reference nets from
other CPN formalisms and to combine these with optimizations that are known
from the other formalisms. This version of MoMoC does not offer this. However,
the architecture is build with the integration of such methods in mind and is an
essential step into this direction.


3   Objectives

The overall objective is to improve the tool support for Reference net verification.
To provide an extendable basis for research on model checking, the first step is to
184     Sven Willrodt, Daniel Moldt, and Michael Simon




Figure 1. An exemplary interaction between a procedure, binding core and storage
manager module




change Rnrg from a single purpose, monolithic tool to a modular environment
that allows quick prototyping.

    The second objective is to implement the basic CTL model checking algo-
rithm [3,7]. It serves both as a foundation for future research and tools, as well as
a prototype to identify the difficulties and bottlenecks that need to be handled
when model checking Reference nets. Based upon this prototype, more efficient
model checking techniques can be developed that utilize the advantages of the
Reference net formalism, like the distributed structure of net templates.

    Further, with a working model checking routine, MoMoC can be used for
teaching purposes in our bachelors theory course, which includes Petri net model
checking. Because the examples are relatively small in size, performance is not
essential. Rather, the focus shifts to result visualization and general feedback,
helping students to gain insight into the CTL model checking algorithm.
                       Modular Model Checking of Reference Nets: MoMoC             185

4    Architecture
MoMoC features a modular architecture (thus its name), where the processing
of a query is determined by mainly three types of modules that can freely be
exchanged to alter the behavior; binding cores, storage managers and procedures.
These three module types directly result from the modularization of the Rnrg
plugin. The CTL model checking implementation is fully contained in a single
procedure. Additionally, MoMoC provides a framework for common tasks like
parsing, result visualization and user interaction.
     The binding core finds bindings for a given marking and can calculate the
resulting markings. Thus, it represents the formalism that is being verified. It can
be set up to exclude certain types of transitions, e.g. transitions with inscriptions
that have side-effects. For the majority of potential extensions we expect that it
is not necessary to modify the binding core, however it is possible to integrate
new formalisms that way. The binding core is realized by integrating Renew’s
simulator, which is further described in [27].
     Storage managers keep track of found markings. They store the reachability
graph, insert new nodes into it and detect duplicate markings. Storage managers
are of special interest, because it is not trivial to store Reference nets efficiently.
By exchanging the storage manager, it is possible to test new data structures
that encode markings or storage heuristics. Techniques such as the sweepline
method, symmetry and bloomfiltering are examples that can be implemented as
storage managers.
     Procedures contain the logic and steps to process a query. They define the
overall purpose of the query and can be considered as the active components
which utilize all other modules. The generation of a reachability graph, CTL
model checking and model checking with partial order reduction are examples
of procedures. Procedures can also use other procedures, to prevent basic algo-
rithms from being implemented twice. A good example is the reachability graph
procedure, originally from Rnrg, which generates the reachability graph for
the explicit CTL model checking procedure. Optimization techniques that select
which transitions are fired, like the stubborn set method or a depth-first search,
need to be realized as a procedure.
     Figure 1 shows a typical interaction between the three described modules on
an abstract level. It is similar to how MoMoC generates the reachability graph,
but entirely different interactions are imaginable.
     To provide tasks that resolve around parsing, MoMoC uses the parser gener-
ator ANTLR [21]. This includes the parsing itself, the normalization of formulas,
as well as the resolution of redundancies. It further provides a simple encoding
of labels for the CTL model checking algorithm.
     Lastly, the framework provides a UI that has multiple features. It presents
the user available procedures as well as optional parameters that are defined by
the procedure. The UI can take multiple formulas at once and it is up to the
procedure to decide on how to process them. Currently, the CTL model checking
algorithm constructs a single reachability graph and then verifies all formulas on
it, reusing the labels.
186     Sven Willrodt, Daniel Moldt, and Michael Simon

    Complementing the UI, the result visualizer takes on the task of presenting
the outcome of a query to the user. It dynamically displays available results from
a procedure. Besides a list of arguments that the procedure returned, the user can
also inspect a hierarchical representation of the normalized formula. In addition,
for label-based approaches like CTL model checking, the reachability graph can
be colorized to show which nodes fulfill the currently selected (sub-)formula from
the hierarchical view.


Language Features

When formulating atomic propositions for Reference nets one faces the problem
that net elements in net instances are not uniquely identifiable by their name and
net template. This is based on the fact that an arbitrary number of net instances
of the same template may exist during simulation. We call this problem net
instance ambiguity. To approach this problem, MoMoC introduces two novel
operators, called net instance quantifiers. As their name suggests, they quantify
over net instances and require either all, or at least one net instance of a given
type to fulfill a marking predicate.
    With a given net template name net and a marking predicate m, the term
!(net, m) expresses that all net instances of net fulfill m, and ?(net, m) that at
least one net instance of net fulfills m. Expressions with net instance quantifiers
are still atomic propositions and thus do not change syntax or semantics of
CTL. For nets that only consist of one net instance (like P/T nets or CPNs),
both operators effectively result in the semantics familiar from other tools for
those Petri net formalisms.
    While net instance quantifiers are a first solution to the net instance ambi-
guity, many properties remain that cannot be expressed with them.


5     Examples and Evaluation

This section briefly demonstrates the usage of MoMoC. For a detailed descrip-
tion and an executable demo see https://paose.informatik.uni-hamburg.
de/paose/wiki/MoMoC.
    Figure 2 is a Reference net representation of a sender-receiver system with a
buffer. There exist four different net templates, of which net instances are created
for simulation; a sender that can select and send a message, a receiver that can
receive a message, a buffer which can receive and store up to two messages
that it can then send on, as well as a system net that serves as a platform
for communication between all net instances. All net instances communicate
via synchronous channels. In this example, channels exist such that messages
can be transmitted either directly between sender and receiver (channels with
direct), or by using the buffer (channels with transmit and fetch). This Reference
net representation of the system is very easy to scale, as the amount of each net
instance can be increased via the inscription in the system net. It is thus possible
to add more sender, receiver or buffer nets without adding any new places or
           Modular Model Checking of Reference Nets: MoMoC      187




           Figure 2. Sender-Receiver with Buffer




                                       Figure 4. Result panel


Figure 3. MoMoC’s UI
188    Sven Willrodt, Daniel Moldt, and Michael Simon




      Figure 5. Reachability graph, colored with EG!(Buffer, m(stored) = 0)



transitions. The depicted system net in Figure 2 instantiates exactly one instance
of each net template.
    In the following, the CTL formula EG!(Buffer, m(stored) = 0) is used to
prove that communication does not necessarily include the buffer. Using the net
instance quantifier !, the formula expresses that there exists a path, on which
all instances of the net template Buffer have zero tokens in the place stored.
Since the predicate is required for all instances, the formula is independent of
the number of instantiated Buffer nets.
    Figure 3 shows MoMoC’s UI. The left panel displays all available procedures
and a short description. The right panel receives user input. A formula can be
entered in the lower text area, and macros can be defined in the upper text area
for better readability. From top to bottom, the three buttons start the selected
procedure, perform a syntax check and terminate all ongoing procedures.
    Figure 4 presents the result of the query. Besides the overall result, it dis-
plays additional information like the root net name. The left panel displays the
normalized formula in a hierarchical view. Additionally, the result panel has a
button to display the reachability graph. The first time it is clicked, the graph
layout algorithm is triggered, which currently takes significantly longer than the
actual model checking of the query.
                      Modular Model Checking of Reference Nets: MoMoC           189

    The reachability graph in Figure 5 was arranged automatically. Edge labels
are hidden for a better readability. Each node is colored green or red, representing
if the formula EG!(Buffer, m(stored) = 0) holds in this node. The initial marking
is represented by a strong green node (red in a negative case). Any path on only
green nodes constitutes an example path that verifies the given formula.
    The state space in Figure 5 consists of 161 nodes and 367 edges. Using an
Intel i7-8550U CPU, the state space generation and model checking took an
average of 0.24 seconds, not including the graph layouting. When adding two
more Buffer net instances, the state space increases to 3521 nodes and 12277
edges, for which MoMoC requires 4.8 seconds on average. At state spaces of
this size, bottlenecks in the current algorithms of MoMoC become evident. A
main bottleneck is the currently inefficient encoding of Reference nets, but also
the lack of optimization techniques requires all states to be explored and kept in
memory. The addition of such techniques and a more sophisticated encoding will
further increase the efficiency of MoMoC. For models that we currently use in
teaching, the efficiency is already sufficient and the dynamic graph colorization
is a helpful feature to understand the CTL model checking approach.


6   Conclusion

MoMoC provides a foundation for model checking in Renew and allows ex-
plicit CTL model checking of Reference nets and other Petri net formalisms that
can be expressed with Reference nets, like P/T nets or CPNs. While its perfor-
mance cannot compare to tools that participate in the Model Checking Contest
at verifying classic Petri net formalisms, MoMoC is the first tool that can ap-
ply model checking to the Reference net formalism. With its modular structure,
components can be independently exchanged to create new behavior. The pro-
cedure module can be exchanged to apply partial order reduction or similar
techniques during the state space generation. By exchanging the storage man-
ager, data structures and storage techniques can be altered. The binding core
can be exchanged to effectively replace the semantics of the underlying Petri net.
Thus, MoMoC provides a well-extendable basis to conduct further research on
model checking algorithms and data structures designed for Reference nets.
    For its main purpose, the comprehensive visualization of results, the reach-
ability graph can be colorized interactively for each subformula with the result
of the CTL model checking algorithm. With this feature, the framework is well
suited to teach the basics of Petri net model checking with CTL. MoMoC has
been successfully used in a bachelor theory course for third and fifth semester
students this winter term. It was both used during lecture for demonstrations
and in exercises for students.


Outlook

Several improvements are planned for MoMoC in the short term. In addition
to a colorization of nodes, a trace representation is planned to display positive
190     Sven Willrodt, Daniel Moldt, and Michael Simon

or negative example traces. More atomic propositions are planned to increase
the expressiveness with respect to data types and net instances. Especially net
instance expressions are an interesting research topic as they are a balancing
act between expressiveness and computational complexity of their evaluation.
Finally, a more efficient encoding of markings can significantly increase the per-
formance of MoMoC.

    An interesting research topic is the combination of CPN model checking and
the verification of inscribed code. A promising approach is to use MoMoC with
the Curry-Coloured Petri Net (CCPN ) formalism [26,28]. Especially when con-
sidering future extensions integrating hierarchical nets and Reference net con-
cepts. The CCPN framework integrates the purely functional logic programming
language Curry as an inscription language. It is side-effect free, has a formally
defined semantics and thus offers great potential for code verification as evi-
denced by existing research [2,13]. This verification would make model checking
possible on markings that are parametric on some tokens. This would be par-
ticularly useful to provide results that are valid for a whole range of external
Reference net channel calls at once.

   As another important task besides the transfer of algorithms and methods
from traditional Petri net analysis, we plan to increase the efficiency and thus the
practical feasibility of Reference net analysis in two steps: the first step is to use
the pragmatic structure of the model which is build in by the modeler. The nets-
within-nets concept supports object- or agent-oriented modeling which can be
used to partition the models. It is a current research topic to investigate how net
templates that follow those modeling paradigms can be verified independently.
This will greatly relieve the model checker and allows the application of different
techniques for each net template. The second step is to distribute the analysis,
based on this partitioning, for which we can utilize our research on Kubernetes in
the context of Renew [23,24]. Special treatment of the composition is required
by algorithms and methods that are the object of further research.

    Due to the modular architecture, MoMoC will continue to improve our
teaching: other verification techniques can easily be added (like in [19]), the vi-
sualization of relations between components in a software system (modeled as
net instances) is possible and students can experiment with verification algo-
rithms during our teaching project courses to gain deeper insights into software
architecture, verification and algorithms at the same time.

    In the context of teaching it is also a topic of interest to increase the readabil-
ity of large reachability graphs. Central to this is a dynamic visibility of states
in the reachability graph, so that only relevant parts are displayed. A suitable
approach would be to display only traces that verify or disprove a formula and
surrounding states to give enough context. With sophisticated techniques to
comprehensively display larger reachability graphs, MoMoC will also become
more interesting for real world applications.
                        Modular Model Checking of Reference Nets: MoMoC               191

References
 1. Amparore, E.G., Balbo, G., Beccuti, M., Donatelli, S., Franceschinis, G.: 30 years of
    GreatSPN. In: Principles of Performance and Reliability Modeling and Evaluation,
    pp. 227–254. Springer (2016)
 2. Antoy, S., Hanus, M., Libby, S.: Proving non-deterministic computations in Agda.
    In: WFLP 2016, Proceedings. Electronic Proceedings in Theoretical Computer
    Science, vol. 234, pp. 180–195. Open Publishing Association (2017)
 3. Baier, C., Katoen, J.: Principles of Model Checking. MIT Press (2008)
 4. Becker, U., Moldt, D.: Object-oriented concepts for coloured Petri nets.
    In: Systems, Man and Cybernetics, 1993. ’Systems Engineering in the
    Service of Humans’, Conference Proceedings., IEEE, International Confer-
    ence on. vol. 3, pp. 279–285. IEEE, Le Touquet, France (Oct 1993).
    https://doi.org/10.1109/ICSMC.1993.385024
 5. Christensen, S., Hansen, N.D.: Coloured petri nets extended with channels for
    synchronous communication. In: Valette, R. (ed.) Petri Nets 1994. LNCS, vol. 815,
    pp. 159–178. Springer (1994). https://doi.org/10.1007/3-540-58152-9_10
 6. Christensen, S., Kristensen, L.M., Mailund, T.: A sweep-line method for state
    space exploration. In: Margaria, T., Yi, W. (eds.) Tools and Algorithms for the
    Construction and Analysis of Systems. pp. 450–464. Springer Berlin Heidelberg,
    Berlin, Heidelberg (2001)
 7. Clarke, Jr., E.M., Grumberg, O., Kroening, D., Peled, D.A., Veith, H.: Model
    Checking. MIT Press, Cambridge, MA, USA, third edn. (2018)
 8. Clavel, M., Durán, F., Eker, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott,
    C.L. (eds.): All About Maude - A High-Performance Logical Framework, How to
    Specify, Program and Verify Systems in Rewriting Logic, LNCS, vol. 4350. Springer
    (2007). https://doi.org/10.1007/978-3-540-71999-1
 9. Colange, M., Baarir, S., Kordon, F., Thierry-Mieg, Y.: Crocodile: A Symbolic/Sym-
    bolic Tool for the Analysis of Symmetric Nets with Bag. In: Kristensen,
    L.M., Petrucci, L. (eds.) Applications and Theory of Petri Nets. pp. 338–
    347. Lecture Notes in Computer Science, Springer, Berlin, Heidelberg (2011).
    https://doi.org/10.1007/978-3-642-21834-7_20
10. Esparza, J., Heljanko, K.: Unfoldings: a partial-order approach to model checking.
    Springer Science & Business Media (2008)
11. Evangelista, S.: High Level Petri Nets Analysis with Helena. In: Ciardo, G., Daron-
    deau, P. (eds.) Applications and Theory of Petri Nets 2005. Lecture Notes in
    Computer Science, vol. 3536, pp. 455–464. Springer, Berlin, Heidelberg (2005).
    https://doi.org/10.1007/11494744_26
12. Girault, C., Valk, R.: Petri nets for systems engineering: a guide to modeling,
    verification, and applications. Springer Science & Business Media (2013)
13. Hanus, M.: Combining static and dynamic contract checking for Curry. In: Fiora-
    vanti, F., Gallagher, J.P. (eds.) Logic-Based Program Synthesis and Transforma-
    tion - 27th International Symposium, LOPSTR 2017, Namur, Belgium, October
    10-12, 2017, Revised Selected Papers. Lecture Notes in Computer Science, vol.
    10855, pp. 323–340. Springer (2017)
14. Hostettler, S., Marechal, A., Linard, A., Risoldi, M., Buchs, D.: High-level Petri net
    model checking with AlPiNA. Fundamenta Informaticae 113(3-4), 229–264 (Aug
    2011)
15. Kordon, F., Garavel, H., Hillah, L.M., Hulin-Hubard, F., Amparore, E., Beccuti,
    M., Berthomieu, B., Ciardo, G., Dal Zilio, S., Liebke, T., Li, S., Meijer, J., Miner,
192     Sven Willrodt, Daniel Moldt, and Michael Simon

    A., Srba, J., Thierry-Mieg, Y., van de Pol, J., van Dirk, T., Wolf, K.: Complete
    Results for the 2019 Edition of the Model Checking Contest. http://mcc.lip6.fr/
    (Apr 2019)
16. Kummer, O.: Referenznetze. Logos Verlag, Berlin (2002), http://www.
    logos-verlag.de/cgi-bin/engbuchmid?isbn=0035&lng=eng&id=
17. Kummer, O., Wienberg, F., Duvigneau, M., Cabac, L., Haustermann, M.,
    Mosteller, D.: Renew – User Guide (Release 2.5). University of Hamburg, Fac-
    ulty of Informatics, Theoretical Foundations Group, Hamburg (Jun 2016), http:
    //www.renew.de/
18. Mäkelä, M.: Maria: Modular reachability analyser for algebraic system nets. In: Es-
    parza, J., Lakos, C. (eds.) Petri Nets 2002. LNCS, vol. 2360, pp. 434–444. Springer,
    Springer (2002). https://doi.org/10.1007/3-540-48068-4_25
19. Mascheroni, M., Wagner, T., Wüstenberg, L.: Verifying reference nets by
    means of hypernets: A plugin for Renew. In: Duvigneau, M., Moldt, D. (eds.)
    PNSE’10 2010, Proceedings. pp. 39–54. No. FBI-HH-B-294/10 in Bericht, Uni-
    verity of Hamburg (Jun 2010), http://epub.sub.uni-hamburg.de/informatik/
    volltexte/2010/148/
20. Moldt, D., Wienberg, F.: Multi-agent-systems based on coloured Petri nets. In:
    Azéma, P., Balbo, G. (eds.) Petri Nets 1997, Proceedings. pp. 82–101. No. 1248 in
    LNCS, Springer Verlag, Berlin Heidelberg New York (1997)
21. Parr, T.: The definitive ANTLR 4 reference. Pragmatic Bookshelf (2013)
22. Pastor, E., Roig, O., Cortadella, J., Badia, R.M.: Petri net analysis using boolean
    manipulation. In: Valette, R. (ed.) Petri Nets 1994. pp. 416–435. Springer Berlin
    Heidelberg (1994)
23. Röwekamp, J.H., Feldmann, M., Moldt, D., Simon, M.: Simulating Place / Tran-
    sition Nets by a distributed, web based, stateless service. In: Moldt, D., Kindler,
    E., Wimmer, M. (eds.) PNSE’19, Proceedings. CEUR Workshop Proceedings,
    vol. 2424, pp. 163–164. CEUR-WS.org (2019), http://CEUR-WS.org/Vol-2424
24. Röwekamp, J.H., Moldt, D.: RenewKube: Reference net simulation scaling with
    Renew and Kubernetes. In: Donatelli, S., Haar, S. (eds.) Petri Nets2019. LNCS,
    vol. 11522, pp. 69–79. Springer (2019). https://doi.org/10.1007/978-3-030-21571-
    2_4
25. Schmidt, K.: Symmetries of Petri Nets. Citeseer (1994)
26. Simon, M.: Curry-Coloured Petri Nets: A Concurrent Simulator for Petri Nets
    with Purely Functional Logic Program Inscriptions. Master thesis, University of
    Hamburg, Department of Informatics, Vogt-Kölln Str. 30, D-22527 Hamburg (Apr
    2018)
27. Simon, M., Moldt, D., Engelhardt, H., Willrodt, S.: A first prototype for the vi-
    sualization of the reachability graph of reference nets. In: Moldt, D., Kindler, E.,
    Wimmer, M. (eds.) PNSE’19 2019, Proceedings. CEUR Workshop Proceedings,
    vol. 2424, pp. 165–166. CEUR-WS.org (2019), http://CEUR-WS.org/Vol-2424
28. Simon, M., Moldt, D., Schmitz, D., Haustermann, M.: Tools for Curry-Coloured
    Petri nets. In: Donatelli, S., Haar, S. (eds.) Petri Nets 2019. LNCS, vol. 11522, pp.
    101–110. Springer (2019). https://doi.org/10.1007/978-3-030-21571-2_7
29. Valk, R.: Petri nets as token objects - an introduction to elementary object nets. In:
    Desel, J., Silva, M. (eds.) Petri Nets, 1998. pp. 1–25. No. 1420 in LNCS, Springer-
    Verlag, Berlin Heidelberg New York (1998). https://doi.org/10.1007/978-3-540-
    27793-4_29
30. Valmari, A.: A stubborn attack on state explosion. Formal Methods in System
    Design 1(4), 297–322 (12 1992). https://doi.org/10.1007/BF00709154
                       Modular Model Checking of Reference Nets: MoMoC             193

31. Willrodt, S., Moldt, D.: Discussion of a Renew implementation of a modular model
    checking framework for reference nets. In: Bergenthum, R., Kindler, E. (eds.)
    AWPN 2019, Proceedings. pp. 12–17. Fernuniversität in Hagen, Germany (2019).
    https://doi.org/https://doi.org/10.18445/20191003-092114-0
32. Wolf, K.: Petri net model checking with lola 2. In: Khomenko, V., Roux, O.H. (eds.)
    Petri Nets 2018. pp. 351–362. Springer International Publishing, Cham (2018)