<!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>
      <journal-title-group>
        <journal-title>S. Haddad, D. Poitrenaud, Recursive petri nets, Acta Informatica</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.1006/inco.1999.2826</article-id>
      <title-group>
        <article-title>Abstraction-Based Deadlock Analysis of Service-Oriented Systems with Recursive Petri Nets</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Erik Jonas Hartnick</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mandy Weißbach</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Computer Science, Martin-Luther-University Halle-Wittenberg</institution>
          ,
          <addr-line>Von-Seckendorf-Platz 1, 06120 Halle (Saale)</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>[4] S. Haddad, D. Poitrenaud, Theoretical Aspects of Recursive Petri Nets</institution>
          ,
          <addr-line>Springer Berlin Heidelberg</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>[5] S. Haddad</institution>
          ,
          <addr-line>D. Poitrenaud, Modelling and Analyzing Systems with Recursive Petri Nets, Springer</addr-line>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>[7] A. Finkel</institution>
          ,
          <addr-line>S. Haddad, I. Khmelnitsky, Coverability and Termination in Recursive Petri Nets, Springer</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <volume>44</volume>
      <issue>2007</issue>
      <abstract>
        <p>Service-oriented systems involve synchronous, asynchronous, and recursive service calls. Existing research has identified limitations in Petri net-based approaches for deadlock detection, particularly in scenarios involving recursive calls. This extended abstract establishes a basis for evaluating the suitability of recursive Petri nets for modeling such interactions and for identifying deadlocks, with an emphasis on recursion-induced cases. The results are expected to demonstrate that the selected modeling approach substantially influences the accuracy of deadlock analysis in service-oriented systems.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Recursion</kwd>
        <kwd>Concurrency</kwd>
        <kwd>Recursive Petri Nets</kwd>
        <kwd>Deadlocks</kwd>
        <kwd>Service-Oriented Systems</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Definition 1 (Marked Recursive Petri Net). A marked recursive Petri net (with initial extended marking
and final extended markings) is the quadruple ⟨, 0,   , ⟩, where
(i)  ≜ ⟨, ,  − ,  +, Ω ⟩ is a recursive Petri net
(ii) 0 ≜ ⟨0, 0, 0, 0⟩ is an initial extended marking of 
(iii)   ≜ { |  = ⟨ ,  ,  ,  ⟩} is a set of final extended markings of  and
(iv)  ≜ ⟨, , , ⟩ is an extended marking of  reachable from 0 by 0→−
,  = 12 · · · .</p>
      <p>The firing of a transition  ∈  , →−  ′ results in a marked recursive Petri net ⟨, 0,   , ′⟩,
provided that  ̸∈   . If  ∈   , execution halts regardless of any enabled transistions. Note that
an initial marking refers to Ω( ) for  ∈ , whereas an initial extended marking refers to 0.
as a thread [4]. A deadlock that is local to a thread  () is therefore termed a threadlock.</p>
      <p>For each vertex  ∈  in an extended marking  of  , the associated marking  () is referred to
 ()() &lt;  − (, ).</p>
      <p>Definition 2 (Threadlock). Let ⟨, 0,   , ⟩ be a marked recursive Petri net with the current
extended marking  ≜ ⟨, , , ⟩ and  ̸∈   . A thread  () of vertex  ∈  in the extended
marking  is in a threadlock, if no transitions  ∈  are enabled in  (), i.e. ∀ ∈  : ∃ ∈  :
by  (). A deadlock in a recursive Petri net can thus be constructed from individual threadlocks.</p>
      <p>A threadlock also constitutes a deadlock in the underlying Petri net ¯  ≜ ⟨, ,  − ,  +⟩, marked
 () is in a threadlock.</p>
      <p>Definition 3 (Deadlock in a RPN). Let ⟨, 0,   , ⟩ be a marked recursive Petri net, let  ≜
⟨, , , ⟩. The marked recursive Petri net is in a deadlock for  if  ̸∈   and for all  ∈  ,</p>
      <p>Based on these two types of deadlocks, the abstraction from the service-oriented language   is
described, as illustrated in Tables Table 1a and Table 1b. For each control flow element shown in the left
column, the corresponding recursive Petri net fragment is depicted in the upper part of the right column,
while a sequence of extended markings is presented in the lower part. To simplify the notation, threads
 () are expressed using process-algebraic expressions of class  according to Mayr’s hierarchy [3],
where place names are separated by the commutative and associative operator ‖.</p>
      <p>The number of occurrences of a place in a process-algebraic expression corresponds to the number of
tokens in that place, representing asynchronous execution in a (,  ) −  . The places  and
 are introduced to ensure that not all tokens from previous places are held until a final transition in
the child thread fires. As a result, an asynchronous procedure call cannot be modeled using an abstract
transition alone. Since recursive Petri nets are bipartite graphs, direct edges between transitions are not
permitted; places  and  must be inserted accordingly.</p>
    </sec>
    <sec id="sec-2">
      <title>Conclusions</title>
      <p>This extended abstract presented an abstraction-based approach to enable deadlock analysis in
serviceoriented architectures. The approach builds on an established programming model introduced in prior
work [2]. A formal definition of deadlocks in recursive Petri nets (RPNs) was developed within the
context of this abstraction. Existing counterexamples must be examined more thoroughly to support the
validation of the proposed method. This will help assess whether the approach extends the expressive
power of existing techniques, even in cases where certain deadlock scenarios—such as threadlocks—may
remain undetected. Future work includes the identification and analysis of additional deadlock types
in RPNs. Moreover, the ability of RPNs to model error handling is to be investigated. Prior studies
have shown that correct modeling of exception handling is only achievable through (G,G)-PRSs [8]. It
remains to be examined whether RPNs exhibit similar capabilities, potentially positioning them between
PANs and (G,G)-PRSs within the Mayr hierarchy [3]. In addition, the backward inclusion relation
between PANs and RPNs will be formally analysed to determine whether PANs form a proper subset
of RPNs. Parallel to these theoretical investigations, tooling support for deadlock analysis in RPNs is
under development, aiming to bridge the gap between theoretical insights and practical application.</p>
      <p>,
( ′ ) ⟶ …</p>
      <p>(  )
(1b) Abstraction of asynchronous procedure call
control flows to recursive Petri nets.</p>
      <sec id="sec-2-1">
        <title>Control flow Representation as RPN</title>
        <p>∶
 ′ ∶
 ∶= ;
…
 1 ∶ if  {
 2 ∶
 3 ∶ } else {
 4 ∶
…
…
…
…
 5 ∶ }
 6 ∶ …</p>
      </sec>
      <sec id="sec-2-2">
        <title>Synchronous</title>
        <p>Procedure  :
 ∶
 ′ ∶
  ∶
  ∶
() ;
…
() {
}
…
return;</p>
        <p>′

⟶ ( ′)

1  2

2  4
    ′
()


⋯

⟶

⟶
⋯
⋯


⟶

⟶3

⟶
⟶4
 3  3
⟶
 ( ′)

(1a) Abstraction of assignment, if-else and
synchronous procedure call control flows to
recursive Petri nets.</p>
        <p>Declaration on Generative AI
The author(s) have not employed any Generative AI tools.</p>
        <p>2009, p. 5.
open-source robot operating system, in: ICRA workshop on open source software, volume 3, Kobe,</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Quigley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Conley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Gerkey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Faust</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Foote</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Leibs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wheeler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Y.</given-names>
            <surname>Ng</surname>
          </string-name>
          , et al.,
          <source>Ros: an</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>