Abstract
We build on the correspondence between Petri nets and free symmetric strict monoidal categories already investigated in the literature, and present a categorical semantics for Petri nets with guards. This comes in two flavors: Deterministic and with side-effects. Using the Grothendieck construction, we show how the guard semantics can be internalized in the net itself.
Introduction
Category theory has been used to study Petri nets at least since the beginning of the nineties [6]. Throughout this time, the main effort in this direction of research consisted in showing how Petri nets can be thought of as presenting various flavors of free monoidal categories [2, 5, 6, 8] This idea has been very influential, successfully modeling the individual-token philosophy via process semantics.
On the other hand, shortly after Petri’s first publications about the nets that carry his name [7] researchers started investigating what happens when nets are enriched with new features. One of the most successful extensions of Petri nets is guarded (or coloured) nets [3]. Modulo different flavors of modeling what boils down to be the same concept, a guarded net is a Petri net with the following extra properties:
To each token is attached some “attribute”. The kind of attributes we can attach to tokens depends on the place the token is in;
Each arc is decorated with an expression, which modifies tokens’ attributes as they flow through the net;
Each transition is decorated with a predicate and only fires on tokens whose attributes satisfy the predicate.
At a fist glance, guarded nets allow for a more expressive form of modeling with respect to their unguarded counterparts, but as we will see shortly, this is not necessarily the case. Indeed, depending on the underlying theory from which properties, expressions, and predicates are drawn the gain in expressive power with respect to undecorated nets may be nil: With a wise choice of underlying theory, coloured nets amount to be nothing more than syntactic sugar for standard nets, though of course the availability of such syntactic sugar can greatly simplify the modeling of complex processes using the Petri net formalism.
Recently there has been renewed interest in employing Petri nets as the basis for a programming language [10]. In this setting, the categorical correspondence between nets and symmetric monoidal categories has been of the utmost importance, single-token philosophy being considered necessary to make the programming language usable [9]. Clearly, extending nets with new features such as guards or timings is desirable to make the language more expressive.
In this work we try to unify these two longstanding directions of research – the categorical approach to Petri nets and the study of guarded nets – by showing how guarded nets can be modeled as ordinary Petri nets with a particular flavor of semantics in the style of [1].
Importantly, we are able to define both a deterministic semantics and a non-deterministic semantics in our formalism. The first models the traditional notion of guards deterministically modifying data attached to tokens, while the second describes a setting where token data is modified depending on side effects.
Using the Grothendieck construction, we show how the guard semantics can be internalized in the net itself, providing a categorical proof that in our model, guarded nets do not increase expressivity, as compared to traditional nets. This is a desired feature, since it means that many nice properties of nets such as termination or decidability of the reachability relation are preserved. It also shows that the core mathematical abstraction in computer implementations of Petri nets need not be modified when offering users the flexibility of guarded nets.
We save all proofs for the appendix, which starts on page 14.
Guarded Nets
Having given an intuitive version of what a guarded net is, we now start modeling the concept formally. We will use the formalism developed in [1], of which we recall some core concepts.
We denote by
the free symmetric strict monoidal category associated to a Petri net N, and with
the Petri net associated to the free symmetric strict monoidal category
. We denote composition in diagrammatic order; i.e. given
and
, we denote their composite by
.
Definition 1
Given a strict monoidal category
, a Petri net with
-semantics is a pair
, consisting of a Petri net N and a strict monoidal functor
![]() |
A morphism
is just a strict monoidal functor
such that
.
Nets equipped with
-semantics and their morphisms form a monoidal category denoted
, with the monoidal structure arising from the product in
.
Definition 2
We denote by
the category of sets and partial functions, and by
the 1-category of sets and spans, where isomorphic spans are identified. Both these categories are symmetric monoidal. From now on, we will work with the strictified version of
and
, respectively.
Example 1
Let
denote the terminal symmetric monoidal category. A Petri net with
-semantics is just a Petri net. Petri nets are in bijective correspondence with free symmetric strict monoidal categories, so
denotes the usual category of free symmetric strict monoidal categories and strict monoidal functors between them.
Notation 1
Recall that a morphism
in
consists of a set S and a pair of functions
. When we need to notationally extract this data from f, we write
![]() |
We sometimes consider the span as a function
, thus we may write
for
with
and
.
Perhaps unsurprisingly,
and
will be the target semantics corresponding to two different flavors for our guards, with
allowing for some form of nondeterminism – expressed as the action of side-effects – whereas
models a purely deterministic semantics. Expressing things formally:
Definition 3
A guarded net is an object of
. A guarded net with side effects is an object of
. A morphism of guarded nets (with side effects) is a morphism in
(resp. in
).
Remark 1
Although it doesn’t affect our formalism by any means, in practice the choice of semantics, both for
and
, is limited by computational requirements: the places in a net are usually sent to finite sets, while transitions are usually sent to computable functions and spans1, respectively. Such restrictions are necessary to make sure the net is executable and to keep model checking decidable.
Let us unroll the cryptic Definition 3, starting from the case
. An object in
is a net N together with a strict monoidal functor
. It assigns to each place p of N – corresponding to a generating object of
– a set
, representing all the possible colours a token in p can assume. A transition
– corresponding to a generating morphism of
– gets sent to a partial function
, representing how token colours are transformed during firing. Importantly, the fact that the functions in the semantics are partial means that a transition may not be defined for tokens of certain colors. An example of this is the net in Fig. 1a, which is shown together with its semantics. Although reachability in the base net seems quite straightforward, we see that a token in the leftmost place will never reach the rightmost place, since the rightmost transition is not defined on the tokens output by the leftmost one.
Fig. 1.
The same net (below), equipped with a partial function and span semantics, respectively (above).
In the case of
the intuition is similar. Objects are sent to sets, exactly as in
, but transitions are mapped to spans. Spans can be understood as relations with witnesses, provided by elements in the apex of the span. Practically, this means that each path from the span domain to its codomain is indexed by some element of the span apex, as it is shown in Fig. 1b. The presence of witnesses allows to consider different paths between the same elements. Moreover, an element in the domain can be sent to different elements in the codomain via different paths. We interpret this as non-determinism: The firing of the transition is not only a matter of the tokens input and output, it also includes the path chosen, which we interpret as having side-effects that are interpreted outside of our model. As one can see, in both Figs. 1a and 1b the composition of paths is the empty function (resp. span). Seeing things from a reachability point of view, the process given by firing the left transition and then the right will never occur. Let us make this intuition precise:
Definition 4
Given a guarded Petri net (with side effects)
, a marking for
is a pair (X, x) where X is an object of
and
. We say that a marking (Y, y) is reachable from (X, x) if there is a morphism
in
such that
.
The goal we will pursue in the next section will be to internalize the guard semantics in the free category
associated to a net.
Internalizing Guards
By “internalizing the semantics of a guarded net N in
” we mean obtaining an unguarded net
M
such that
represents all the possible runs of
N. For readers familiars with coloured Petri nets, this corresponds to the claim that reachability in a coloured net is equivalent to reachability in a suitably constructed “standard” net [3].
Since our point of view is process-theoretic, and we are working with symmetric strict monoidal categories and functors, such internalization must be built categorically. The main tool we will use is the Grothendieck construction [4], which in our context we will specialize to functors to
and
, respectively.
Definition 5
Let
be a guarded net. We define its internalization, denoted
, as the following category:
- The objects of
are pairs (X, x), where X is an object of
and x is an element of
. Concisely: 
- A morphism from (X, x) to (Y, y) in
is a morphism
in
such that x is sent to y via
. Concisely: 
It is worth giving some intuition of what the Grothendieck construction does in our context. It basically makes a place for each element of the set we send a place to, and makes a transition for each path between these elements, as shown below:
An equivalent definition exists when the semantics is taken to be in
, which is the following:
Definition 6
Let
be a guarded net with side effects. We define the internalization of
, denoted with
, as the following category:
- The objects of
are pairs (X, x), where X is an object of
and x is an element of
. Concisely: 
- A morphism from (X, x) to (Y, y) in
is a pair (f, s) where
in
and
in the apex of the corresponding span connects x to y. Concisely: 
The intuition in the span case is exactly as for partial functions, and we don’t deem it useful to draw the same picture again. Looking at the example, though, a couple of things become clear. The first is that to justify the idea of the Grothendieck construction turning an assignment of semantics into a net we have to prove that the resulting category is symmetric strict monoidal and free. The second is that the net thus built is fibered over the base net, and there should be an opposite construction sending
to M. Both of these claims are true, as we now prove:
Lemma 1
In the case of both
and
, the category
has a strict symmetric monoidal structure.
Theorem 1
In both the case of
and of
the strict symmetric monoidal category
is free.
Counterexample 1
(Relations). Theorem 1 does not hold – the Grothendieck construction does not yield a free symmetric strict monoidal category – if we replace
or
with
. To see this, consider
in the case that
. Let M be the Petri net consisting of three places X, Y, Z and two transitions
and
. Let
send X to
, Y to
, and Z to
. On morphisms, let
send f to the maximal relation on
and g to the maximal relation on
. Then we have the following four generating morphisms in
:
![]() |
There is an equality
as morphisms
in
, proving
is not free.
The reason that Theorem 1 holds in the span case is that spans keep track of different paths between elements, whereas relations do not. To see this, consider the span composition:
It is clear that in this composition the two paths from x to z are considered as separated in the
case, and witnessed by
respectively, while in the case of
they would have been conflated to one. The result is that these paths correspond to the same morphism in the relational case of
, introducing new equations and breaking freeness, while they stay separated in the span case.
Lemma 2
In the case of both
and
, there is a strict monoidal functor
sending (X, x) to X and
to
(resp.
to
).
Remark 2
In general,
is not an opfibration. This is because our target categories
and
allow for partial functions. Indeed, if
in M is sent by
to a partial function that is not defined on
, then there is no coCartesian lift emanating from (X, x) for the morphism f.
We conclude this section by proving that the reachability semantics of a guarded net coincides with the reachability semantics of its internalization.
Theorem 2
Let
be a guarded Petri net (with side effects). (Y, y) is reachable from (X, x) if and only if (Y, y) is reachable from (X, x) in the net
.
Properties of Internalizations
The Grothendieck construction provides a way to internalize partial function and span semantics to nets. As such, it acts on objects of the categories
and
, respectively. It is thus worth asking what happens to morphisms in these categories. The answer is, luckily, easy to find:
Lemma 3
Let
be a morphism in
(resp. in
). Then it lifts to strict monoidal functor
(resp.
), such that the following diagram on the left (resp. on the right) commutes:
Notation 2
The notation for the liftings in Lemma 3 is easy to remember: The arrow over
looks like a stylized function, while the hat over
looks like a sylized span.
The lifting of Lemma 3 is quite well-behaved. First of all, it is worth stressing how it preserves some relevant categorical properties:
Lemma 4
For any map
in
(respectively in
), the functor F is faithful if and only if
is faithful (resp.
is faithful). If F is full, then so is
(resp.
).
Having ascertained that “basic” categorical properties are preserved, it is worth asking what happens to particular classes of functors in
and
, respectively.
Following [1], there are three relevant kinds of morphisms in a category of Petri nets with semantics. On one hand there are transition-preserving functors, which represent morphisms of free monoidal categories arising purely from the topological structure of their underlying net. On the other there are functors representing glueings of nets, which are themselves divided into synchronizations (defined in terms of addition and erasing of generators, that is, double pushouts) and identifications (defined in terms of pushouts). Let us investigate which ones of these properties are preserved.
Definition 7
A strict symmetric monoidal functor F between FSSMCs
,
is said to be transition-preserving when each generating morphism f of
is mapped to
for some generating morphism g of
and symmetries
.
Lemma 5
If F is transition-preserving, so are
and
.
Lemma 6
If F is injective on objects, so are
and
.
Another interesting class of morphisms is identifications:
Definition 8
A Petri net
is said to be an identification of
if there is a morphism
such that:
There is a Petri net O, and a pair of transition-preserving functors
;
; andF is the coequalizer of l and r.
Identifications are also preserved. The ultimate reason for this is that identifications are defined purely in terms of coequalizers of transition-preserving functors, which are preserved by the Grothendieck construction.
Lemma 7
If
is an identification of
via F and witnesses O, l, r, then
is an identification of
via
and witnesses
. The span case is analogous.
Preservation of identifications also entails that addition of generators for a net are preserved by internalizations.
Definition 9
A net
is an addition of generating morphisms to
via
W, w if:
There is a net W together with a strict monoidal functor
which sends generating objects to generating objects, is injective on objects and faithful;
is the pushout of
and
, where
denotes the net with the same places of W and no transitions; and
arises from the universal property of the pushout.
Lemma 8
Let
be an addition of generating morphisms to
via W, w. Then
is an addition of generating morphisms to
via
. The span case is analogous.
Finally, we investigate what happens when considering erasings of generators from a net. To do this, we first follow [1] to define subnets:
Definition 10
Given Petri nets
, we say that
is a subnet of
N if its places and transitions are a subset of places and transitions of N, and input and output functions on
are restrictions of the input and output functions on N. If
is a subnet of N, then there is an obvious identity on objects, identity on morphisms strict monoidal functor,
between their associated free symmetric strict monoidal categories. From this, we say that a net
is a subnet of
if
is a subnet of N and
.
This enables us to define erasings of generators:
Definition 11
Let
be a subnet of
. An erasing of generators of
via
is a net
such that:
is a subnet of
;
, where
denotes the net with the same places of
and no transitions, is a subnet of
; and
is the pushout of
; and
.
Indeed, erasings of generators are preserved as well by our internalization:
Lemma 9
Let
be an erasing of generating morphisms from
via a subnet
. Then
is an erasing of generators from
via
. The span case is analogous.
Surprisingly, even if erasing and addition of generators are preserved by internalizations, synchronizations are not. Indeed, following [1],
is a synchronization of
via W, w when
is defined to be the result of applying the following double pushout rewrite rule to
:
Here, we require that w factorizes through
. In internalizing this construction the pushouts are preserved, but the rewrite rule is not! This becomes evident by lifting the definition of synchronization altogether, where in the following diagram we are sticking to the notation developed in [1]:
The black arrows are just the definition of synchronization. The dotted arrows denote the pushout arrows, while the dashed arrows arise from the universal property of the pushout. The maroon arrows and objects represent the Grothendieck construction and the lifting of the functors obtained from Lemma 3, while the
s stand for the functors obtained in Lemma 2, where we omitted subscripts to avoid clutter.
As one can see the pushout squares are both preserved, but
is not a synchronization of
via
since
In other words,
is too big of a subcategory of
to make
into a synchronization. An analogous observation holds for spans.
Counterexample 2
(Synchronizations not preserved). We provide a practical counterexample of why synchronizations are not preserved by internalizations. Consider the following nets, where we are borrowing the graphical notation developed in [1], decorating net elements with their images in
.
At the base level we have two nets, M on the left and N on the right. Eliding the functor
, the places of N are mapped to sets:
While transitions are mapped to partial functions
and
, defined as follows:
![]() |
M is clearly a synchronization of N via F: The generators f and g have been erased and a generator corresponding to
has been added. Taking the Grothendieck construction on M and N (top left and top right in the figure, respectively), we see how the erasing of generators is problematic: The morphism g in N branches into
and
in
, of which only
forms a path with f(x). In lifting the synchronization M to
, we would expect
and f(x) to be erased and conflated into
, whereas
stays. But this is not the case, since in M the generator g has already been erased “before being allowed to branch”, taking
with it when we take
!
As we said before, this ultimately depends on the fact that the internalization of the subnet provided by the synchronization witness contains too many morphisms, and ends up erasing more generators than we would like it to.
Internalization as a Functor
In this final section, we put together some of the properties we have proved so far about internalizations, and prove that internalization is a functor. The intuitive argument behind the results that are about to follow is this: If
internalizes the semantics of
, in either the case
or
, then
should be considered as “just a ne”, that is, an object of
; see Example 1.
Putting together results about lifting of functors obtained in the previous section, we are indeed able to prove this.
Theorem 3
Denote with
the terminal category, together with the trivial symmetric monoidal structure on it. There is a faithful, strong monoidal functor
defined as follows:
On objects, it sends
to
.
Similarly, there is a faithful, strong monoidal functor
defined as follows:
On objects, it sends
to
.
Finally, it is worth nothing that for each choice of semantics
there is another obvious functor from
to
, which just forgets the semantics altogether. It is worth asking how this functor and the ones provided in Theorem 3 are related.
Proposition 1
Denote with
![]() |
the “forgetful” functors defined by sending each Petri net
to
. Then there are natural transformations:
Conclusion and Future Work
In this work, we described guarded Petri nets as Petri nets endowed with a functorial semantics. We provided two different styles of semantics: a deterministic one, realized using the category of sets and partial functions, and a non-deterministic one that allows for side effects, realized using the category of partial functions and that of spans.
We moreover showed how, using the Grothendieck construction, the guards can be internalized, obtaining a Petri net whose reachability relation is equivalent to the one of the guarded one. We proved that internalizations have nice properties, and the internalization construction is functorial in the choice of the guarded net we start from.
Regarding directions of future work, a pretty straightforward thing to do would be to figure out which semantics, other than
and
, are internalizable. That is, if
is a symmetric monoidal functor, which properties do
and F need to have so that
is a free symmetric strict monoidal category.
Acknowledgements
David Spivak acknowledges support from Honeywell Inc. as well as from AFOSR grants FA9550-17-1-0058 and FA9550-19-1-0113. Fabrizio Genovese wants to thank his fellow team members at Statebox for useful discussion and support.
Appendix – Proofs
Lemma 1.
In the case of both
and
, the category
has a strict symmetric monoidal structure.
Proof
We start with the case of
. Since
is strict monoidal,
. Thus on objects, we can set
. On morphisms, we just use the monoidal product
from
. The monoidal unit is
, where I is the monoidal unit of
and
is the unique element of the monoidal unit
of
. The rest of the proof is a straightforward check.
Now we consider the case of
. On objects, we set again
. On morphisms, we set
, where
is as in
and (s, t) is the pair of span-apex elements:
The monoidal unit is
, where I is the monoidal unit of
and
is the unique element of the monoidal unit
of
.
The remainder of the proof is as in the previous case. 
Theorem 1.
In both the case of
and of
the strict symmetric monoidal category
is free.
Proof
We start with the case of
. Consider the free symmetric strict monoidal category
generated as follows:
Object generators are pairs (X, x), with X object generator in
and
;A morphism generator
is a morphism generator
of
such that
.
We want to prove that
and
are isomorphic.
First, let (X, x) be an object in
. Then X is an object of
, which is free, and hence we have
for generating objects
in
. By definition, we have
. Being
strict, this means:
![]() |
Hence (X, x) =
, and the object generators of
are the pairs (X, x) with X object generator in
and
. This means that there is a bijection on objects of
and
:
![]() |
We can then define a symmetric monoidal functor
that is bijective on objects, and sends a generating morphism
of
to the morphism
in
.
We want to prove that T is full and faithful. Faithfulness is obvious; given
in
, if
then in particular
in
. It follows from the fact that
is at most single-valued – i.e.
and
imply
– that
also in
. For fullness, take a morphism
in
, and notice the following:
- If
is equal to
, where
and
, then we have:
So there is a
such that
and
. This means that
and
are morphisms in
; - If
is equal to
, where
and
, then we have:
This means that
and
, and hence that
and
are morphisms in
.
By definition, since
is free, any morphism
can be decomposed into a composition of monoidal products of morphism generators, symmetries and identities. The points above prove that
can be decomposed in the same way, and hence is in the image of T; thus it is full.
Our correspondence is bijective on objects and fully faithful, proving that
and
are isomorphic as categories. Since
is free so is
, completing the proof.
We now consider the case of
. The structure of the proof is similar. Consider the free symmetric strict monoidal category
generated as follows:
Object generators are pairs (X, x), with X object generator in
and
;For each morphism generator
and
such that
, there is a morphism generator
.
We want to prove that
and
are isomorphic.
On objects, the proof of bijectivity is as in the previous case. We can then define a symmetric monoidal functor
that is bijective on objects, and sends a generating morphism
of
to the morphism
in
.
We want to prove that this functor is full and faithful. Faithfulness is again straightforward. Suppose given
in
. By construction,
in
if and only if
in
and
. But this means that
also in
.
For fullness, take a morphism
in
, and notice the following:
Each morphism (f, s) such that f is a generator, an identity or a symmetry in
is also in
;If
is such that
, where
and
, then by definition of composition in
, we have
for some t, u with
and
. This means that
and
are morphisms in
;- If
is such that
, where
and
, then
for some
, and we have:
This means that
and
, and hence that
and
are morphisms in
.
By definition, since
is free, any morphism f can be decomposed into a composition of monoidal products of morphism generators, symmetries and identities. The points above prove that each of such morphisms is also in
, and hence in
. So f in
is the image of f in
, and the functor is full.
Since our correspondence is bijective on objects and fully faithful, this proves that
and
are isomorphic as categories. Since
is free so is
, completing the proof. 
Theorem 2.
Let
be a guarded Petri net (with side effects). (Y, y) is reachable from (X, x) if and only if (Y, y) is reachable from (X, x) in the net
.
Proof
By definition (Y, y) is reachable from (X, x) if and only if there is a morphism
in
such that
(resp.
for some
). Again by definition, this means that
(resp.
) is a morphism of
. Since
is free, f (resp.
) can be decomposed as a composition of monoidal products of generating morphisms. But every generating morphism of
corresponds to a transition of
, from which the thesis follows. 
Lemma 5.
If
F
is transition-preserving, so are
and
.
Proof
The proof is obvious considering that, by construction,
is a generator (resp. a symmetry) in
if and only if it is a generator (resp. a symmetry) in
.
An analogous argument holds for
. 
Theorem 3.
Denote with
the terminal category, together with the trivial symmetric monoidal structure on it. There is a faithful, strong monoidal functor
defined as follows:
On objects, it sends
to
.
Similarly, there is a faithful, strong monoidal functor
defined as follows:
On objects, it sends
to
.
Proof
The proofs for
and
are very similar, so we just provide the one for
. Clearly if F is the identity functor
then so is
. For composition, consider
and
. We have to prove that
. On objects,
sends (X, x) in
to
in
, so it coincides with
. Now consider a morphism
in
. This is sent by
to
, and applying
to it one gets
. Since
is
, we are done. This proves that
is a functor. Faithfulness is trivial.
Now we focus on monoidality. First of all we have to prove that
![]() |
Remembering from Definition 1 that for each choice of semantics
the monoidal structure on
is defined in terms of coproduct of symmetric monoidal categories, and hence from the coproduct of the underlying nets, this means that:
![]() |
Since
preserves isomorphisms and coproducts, it is sufficient to prove:
![]() |
By definition, objects of
are pairs (X, x) with
and
. This is clearly isomorphic to
.- Again by definition, we have
This follows noting that by definition the set of morphisms of
is the disjoint union of the sets of morphisms of
and
.
Then we have to prove that
. Unrolling definitions this amounts to prove that
, which is obvious.
Finally, we need to prove that
preserves the monoidal unit. Notice that for each choice of semantics
the monoidal unit in
is taken to be
.
is the free category consisting of only the monoidal unit I, and
sends the monoidal unit to the monoidal unit and its identity to itself. In our case, the monoidal unit of
is
, with
sending the monoidal unit of
to the singleton set
in
. In particular, this means that
, proving that
![]() |

