pm4py.analysis.maximal_decomposition#

pm4py.analysis.maximal_decomposition(net: PetriNet, im: Marking, fm: Marking) List[Tuple[PetriNet, Marking, Marking]][source]#

Calculates the maximal decomposition of an accepting Petri net into its maximal components.

Parameters:
  • net (PetriNet) – The Petri net to decompose.

  • im (Marking) – The initial marking of the Petri net.

  • fm (Marking) – The final marking of the Petri net.

Returns:

A list of tuples, each containing a subnet Petri net, its initial marking, and its final marking.

Return type:

List[Tuple[PetriNet, Marking, Marking]]

import pm4py

net, im, fm = pm4py.read_pnml('model.pnml')
list_nets = pm4py.maximal_decomposition(net, im, fm)
for subnet, subim, subfm in list_nets:
    pm4py.view_petri_net(subnet, subim, subfm, format='svg')