4.1.8.2. causality/DGPetri

class mod.DGPetriNet

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 if dg is None.

Raises

LogicError if neither dg.hasActiveBuilder nor dg.locked.

dg

(Read-only) The underlying derivation graph.

Type

DG

syncSize()

Enlarges the internal data structures to the current size of the underlying derivation graph.

getPostPlaces(e)
Parameters

e (DGHyperEdge) – the hyperedge to find unique targets for.

Returns

a list of unique targets for the given hyperedge.

Return type

list[DGVertex]

Requires syncSize() to have been called since the last time the underlying derivation graph has changed size.

class mod.DGPetriNetMarking

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 (DGPetriNet) – the Petri net to construct a marking for.

Raises

LogicError if net is None.

net

(Read-only) The underlying Petri net.

Type

DGPetriNet

syncSize()

Enlarges the internal data structures to the current size of the underlying derivation graph.

Calls net.syncSize().

__eq__()
add(v, c)

Add c tokens on the place v.

Parameters
  • v (DGVertex) – the place to add tokens to.

  • c (int) – the amount of tokens to add.

Returns

the new total token count on v.

Return type

int

Raises

LogicError if not v.

Raises

LogicError if v.dg != self.net.dg.

Throws

LogicError if c < 0.

Requires syncSize() to have been called since the last time the underlying derivation graph has changed size.

remove(v, c)

Remove c tokens from the place v.

Parameters
  • v (DGVertex) – the place to remove tokens from.

  • c (int) – the amount of tokens to remove.

Returns

the new total token count on v.

Return type

int

Raises

LogicError if not v.

Raises

LogicError if v.dg != self.net.dg.

Throws

LogicError if c < 0.

Throws

LogicError if not enough tokens are left to remove all c.

Requires syncSize() to have been called since the last time the underlying derivation graph has changed size.

__getitem__(v)
Parameters

v (DGVertex) – the place to remove tokens from.

Returns

the token count for v.

Return type

int

Raises

LogicError if not v.

Raises

LogicError if v.dg != self.net.dg.

Requires syncSize() to have been called since the last time the underlying derivation graph has changed size.

numTokens

(Read-only) The total number of tokens in the marking.

Type

int

getAllEnabled()
Returns

a list of all hyperedges currently enabled for firing.

Return type

list[DGHyperEdge]

getNonZeroPlaces()
Returns

a list of all vertices with tokens.

Return type

list[DGVertex]

getEmptyPostPlaces(e)
Parameters

e (DGHyperEdge) – 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

list[DGVertex]

Raises

LogicError if not e.

Raises

LogicError if e.dg != self.net.dg.

isEnabled(e)
Parameters

e (DGHyperEdge) – the edge to query for being enabled.

Returns

whether the given hyperedge is enabled for firing.

Return type

bool

Raises

LogicError if not e.

Raises

LogicError if e.dg != self.net.dg.

fire(e)
Parameters

e (DGHyperEdge) – the edge to fire.

Raises

LogicError if not e.

Raises

LogicError if e.dg != self.net.dg.

Raises

LogicError if not self.isEnabled(e).