Proposition 1. Denote with
the functors defined by sending each Petri net
to
. Then there are natural transformations:
Proof
For each object
in
, we set
![]() |
to be the functor
, where
is defined as in Lemma 3. The naturality condition follows from Lemma 3 as well. The span case is analogous. 
Footnotes
A computable span is one for which both legs are computable functions.
To be absolutely precise, we are referring to the functor
.
To be absolutely precise, we are referring to the functor
.
To be absolutely precise, we are referring to the functor
.
To be absolutely precise, we are referring to the functor
.
Contributor Information
Fabio Gadducci, Email: gadducci@di.unipi.it.
Timo Kehrer, Email: timo.kehrer@informatik.hu-berlin.de.
Fabrizio Genovese, Email: research@statebox.io.
David I. Spivak, Email: dspivak@mit.edu
References
- 1.Genovese, F.: The essence of petri net gluings. http://arxiv.org/abs/1909.03518
- 2.Genovese, F., Herold, J.: Executions in (semi-)integer petri nets are compact closed categories, vol. 287, pp. 127–144. 10.4204/EPTCS.287.7
- 3.Jensen K, Kristensen LM. Coloured Petri Nets. Berlin and Heidelberg: Springer; 2009. [Google Scholar]
- 4.MacLane S, Moerdijk I. Sheaves in Geometry and Logic, a First Introduction to Topos Theory, Universitext. Heidelberg: Springer; 1994. [Google Scholar]
- 5.Master, J.: Generalized petri nets. http://arxiv.org/abs/1904.09091
- 6.Meseguer, J., Montanari, U.: Petri nets are monoids. 88(2), 105–155. 10.1016/0890-5401(90)90013-8
- 7.Petri, C., Reisig, W.: Petri net. http://www.scholarpedia.org/article/Petri_net
- 8.Sassone V. On the category of Petri net computations. In: Mosses PD, Nielsen M, Schwartzbach MI, editors. TAPSOFT ’95: Theory and Practice of Software Development; Heidelberg: Springer; 1995. pp. 334–348. [Google Scholar]
- 9.Statebox Team: The mathematical specification of the statebox language. http://arxiv.org/abs/1906.07629
- 10.Statebox Team: Statebox github page. https://github.com/statebox/




















