It is unclear to me what rule the inductive miner directly-follows in ProM 6 (IMd) follows in order to decide whether sub trees embedded under a parallel operator should be optional, i. e. embedded under an XOR(tau,...) construct.
The current behavior seems a bit inconsistent. I have not found anything about this in Sander Leemans' thesis, which I regard as the specification of this plugin.
I'm asking for clarification of the rule that IMd follows here. Consider the following log involving parallelism over activities a and b:
Plugin Inductive Miner directly follows generates the process tree PARA(a,b). Although from looking at the log one might prefer PARA(XOR(a,tau),XOR(b,tau)), the simpler solution is correct because the directly-follows graphs of those two process trees are indistinguishable.
Now let's replace the single tasks with embedded self-loops:
From IMd's behavior in the previous example I would have expected the tree PARA(LOOP(a,tau),LOOP(b,tau)).
But in this case, although the process trees are again undistinguishable, ProM decides to make the construct embedded under the parallel gateway optional, giving us PARA(XOR(LOOP(a,tau),tau),XOR(LOOP(b,tau),tau)).
I can't see what might cause this difference in behavior. There must be some rule about cut detection, log splitting or tree normalization that explains this surprising inconsistency, but I can't find it. Can anyone point it out to me?