4.1.8.4. 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.- __init__(dg)¶
Calls
syncSize()
.- Parameters:
dg (DG) – the derivation graph to adapt.
- Returns:
a new Petri net, adapting the given derivation graph.
- Raises:
LogicError
ifdg
isNone
.- Raises:
LogicError
if neitherdg.hasActiveBuilder
nordg.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.- __init__(net)¶
- Parameters:
net (Net) – the Petri net to construct a marking for.
- Raises:
LogicError
ifnet
isNone
.
- 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:
LogicError
ifnot v
.- Raises:
LogicError
ifv.dg != self.net.dg
.- Raises:
LogicError
ifc < 0
.- Raises:
LogicError
if g is None.- Raises:
LogicError
if !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:
LogicError
ifnot v
.- Raises:
LogicError
ifv.dg != self.net.dg
.- Raises:
LogicError
ifc < 0
.- Raises:
LogicError
if not enough tokens are left to remove allc
.- Raises:
LogicError
if g is None.- Raises:
LogicError
if !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:
LogicError
ifnot v
.- Raises:
LogicError
ifv.dg != self.net.dg
.- Raises:
LogicError
if g is None.- Raises:
LogicError
if !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:
LogicError
ifnot e
.- Raises:
LogicError
ife.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:
LogicError
ifnot e
.- Raises:
LogicError
ife.dg != self.net.dg
.
- fire(e)¶
- Parameters:
e (DG.HyperEdge) – the edge to fire.
- Raises:
LogicError
ifnot e
.- Raises:
LogicError
ife.dg != self.net.dg
.- Raises:
LogicError
ifnot self.isEnabled(e)
.