<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Python Library for Declarative Process Mining</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ivan Donadello</string-name>
          <email>ivan.donadello@unibz.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ph.D.</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Riva</string-name>
          <email>Francesco.Riva@unibz.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabrizio Maria Maggi</string-name>
          <email>maggi@inf.unibz.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ph.D.</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aladdin Shikhizada</string-name>
          <email>aladdin.shikhizada@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Declare, Conformance Checking, Process Discovery</institution>
          ,
          <addr-line>Query Checking, Python API, Declarative Process</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Free University of Bozen-Bolzano</institution>
          ,
          <addr-line>Bolzano</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Visioncraft OÜ</institution>
          ,
          <addr-line>Tallin</addr-line>
          ,
          <country country="EE">Estonia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <fpage>11</fpage>
      <lpage>16</lpage>
      <abstract>
        <p>In process mining, procedural process models can be dificult to manage when the process is unpredictable and characterized by many possible exceptions since they can easily become unreadable. Declarative languages, instead, model the process by imposing logical constraints on the process behavior and are suitable to represent variable processes in a compact way. Declare is the reference declarative language in the BPM community. Although several Java tools are available for process analysis based on Declare, a library implementing process mining tasks with Declare in Python is still missing. Therefore, in this paper, we present Declare4Py, the first Python package that ofers support for declarative process mining. Declare4Py includes methods for conformance checking, process discovery and query checking.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Mining</p>
    </sec>
    <sec id="sec-2">
      <title>1. Introduction</title>
      <p>
        Process mining [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] focuses on the analysis of business processes based on event logs that contain
information about the process executions. A key component in process mining is a process model
that is a formal representation of the process in a standard format. Procedural models require
to define the whole control-flow of the process step-by-step thus making procedural process
mining not suitable for processes with a high number of diferent branches and exceptions.
Declarative process models are, instead, easier to manage as they just encode a set of constraints
that the process should follow. While procedural models can be designed and analyzed using
several available commercial and academic process mining tools12345, this variety is lacking for
CEUR
declarative models where only few (Java-based) tools and libraries are available6 [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ].
      </p>
      <p>
        In this paper, we present Declare4Py, a novel and easy-to-use Python library that implements a
