  Process discovery aims to discover models that can explain the behaviors of
event logs extracted from information systems. While various approaches have
been proposed, only a few guarantee desirable properties such as soundness and
free-choice. State-of-the-art approaches that exploit the representational bias
of process trees to provide the guarantees are constrained to be
block-structured.Such constructs limit the expressive power of the discovered
models, i.e., only a subset of sound free-choice workflow nets can be
discovered. To support a more flexible structural representation, we aim to
discover process models that provide the same guarantees but also allow for
non-block structures. Inspired by existing works that utilize synthesis rules
from the free-choice nets theory, we propose an automatic approach that
incrementally adds activities to an existing process model with predefined
patterns. Playing by the rules ensures that the resulting models are always
sound and free-choice. Furthermore, the discovered models are not restricted to
block structures and are thus more flexible. The approach has been implemented
in Python and tested using various real-life event logs. The experiments show
that our approach can indeed discover models with competitive quality and more
flexible structures compared to the existing approach.
