This assignment is about formalising Place/Transition nets and their behaviour in mathematics
and to write a plugin for generating the state space of a Petri net (assuming that
they are 1-bounded, and providing an error message if it turnes out during the state space
generation that this assumption is violated).
- Formalise the concept of Place/Transition nets (with arc-weights). Note that parts of that was done
in the lecture already (syntax); the firing rule needs to be adjusted:
-
Formalise the syntax of Petri nets (which are there in the
meta model of Petri nets) in mathematical terms.
- Formalise the states of a Petri net (in Petri nets often called
marking) in mathematics
(here we still assume that there can be any number of
tokens on a place).
- Formalise when a transition is "enabled" in a state, and what
its successor state is when the transition fires (this is
called the "firing rule" of a Petri net).
- Extend the Petri net editor from Assignment 1
by a popop action
that generates all the reachable states (possibly also the
transitions between them). In order to be sure that there are
only finitely many states, we assume now that there is
always at most one token on each place (this is called
1-boundedness).
The output (displayed in a dialog window) should be the number
of states
and a list of states, from which a firing of a transition would
violate the above 1-boundedness condition.
- Define a data structure for representing the states of the
Petri, which properly implements a hash function and the
equals method accordingly. It might be a good idea to distinguish
one special marking, which indicates the violation of 1-
boundedness.
- Define a function that, for a given marking, calculates all
enabled transitions.
- Define a function that calculates the successor marking, for a
given marking and a transition.
- With the above functions, implement the systematic generation
of the state space.
Make sure that you never add the "same" state twice.
- Implement a popup action that, from a Petri net in the graphical
editor for Petri nets from Assignment 1,
starts the generation of the state space
and, in the end, shows the required information (see above) in a dialog.
|