pm4py / pm4py-core

Public repository for the PM4Py (Process Mining for Python) project.
https://pm4py.fit.fraunhofer.de
GNU Affero General Public License v3.0
742 stars 287 forks source link

soundness check PM4Py #122

Closed s-j-v-zelst closed 4 years ago

s-j-v-zelst commented 5 years ago

I do not understand the soundness check in PM4Py. WF net is a graph theoretical property, so that check is easy and seems fine. However, soundness is a behavioral property (which can to some extent be extended to arbitrary Petri nets).

When I browse the code that check whether a given WF-net is sound, I do not observe where the marking is used (i.e. putting 1 token in the initial place). There are ways to check whether a WF net is sound on the basis of its structure, however, one needs to first compute whether the WF net is well-structured, which, as far as I can see is not performed in the code.

Please explain the code and provide a link to the publication of the underlying algorithm

fit-alessandro-berti commented 5 years ago

The article is the following:

https://www.degruyter.com/downloadpdf/j/amcs.2014.24.issue-4/amcs-2014-0068/amcs-2014-0068.pdf

Look at page 5 second column

fit-alessandro-berti commented 5 years ago

The soundness checker has been perfectioned. Now, aside from checking on the Lyapunov stability of the eigenvalues, that is a needed but not enough solution, the following checks are done:

The functioning of the methods has been tested on the models extracted by Alpha Miner, the Inductive Miner on the 10 logs contained in the "input_data" folder. The behavior is the one expected:

Worryngly, the 03-repairExample Alpha model fails only the loop conditions, albeit having several edges from transitions to the sink place. I think I may also need to revise the check on workflow nets, to check if transitions connected to the source place have a single input arc, and transitions connected to the sink place have a single output arc.

UPDATE: fix for workflow checking is also up now.