4.1.8.3. causality/Petri¶
- class causality.Net¶
Adaptation of a derivation graph into a Petri net. Importantly, if the underlying derivation graph is enlarged then
syncSize()must be called before calling certain other methods on the object.Added in version 1.1.
Todo
check version added before release
- __init__(dg)¶
Calls
syncSize().- Parameters:
dg (DG) – the derivation graph to adapt.
- Returns:
a new Petri net, adapting the given derivation graph.
- Raises:
LogicErrorifdgisNone.- Raises:
LogicErrorif neitherdg.hasActiveBuildernordg.locked.
- syncSize()¶
Enlarges the internal data structures to the current size of the underlying derivation graph.
- getPostPlaces(e)¶
- Parameters:
e (DG.HyperEdge) – the hyperedge to find unique targets for.
- Returns:
a list of unique targets for the given hyperedge.
- Return type:
Requires
syncSize()to have been called since the last time the underlying derivation graph has changed size.
- class causality.Marking¶
Representation of a marking on a Petri net. Importantly, if the underlying derivation graph is enlarged then
syncSize()must be called before calling certain other methods on the object.Added in version 1.1.
Todo
check version added before release
- __init__(net)¶
- Parameters:
net (Net) – the Petri net to construct a marking for.
- Raises:
LogicErrorifnetisNone.
- syncSize()¶
Enlarges the internal data structures to the current size of the underlying derivation graph.
Calls
net.syncSize().
- __eq__()¶
- add(v, c)¶
- add(g, c)
Add c tokens on the place v. The second version is equivalent to
self.add(self.net.dg.findVertex(g), c).- Parameters:
- Returns:
the new total token count on v.
- Return type:
- Raises:
LogicErrorifnot v.- Raises:
LogicErrorifv.dg != self.net.dg.- Raises:
LogicErrorifc < 0.- Raises:
LogicErrorif g is None.- Raises:
LogicErrorif !self.net.dg.findVertex(g).
Requires
syncSize()to have been called since the last time the underlying derivation graph has changed size.
- remove(v, c)¶
- remove(g, c)
Remove c tokens from the place v. The second version is equivalent to
self.remove(self.net.dg.findVertex(g), c).- Parameters:
- Returns:
the new total token count on v.
- Return type:
- Raises:
LogicErrorifnot v.- Raises:
LogicErrorifv.dg != self.net.dg.- Raises:
LogicErrorifc < 0.- Raises:
LogicErrorif not enough tokens are left to remove allc.- Raises:
LogicErrorif g is None.- Raises:
LogicErrorif !self.net.dg.findVertex(g).
Requires
syncSize()to have been called since the last time the underlying derivation graph has changed size.
- __getitem__(v)¶
- __getitem__(g)
- Parameters:
- Returns:
the token count for v. The second version is equivalent to
self[self.net.dg.findVertex(g)].- Return type:
- Raises:
LogicErrorifnot v.- Raises:
LogicErrorifv.dg != self.net.dg.- Raises:
LogicErrorif g is None.- Raises:
LogicErrorif !self.net.dg.findVertex(g).
Requires
syncSize()to have been called since the last time the underlying derivation graph has changed size.
- getAllEnabled()¶
- Returns:
a list of all hyperedges currently enabled for firing.
- Return type:
- getEmptyPostPlaces(e)¶
- Parameters:
e (DG.HyperEdge) – the edge to query for empty post places.
- Returns:
a list of all target vertices of the given hyperedge that do not have any tokens. The list represents a set, so if vertex is a target multiple times it will only be included once.
- Return type:
- Raises:
LogicErrorifnot e.- Raises:
LogicErrorife.dg != self.net.dg.
- isEnabled(e)¶
- Parameters:
e (DG.HyperEdge) – the edge to query for being enabled.
- Returns:
whether the given hyperedge is enabled for firing.
- Return type:
- Raises:
LogicErrorifnot e.- Raises:
LogicErrorife.dg != self.net.dg.
- fire(e)¶
- Parameters:
e (DG.HyperEdge) – the edge to fire.
- Raises:
LogicErrorifnot e.- Raises:
LogicErrorife.dg != self.net.dg.- Raises:
LogicErrorifnot self.isEnabled(e).