set of APIs covering the main declarative process mining tasks based on Declare [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In particular,
the language employed is MP-Declare [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], the multi-perspective extension of Declare that
supports data- and time-aware constraints along with control-flow constraints. Our contribution
to the BPM community is the first Python library with APIs for conformance checking, process
discovery and query checking based on Declare models. Being a Python library, Declare4Py can
be easily integrated with the main Machine Learning frameworks such as SKlearn, Tensorflow
and Pytorch, and, as a library, can be easily invoked via code to conduct large experimentations.
We also stress the fact that the query checking functionality provided by Declare4Py is novel and
not available in the existing tools for declarative process mining. We compared the Declare4Py
performance with RuM [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], a Java-based tool for declarative process mining on the core task of
conformance checking, achieving better computational times.
      </p>
      <p>This first release of Declare4Py is online in a GitHub repository available at https://github.
com/francxx96/declare4py. The repository contains the code and some tutorials in Jupyter
notebooks (https://github.com/francxx96/declare4py/tree/main/tutorials) showing how to use
Declare4Py using the well-known Sepsis cases log.7 A video that overviews the package is
available at https://youtu.be/hJhgoqFLM7s.</p>
    </sec>
    <sec id="sec-3">
      <title>2. Overview of the Declare4Py Features</title>
      <p>
        Declare4Py has been designed to analyze event logs using declarative, constraint-based process
models. It relies on well-known standards for input and output files, such as XES [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for event
logs and d e c l [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] for the Declare models. This ensures its interoperability with other libraries
and tools.
      </p>
      <p>
        We briefly recall here some preliminary definitions. A trace  is an execution of a business
process. A trace contains a sequence of events where each event is related to the execution of
an activity  ∈  (with  the set of all possible activities), performed at time  with a (possible)
set of other attributes a.k.a. the payload of the event. A Declare model ℳ = { 1,  2, …} is a
set of Declare constraints instantiation of parameterized templates [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We indicate the set of
Declare templates with  . A trace satisfies a Declare model ( ⊧ ℳ ), when the trace satisfies
each constraint  ∈ ℳ , i.e., ∀ ∈ ℳ,  ⊧  . A log  is a multi-set of traces.
      </p>
      <p>
        Conformance Checking. Given a log  of traces   and an MP-Declare model ℳ, the
conformance checking task checks, for all the traces   ∈  , whether, for all constraints  ∈ ℳ ,   ⊧ 
holds. Declare4Py implements the conformance checking task using the approach presented
in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] that takes an MP-Declare model and a log as inputs and returns the number of activations,
fulfillments, and violations for each constraint in the input model and for each trace in the input
log. These results are listed in a Python data structure indexed by trace identifier. Therefore,
the user can easily query such data structure to retrieve or aggregate information.
6rulemining.org
7https://data.4tu.nl/articles/dataset/Sepsis_Cases_-_Event_Log/12707639
Process Discovery. Given a log  of traces   and a support threshold ℎ  , the process
discovery task returns a Declare8 model ℳ of constraints satisfied by a percentage of traces in 
higher than or equal to ℎ  . More formally:
ℳ = { ∶ |{ ∈  ∶  ⊧ }|/|| ≥ ℎ
 }.
      </p>
      <p>
        (1)
Declare4Py implements the approach presented in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] that consists of two steps, i.e., (1) the
discovery of frequent (pairs of) activities from  ; (2) the construction of ℳ from this set. The
set of frequent (pairs of) activities from  is built with the Apriori algorithm [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] by computing
the frequent itemsets of activities of length 1 and 2. These itemsets are used to build a set of
candidate Declare constraints  obtained by instantiating the templates in  with the activities
belonging to each itemset. ℳ ⊆  is then computed by selecting the constraints  ∈  such that
|{ ∈  ∶  ⊧ }|/|| ≥ ℎ  . The results are returned in a Python data structure containing, for
each constraint in ℳ, the traces that satisfy it. A Declare4Py function allows the user to filter
such data structure to retrieve the most relevant (i.e., the most frequently satisfied) constraints.
The discovered model can be exported as a d e c l file.
      </p>
      <p>Query Checking. This task takes as input a log  of traces   , a support threshold ℎ  , and
an MP-Declare query  , i.e., an MP-Declare constraint in which the activation and/or the
target activity are unspecified. For example, constraint Response( ? , ER Triage)9 contains a
placeholder for the activation activity, whereas Response(? , ? ) contains placeholders for both
activation and target. Let    be the set of placeholders of a Declare query and  ∶    → 
be an assignment function that assigns placeholders to activities. The query checking task
returns the set of assignments Λ = { 1,  2, …} such that the input query  instantiated using the
assignments in Λ is satisfied by a percentage of traces in  higher than or equal to ℎ  . More
formally:
Λ = {  ∶ |{ ∈  ∶  ⊧ [
 ]}|/|| ≥ ℎ  }.</p>
      <p>(2)
Declare4Py returns a data structure containing the assignments.</p>
    </sec>
    <sec id="sec-4">
      <title>3. Performance</title>
      <p>
        We tested the computational time performance of Declare4Py on the above tasks under diferent
conditions using the Sepsis cases log7 and the log provided for the annual Business Process
Intelligence Challenge (BPIC) in 202010. The core task is conformance checking as process
discovery and query checking are built on top of it. Therefore, we compared the conformance
checking task (based on [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]) implemented both in Declare4Py and in RuM [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], increasing the
number of Declare constraints in the input model. The performance of the discovery and
the query checking tasks is, instead, computed for diferent support values ranging in the set
8The process discovery functionality, diferently from the conformance checking and the query checking tasks, is
data-agnostic.
9For simplicity, we do not define data and time conditions in this example. However, fully defined data and time
conditions can be specified in the query.
10http://icpmconference.org/2020/wp-content/uploads/sites/4/2020/03/InternationalDeclarations.xes.gz
Model discovery - Sepsis log
      </p>
      <p>Query checking - Sepsis log
1 variable
2 variables
4</p>
      <p>Conformance checking - Sepsis log
RuM</p>
      <p>Declare4Py
20
3N0umber of40model co5n0straints 60</p>
      <p>70
Conformance checking - BPIC 2020 log</p>
      <p>RuM
Declare4Py
30
{0.2, 0.4, 0.6, 0.8}.11 For query checking, we used the Chain Response template and performed
two tests. In the first one, we fixed the activation activity leaving the target unspecified; in the
second test, we left both the activation and the target activities unspecified.</p>
      <p>The results of our experiments are reported in Figure 1. Declare4Py presents slightly lower
computational times with respect to RuM for conformance checking on small models. However,
as the model grows in the number of constraints, the computational times diverge. This is
particularly evident in the BPIC 2020 case. The computational time for the discovery and the
query checking tasks decreases when the support increases, since a higher support implies less
candidates to check. The computational time for the query checking task is obviously higher
when two placeholders have to be assigned.</p>
    </sec>
    <sec id="sec-5">
      <title>4. Maturity and Future Remarks</title>
      <p>
        Declare4Py has been used for deviance mining in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and as a tool for a new feature encoding
for business process analysis using Machine Learning methods [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. This first release can be
improved both in terms of performance and number of functionalities. As future work, we
plan to increase the Declare4Py performance by implementing optimization techniques, such
as multi-threading, and by using the Numba library,12 which translates, at runtime, Python
code into optimized machine code by using the industry-standard LLVM [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The Declare4Py
functionalities will be improved by including state-of-the-art process mining algorithms. For
11In this case, a comparison with RuM would not be fair as this tool implements the optimization technique based
on multi-threading, presented in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], which is currently not developed in Declare4Py.
12https://numba.pydata.org/
conformance checking, we plan to include the techniques presented in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], while,
for process discovery, we will implement the techniques introduced in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>The work of Francesco Riva is supported by the UNIBZ project PRISMA.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
          </string-name>
          , Process Mining - Data Science in Action, Springer,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Alman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Ciccio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Haas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nolte</surname>
          </string-name>
          ,
          <article-title>Rule mining with RuM</article-title>
          ,
          <source>in: 2nd International Conference on Process Mining, ICPM</source>
          <year>2020</year>
          ,
          <year>2020</year>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Ciccio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mecella</surname>
          </string-name>
          ,
          <article-title>On the discovery of declarative control flows for artful processes</article-title>
          ,
          <source>ACM Trans. Manag. Inf. Syst</source>
          .
          <volume>5</volume>
          (
          <year>2015</year>
          )
          <volume>24</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>24</lpage>
          :
          <fpage>37</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Pesic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Schonenberg</surname>
          </string-name>
          ,
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
          </string-name>
          ,
          <article-title>DECLARE: full support for looselystructured processes</article-title>
          , in: EDOC, IEEE Computer Society,
          <year>2007</year>
          , pp.
          <fpage>287</fpage>
          -
          <lpage>300</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Burattin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sperduti</surname>
          </string-name>
          ,
          <article-title>Conformance checking based on multi-perspective declarative process models</article-title>
          ,
          <source>Expert Syst. Appl</source>
          .
          <volume>65</volume>
          (
          <year>2016</year>
          )
          <fpage>194</fpage>
          -
          <lpage>211</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Gunther</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Verbeek</surname>
          </string-name>
          ,
          <article-title>XES-standard definition (</article-title>
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Skydanienko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Francescomarino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ghidini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <article-title>A tool for generating event logs from multi-perspective declare models</article-title>
          , in: BPM (Dissertation/Demos/Industry), volume
          <volume>2196</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>115</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. P. J. C.</given-names>
            <surname>Bose</surname>
          </string-name>
          ,
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
          </string-name>
          ,
          <article-title>Eficient discovery of understandable declarative process models from event logs</article-title>
          , in: CAiSE,
          <year>2012</year>
          , pp.
          <fpage>270</fpage>
          -
          <lpage>285</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Srikant</surname>
          </string-name>
          ,
          <article-title>Fast algorithms for mining association rules in large databases</article-title>
          ,
          <source>in: VLDB</source>
          ,
          <year>1994</year>
          , pp.
          <fpage>487</fpage>
          -
          <lpage>499</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Ciccio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Francescomarino</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          <article-title>Kala, Parallel algorithms for the automated discovery of declarative process models</article-title>
          ,
          <source>Inf. Syst</source>
          .
          <volume>74</volume>
          (
          <year>2018</year>
          )
          <fpage>136</fpage>
          -
          <lpage>152</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergami</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Francescomarino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ghidini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Puura</surname>
          </string-name>
          ,
          <article-title>Exploring business process deviance with sequential and declarative patterns</article-title>
          ,
          <source>CoRR abs/2111</source>
          .12454 (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Francescomarino</surname>
          </string-name>
          , I. Donadello,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ghidini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          , W. Rizzi,
          <article-title>Making sense of temporal data: the DECLARE encoding, in: PMAI@IJCAI, CEUR-WS</article-title>
          .org,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Jung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Regehr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. P.</given-names>
            <surname>Lopes</surname>
          </string-name>
          ,
          <article-title>Reconciling high-level optimizations and low-level code in LLVM, Proc</article-title>
          .
          <source>ACM Program. Lang</source>
          .
          <volume>2</volume>
          (
          <year>2018</year>
          )
          <volume>125</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>125</lpage>
          :
          <fpage>28</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>M. de Leoni</surname>
            ,
            <given-names>F. M.</given-names>
          </string-name>
          <string-name>
            <surname>Maggi</surname>
            ,
            <given-names>W. M. P. van der Aalst</given-names>
          </string-name>
          ,
          <article-title>Aligning event logs and declarative process models for conformance checking</article-title>
          ,
          <source>in: BPM</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>82</fpage>
          -
          <lpage>97</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergami</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Marrella</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Montali</surname>
          </string-name>
          ,
          <article-title>Aligning data-aware declarative process models and event logs</article-title>
          ,
          <source>in: BPM</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>235</fpage>
          -
          <lpage>251</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Ciccio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mendling</surname>
          </string-name>
          ,
          <article-title>Eficient discovery of target-branched Declare constraints</article-title>
          ,
          <source>Inf. Syst</source>
          .
          <volume>56</volume>
          (
          <year>2016</year>
          )
          <fpage>258</fpage>
          -
          <lpage>283</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>V.</given-names>
            <surname>Leno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. La</given-names>
            <surname>Rosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Polyvyanyy</surname>
          </string-name>
          ,
          <article-title>Automated discovery of declarative process models with correlated data conditions</article-title>
          ,
          <source>Inf. Syst</source>
          .
          <volume>89</volume>
          (
          <year>2020</year>
          )
          <fpage>101482</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>