| 
 
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.
   
 |