arXiv is now an independent nonprofit! Learn more
License: arXiv.org perpetual non-exclusive license
arXiv:1105.1657v3 [cs.FL] 16 Jan 2012

Approximating Petri Net Reachability Along Context-free Traces

Mohamed Faouzi Atig Affiliation: 2    Pierre Ganty
Abstract

We investigate the problem asking whether the intersection of a context-free language (𝖢𝖥𝖫\mathsf{CFL}) and a Petri net language (𝖯𝖭𝖫\mathsf{PNL}) is empty. Our contribution to solve this long-standing problem which relates, for instance, to the reachability analysis of recursive programs over unbounded data domain, is to identify a class of 𝖢𝖥𝖫\mathsf{CFL}s called the finite-index 𝖢𝖥𝖫\mathsf{CFL}s for which the problem is decidable. The kk-index approximation of a 𝖢𝖥𝖫\mathsf{CFL} can be obtained by discarding all the words that cannot be derived within a budget kk on the number of occurrences of non-terminals. A finite-index 𝖢𝖥𝖫\mathsf{CFL} is thus a 𝖢𝖥𝖫\mathsf{CFL} which coincides with its kk-index approximation for some kk. We decide whether the intersection of a finite-index 𝖢𝖥𝖫\mathsf{CFL} and a 𝖯𝖭𝖫\mathsf{PNL} is empty by reducing it to the reachability problem of Petri nets with weak inhibitor arcs, a class of systems with infinitely many states for which reachability is known to be decidable. Conversely, we show that the reachability problem for a Petri net with weak inhibitor arcs reduces to the emptiness problem of a finite-index 𝖢𝖥𝖫\mathsf{CFL} intersected with a 𝖯𝖭𝖫\mathsf{PNL}.

Uppsala University, Sweden IMDEA Software Institute, Spain

\runningauthors

M. F. Atig, P. Ganty

1 Introduction

Automated verification of infinite-state systems, for instance programs with (recursive) procedures and integer variables, is an important and a highly challenging problem. Pushdown automata (or equivalently context-free grammars) have been proposed as an adequate formalism to model procedural programs. However pushdown automata require finiteness of the data domain which is typically obtained by abstracting the program’s data, for instance, using the predicate abstraction techniques [2, 8]. In many cases, reasoning over finite abstract domains yields to a too coarse analysis and is therefore not precise. To palliate this problem, it is natural to model a procedural program with integer variables as a pushdown automaton manipulating counters. In general, pushdown automata with counters are Turing powerful which implies that basic decision problems are undecidable (this is true even for the case finite-state automata with counters).

Therefore one has to look for restrictions on the model which retain sufficient expressiveness while allowing basic properties like reachability to be algorithmically verified. One such restriction is to forbid the test of a counter and a constant for equality. In fact, forbidding test for equality implies the decidability of the reachability problem for the case of finite-state automata with counters (i.e. Petri nets [12, 15]).

The verification problem for pushdown automata with (restricted) counters boils down to check whether a context-free language (𝖢𝖥𝖫\mathsf{CFL}) and a Petri net language (𝖯𝖭𝖫\mathsf{PNL}) are disjoint or not. We denote this last problem 𝖯𝖭𝖫𝖢𝖥𝖫=?\mathsf{PNL}\cap\mathsf{CFL}\stackrel{{\scriptstyle?}}{{=}}\emptyset.

The decidability of 𝖯𝖭𝖫𝖢𝖥𝖫=?\mathsf{PNL}\cap\mathsf{CFL}\stackrel{{\scriptstyle?}}{{=}}\emptyset is open and lies at the very edge of our comprehension of infinite-state systems. We see two breakthroughs contributing to this question. First, determining the emptiness of a 𝖯𝖭𝖫\mathsf{PNL} was known to be decidable as early as the eighties. Then, in 2006, Reinhardt [15] lifted this result to an extension of 𝖯𝖭\mathsf{PN} with inhibitor arcs (that allow to test if a counter equals 0) which must satisfy some additional topological conditions. By imposing a topology on the tests for zero, Reinhardt prevents his model to acquire Turing powerful capabilities. We call his model 𝖯𝖭𝖶\mathsf{PNW} and the languages thereof 𝖯𝖭𝖶𝖫\mathsf{PNWL}.

Our contribution to the decidability of 𝖯𝖭𝖫𝖢𝖥𝖫=?\mathsf{PNL}\cap\mathsf{CFL}\stackrel{{\scriptstyle?}}{{=}}\emptyset comes under the form of a partial answer which is better understood in terms of underapproximation. In fact, given a 𝖯𝖭𝖫\mathsf{PNL} L1L_{1} and the language LL of a context-free grammar we replace LL by a subset LL^{\prime} which is obtained by discarding from LL all the words that cannot be derived within a given budget kk\in\mathbb{N} on the number of non-terminal symbols. (In fact, the subset LL^{\prime} contains any word of LL that can be generated by a derivation that contains at most kk non-terminal symbols at each derivation step.) We show how to compute LL^{\prime} by annotating the variables of the context-free grammar for LL with an allowance. What is particularly appealing is that the coverage of LL increases with the allowance. Approximations induced by allowances are non-trivial: every regular or linear language is captured exactly with an allowance of 11, LL^{\prime} coincides with LL when the allowance is unbounded, and under commutativity of concatenation LL^{\prime} coincides with LL for some allowance kk\in{\mathbb{N}}.

We call finite-index 𝖢𝖥𝖫\mathsf{CFL}, or fi𝖢𝖥𝖫\text{fi}\mathsf{CFL} for short, a context-free language where each of its words can be derived within a given budget. In this paper, we prove the decidability of 𝖯𝖭𝖫fi𝖢𝖥𝖫=?\mathsf{PNL}\cap\text{fi}\mathsf{CFL}\stackrel{{\scriptstyle?}}{{=}}\emptyset by reducing it to the emptiness problem of 𝖯𝖭𝖶𝖫\mathsf{PNWL}. We also prove the converse reduction; showing those two problems are equivalent. Hence, we offer a whole new perspective on the emptiness problem for 𝖯𝖭𝖶𝖫\mathsf{PNWL} and 𝖯𝖭𝖫𝖢𝖥𝖫\mathsf{PNL}\cap\mathsf{CFL}.

To conclude the introduction let us mention the recent result of [1] which builds on [12] to give an alternative proof of Reinhardt’s result (𝖯𝖭𝖶\mathsf{PNW} reachability is decidable) for the particular case where one counter only can be tested for zero.

2 Preliminaries

2.1 Context-Free Languages

An alphabet Σ\Sigma is a finite non-empty set of symbols. A word ww over an alphabet Σ\Sigma is a finite sequence of symbols of Σ\Sigma where the empty sequence is denoted ε\varepsilon. We write Σ\Sigma^{*} for the set of words over Σ\Sigma. Let LΣL\subseteq\Sigma^{*}, LL defines a language.

A context-free grammar (OPEN𝖢𝖥𝖦)\mathsf{CFG}) GG is a tuple (𝒳,Σ,𝒫)(\mathcal{X},\Sigma,\mathcal{P}) where 𝒳\mathcal{X} is a finite non-empty set of variables (non-terminal letters), Σ\Sigma is an alphabet of terminal letters, and 𝒫(𝒳×(𝒳2Σ{ϵ}))\mathcal{P}\subseteq\big(\mathcal{X}\times(\mathcal{X}^{2}\cup\Sigma\cup\{\epsilon\})\big) a finite set of productions (the production (X,w)(X,w) may also be denoted by XwX\rightarrow w). For every production p=(X,w)𝒫p=(X,w)\in\mathcal{P}, we use head(p)head(p) to denote the variable XX. Observe that the form of the productions is restricted, but it has been shown in [11] that every 𝖢𝖥𝖦\mathsf{CFG} can be transformed, in polynomial time, into an equivalent grammar of this form.

Given two strings u,v(Σ𝒳)u,v\in(\Sigma\cup\mathcal{X})^{*} we define the relation uvu\Rightarrow v, if there exists a production (X,w)𝒫(X,w)\in\mathcal{P} and some words y,z(Σ𝒳)y,z\in(\Sigma\cup\mathcal{X})^{*} such that u=yXzu=yXz and v=ywzv=ywz. We use \Rightarrow^{*} for the reflexive transitive closure of \Rightarrow. Given X𝒳X\in\mathcal{X}, we define the language LG(X)L_{G}(X), or simply L(X)L(X) when GG is clear form the context, as {wΣXw}{\left\{w\in\Sigma^{*}\mid X\Rightarrow^{*}w\right\}}. A language LL is context-free (𝖢𝖥𝖫\mathsf{CFL}) if there exists a 𝖢𝖥𝖦\mathsf{CFG} G=(𝒳,Σ,𝒫)G=(\mathcal{X},\Sigma,\mathcal{P}) and A𝒳A\in\mathcal{X} such that L=LG(A)L=L_{G}(A).

2.2 Finite-index Approximation of Context-Free Languages

Let kk\in{\mathbb{N}}, G=(𝒳,Σ,𝒫)G=(\mathcal{X},\Sigma,\mathcal{P}) be a 𝖢𝖥𝖦\mathsf{CFG} and A𝒳A\in\mathcal{X}. A derivation from AA given by A=α0α1αnA=\alpha_{0}\Rightarrow\alpha_{1}\Rightarrow\dots\Rightarrow\alpha_{n} is kk-index bounded if for every i{0,,n}i\in{\left\{0,\dots,n\right\}} at most kk symbols of αi\alpha_{i} are variables. We denote by L(k)(A)L^{(k)}(A) the subset of L(A)L(A) such that for every wL(k)(A)w\in L^{(k)}(A) there exists a kk index bounded derivation AwA\Rightarrow^{*}w. We call L(k)(A)L^{(k)}(A) the kk-index approximation of L(A)L(A) or more generically we say that L(k)(A)L^{(k)}(A) is a finite-index approximation of L(A)L(A).11 1 Finite-index approximations were first studied in the 60’s.

Let us now give some known properties of finite-index approximations. Clearly limkL(k)(A)=L(A)\lim_{k\rightarrow\infty}L^{(k)}(A)=L(A). Moreover, let LL be a regular or linear language22 2 See [10] for definitions., then there exists a 𝖢𝖥𝖦\mathsf{CFG} GG^{\prime}, and a variable AA^{\prime} of GG^{\prime} such that L(A)=L=L(1)(A)L(A^{\prime})=L=L^{(1)}(A^{\prime}). Also Luker showed in [14] that if L(A)L(w1wn)L(A)\subseteq L(w_{1}^{*}\cdots w_{n}^{*}) for some wiΣw_{i}\in\Sigma^{*}, then L(k)(A)=L(A)L^{(k)}(A)=L(A) for some kk\in{\mathbb{N}}. More recently, [5, 7] showed some form of completeness for finite-index approximation when commutativity of concatenation is assumed. It shows that there exists a kk\in{\mathbb{N}} such that L(A)Π(L(k)(A))L(A)\subseteq\Pi(L^{(k)}(A)) where Π(L)\Pi(L) denotes the language obtained by permuting symbols of ww for every wLw\in L. As an incompleteness result, Salomaa showed in [16] that for the Dyck language LD1L_{D_{1}^{*}} over 1-pair of parentheses there is no 𝖢𝖥𝖦\mathsf{CFG} GG^{\prime}, variable AA^{\prime} of GG^{\prime} and kk\in{\mathbb{N}} such that L(k)(A)=LD1L^{(k)}(A^{\prime})=L_{D_{1}^{*}}.

Inspired by [4, 6, 5] let us define the 𝖢𝖥𝖦\mathsf{CFG} G[k]G^{[k]} which annotates the variables of 𝒳\mathcal{X} with a positive integer bounding the index of the derivations starting with that variable.

Definition 2.1.

Let G[k]=(𝒳[k],Σ,𝒫[k])G^{[k]}=(\mathcal{X}^{[k]},\Sigma,\mathcal{P}^{[k]}) be the context-free grammar defined as follows: 𝒳[k]={X[i]0ikX𝒳}\mathcal{X}^{[k]}={\left\{X^{[i]}\mid 0\leq i\leq k\land X\in\mathcal{X}\right\}}, and 𝒫[k]\mathcal{P}^{[k]} is the smallest set such that:

  • For every XYZ𝒫X\rightarrow Y\,Z\in\mathcal{P}, 𝒫[k]\mathcal{P}^{[k]} has the productions X[i]Y[i1]Z[i]X^{[i]}\rightarrow Y^{[i-1]}Z^{[i]} and X[i]Y[i]Z[i1]X^{[i]}\rightarrow Y^{[i]}Z^{[i-1]} for every i{1,,k}i\in{\left\{1,\dots,k\right\}}.

  • For every Xσ𝒫X\rightarrow\sigma\in\mathcal{P} with σΣ{ϵ}\sigma\in\Sigma\cup\{\epsilon\}, X[i]σ𝒫[k]X^{[i]}\rightarrow\sigma\in\mathcal{P}^{[k]} for all i{0,,k}i\in{\left\{0,\dots,k\right\}}.

What follows is a consequence of several results from different papers by Esparza et al. For the sake of clarity we give a direct proof in the appendix.

Lemma 2.2.

Let X𝒳X\in\mathcal{X}. We have L(X[k])=L(k+1)(X)L(X^{[k]})=L^{(k+1)}(X).

2.3 Petri nets with Inhibitor Arcs

Let Σ\Sigma be a finite non-empty set, a multiset 𝐦:Σ\mathbf{m}\colon\Sigma\mapsto{\mathbb{N}} over Σ\Sigma maps each symbol of Σ\Sigma to a natural number. Let 𝕄[Σ]{\mathbb{M}[\Sigma]} be the set of all multiset over Σ\Sigma.

We sometimes use the following notation for multisets 𝐦=q1,q1,q3\mathbf{m}={\llbracket q_{1},q_{1},q_{3}\rrbracket} for the multiset 𝐦𝕄[{q1,q2,q3,q4}]\mathbf{m}\in{\mathbb{M}[{\left\{q_{1},q_{2},q_{3},q_{4}\right\}}]} such that 𝐦(q1)=2\mathbf{m}(q_{1})=2, 𝐦(q2)=𝐦(q4)=0\mathbf{m}(q_{2})=\mathbf{m}(q_{4})=0, and 𝐦(q3)=1\mathbf{m}(q_{3})=1. The empty multiset is denoted \varnothing.

Given 𝐦,𝐦𝕄[Σ]\mathbf{m},\mathbf{m}^{\prime}\in{\mathbb{M}[\Sigma]} we define 𝐦𝐦𝕄[Σ]\mathbf{m}\oplus\mathbf{m}^{\prime}\in{\mathbb{M}[\Sigma]} to be the multiset such that aΣ:(𝐦𝐦)(a)=𝐦(a)+𝐦(a)\forall a\in\Sigma\colon(\mathbf{m}\oplus\mathbf{m}^{\prime})(a)=\mathbf{m}(a)+\mathbf{m}^{\prime}(a), we also define the natural partial order \preceq on 𝕄[Σ]{\mathbb{M}[\Sigma]} as follows: 𝐦𝐦\mathbf{m}\preceq\mathbf{m}^{\prime} iff there exists 𝐦Δ𝕄[Σ]\mathbf{m}^{\Delta}\in{\mathbb{M}[\Sigma]} such that 𝐦𝐦Δ=𝐦\mathbf{m}\oplus\mathbf{m}^{\Delta}=\mathbf{m}^{\prime}. We also define 𝐦𝐦𝕄[Σ]\mathbf{m}\ominus\mathbf{m}^{\prime}\in{\mathbb{M}[\Sigma]} as the multiset such that (𝐦𝐦)𝐦=𝐦(\mathbf{m}\ominus\mathbf{m}^{\prime})\oplus\mathbf{m}^{\prime}=\mathbf{m} provided 𝐦𝐦\mathbf{m}^{\prime}\preceq\mathbf{m}.

A Petri net with inhibitor arcs (𝖯𝖭𝖨\mathsf{PNI} for short) N=(S,T,F=Z,I,O,𝐦ı)N=(S,T,F={\left\langle Z,I,O\right\rangle},\mathbf{m}_{\imath}) consists of a finite non-empty set SS of places, a finite set TT of transitions disjoint from SS, a tuple F=Z,I,OF={\left\langle Z,I,O\right\rangle} of functions Z:T2SZ\colon T\mapsto 2^{S}, I:T𝕄[S]I\colon T\mapsto{\mathbb{M}[S]} and O:T𝕄[S]O\colon T\mapsto{\mathbb{M}[S]}, and an initial marking 𝐦ı𝕄[S]\mathbf{m}_{\imath}\in{\mathbb{M}[S]}. A marking 𝐦\mathbf{m} (𝕄[S]\in{\mathbb{M}[S]}) of NN assigns to each place pSp\in S 𝐦(p)\mathbf{m}(p) tokens.

A transition tTt\in T is enabled at 𝐦\mathbf{m}, written 𝐦[t\mathbf{m}\left[{t}\right\rangle, if I(t)𝐦I(t)\preceq\mathbf{m} and 𝐦(p)=0\mathbf{m}(p)=0 for all pZ(t)p\in Z(t). A transition tt that is enabled at 𝐦\mathbf{m} can be fired, yielding a marking 𝐦\mathbf{m}^{\prime} such that 𝐦=(𝐦I(t))O(t)\mathbf{m}^{\prime}=(\mathbf{m}\ominus I(t))\oplus O(t). We write this fact as follows: 𝐦[t𝐦\mathbf{m}\left[{t}\right\rangle\mathbf{m}^{\prime}. We extend enabledness and firing inductively to finite sequences of transitions as follows. Let wTw\in T^{*}. If w=εw=\varepsilon we define 𝐦[w𝐦\mathbf{m}\left[{w}\right\rangle\mathbf{m}^{\prime} iff 𝐦=𝐦\mathbf{m}^{\prime}=\mathbf{m}; else if w=uvw=u\cdot v we have 𝐦[w𝐦\mathbf{m}\left[{w}\right\rangle\mathbf{m}^{\prime} iff 𝐦1:𝐦[u𝐦1𝐦1[v𝐦\exists\mathbf{m}_{1}\colon\mathbf{m}\left[{u}\right\rangle\mathbf{m}_{1}\land\mathbf{m}_{1}\left[{v}\right\rangle\mathbf{m}^{\prime}.

From the above definition we find that 𝐦\mathbf{m} is a reachable marking from 𝐦0\mathbf{m}_{0} if and only if there exists wTw\in T^{*} such that 𝐦0[w𝐦\mathbf{m}_{0}\left[{w}\right\rangle\mathbf{m}. Given a language LTL\subseteq T^{*} over the transitions of NN, the set of reachable states from 𝐦0\mathbf{m}_{0} along LL, written [𝐦0L\left[{\mathbf{m}_{0}}\right\rangle^{L}, coincides with {𝐦wL:𝐦0[w𝐦}{\left\{\mathbf{m}\mid\exists w\in L\colon\mathbf{m}_{0}\left[{w}\right\rangle\mathbf{m}\right\}}. Incidentally, if LL is unspecified then it is assumed to be TT^{*} and we simply write [𝐦0\left[{\mathbf{m}_{0}}\right\rangle for the set of states reachable from 𝐦0\mathbf{m}_{0}. For clarity, we shall sometimes write the 𝖯𝖭𝖨\mathsf{PNI} in subscript, e.g. 𝐦1[𝐦0NL\mathbf{m}_{1}\in\left[{\mathbf{m}_{0}}\right\rangle^{L}_{N}.

A Petri net with weak inhibitor arcs (𝖯𝖭𝖶\mathsf{PNW} for short) is a 𝖯𝖭𝖨\mathsf{PNI} N=(S,T,F=Z,I,O,𝐦ı)N=(S,T,F={\left\langle Z,I,O\right\rangle},\mathbf{m}_{\imath}) such that there is an index function f:Sf\colon S\mapsto{\mathbb{N}} with the property:

p,pS:f(p)f(p)(tT:pZ(t)pZ(t)).\forall p,p^{\prime}\in S\colon f(p)\leq f(p^{\prime})\rightarrow(\forall t\in T\colon p^{\prime}\in Z(t)\rightarrow p\in Z(t))\kern 5.0pt. (1)

A Petri net (𝖯𝖭\mathsf{PN} for short) can be seen as a subclass of Petri nets with weak inhibitor arcs where Z(t)=Z(t)=\emptyset for all transitions tTt\in T. In this case, we shorten FF as the pair I,O{\left\langle I,O\right\rangle}.

The reachability problem for a 𝖯𝖭𝖨\mathsf{PNI} N=(S,T,F=Z,I,O,𝐦ı)N=(S,T,F={\left\langle Z,I,O\right\rangle},\mathbf{m}_{\imath}) is the problem of deciding, for a given marking 𝐦\mathbf{m}, whether 𝐦[𝐦ı\mathbf{m}\in\left[{\mathbf{m}_{\imath}}\right\rangle holds. It is well known that reachability for Petri nets with inhibitor arcs is undecidable [9]. However, the following holds:

Theorem 2.3.

[15] The reachability problem for 𝖯𝖭𝖶\mathsf{PNW} is decidable.

2.4 The reachability problem for Petri nets along finite-index CFL

Let us formally define the problem we are interested in. Given: (1) a Petri net N=(S,T,F,𝐦ı)N=(S,T,F,\mathbf{m}_{\imath}) where TT\neq\emptyset; (2) a 𝖢𝖥𝖦\mathsf{CFG} G=(𝒳,T,𝒫)G=(\mathcal{X},T,\mathcal{P}) and A𝒳A\in\mathcal{X}; (3) a marking 𝐦f𝕄[S]\mathbf{m}_{f}\in{\mathbb{M}[S]}; and (4) a value kk\in{\mathbb{N}}.

Does 𝐦f[𝐦ıL(k)(A)\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L^{(k)}(A)} hold ?

In what follows, we prove the interreducibility of the reachability problem for 𝖯𝖭\mathsf{PN} along finite-index 𝖢𝖥𝖫\mathsf{CFL} and the reachability problem for 𝖯𝖭𝖶\mathsf{PNW}.

3 From 𝖯𝖭\mathsf{PN} reachability along fi𝖢𝖥𝖫\text{fi}\mathsf{CFL} to 𝖯𝖭𝖶\mathsf{PNW} reachability

In this section, we show that the reachability problem for Petri nets along finite-index 𝖢𝖥𝖫\mathsf{CFL} is decidable. To this aim, let us fix an instance of the problem: a Petri net N=(S,T,F,𝐦ı)N=(S,T,F,\mathbf{m}_{\imath}) where TT\neq\emptyset, a 𝖢𝖥𝖦\mathsf{CFG} G=(𝒳,T,𝒫)G=(\mathcal{X},T,\mathcal{P}), 𝐦f𝕄[S]\mathbf{m}_{f}\in{\mathbb{M}[S]}, and a natural number kk\in{\mathbb{N}}. Moreover, let G[k]=(𝒳[k],T,𝒫[k])G^{[k]}=(\mathcal{X}^{[k]},T,\mathcal{P}^{[k]}) be the 𝖢𝖥𝖦\mathsf{CFG} given by def. 2.1.

Lemma 2.2 shows that 𝐦f[𝐦ıL(k+1)(A)\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L^{(k+1)}(A)} if and only if 𝐦f[𝐦ıL(A[k])\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L(A^{[k]})}. Then, our decision procedure, which determines if 𝐦f[𝐦ıL(A[k])\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L(A^{[k]})}, proceeds by reduction to the reachability problem for 𝖯𝖭𝖶\mathsf{PNW} and is divided in two steps. First, we reduce the question 𝐦f[𝐦ıL(A[k])\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L(A^{[k]})} to the existence of a successful execution in the program of Alg. 1 which, in turn, is reduced to a reachability problem for 𝖯𝖭𝖶\mathsf{PNW}. Let us describe Alg. 1.

Part 1. Alg. 1 gives the procedure 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} in which 𝐌𝗂\mathbf{M_{\sf i}} and 𝐌𝖿{\mathbf{M_{\sf f}}} are global arrays of markings with index ranging from 00 to kk (i.e., for every j{0,,k}j\in\{0,\ldots,k\}, 𝐌𝗂[j],𝐌𝖿[j]𝕄[S]\mathbf{M_{\sf i}}[j],\mathbf{M_{\sf f}}[j]\in\mathbb{M}[S]). We say that a call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) successfully returns if there exists an execution which eventually reaches line 1 (i.e., no assert fails) and the postcondition 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]={\mathbf{M_{\sf f}}}[j]=\varnothing for every j{0,,}j\in{\left\{0,\ldots,\ell\right\}} holds. Moreover we say that a call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) is proper if 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]=\mathbf{M_{\sf f}}[j]=\varnothing for all j<j<\ell. Let {0,,k}\ell\in{\left\{0,\ldots,k\right\}}, we shall now demonstrate that a proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) successfully returns if and only if there exists wL(X[])w\in L(X^{[\ell]}) such that 𝐌𝗂[][wN𝐌𝖿[]\mathbf{M_{\sf i}}[\ell]\left[{w}\right\rangle_{N}\mathbf{M_{\sf f}}[\ell].

Algorithm 1 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse}
Input: A variable X[]𝒳[k]X^{[\ell]}\in\mathcal{X}^{[k]} of G[k]G^{[k]}
1 begin
 2 Let p𝒫[k]p\in\mathcal{P}^{[k]} such that head(p)=X[]head(p)=X^{[\ell]}
 3 switch p do
    4 case X[]σX^{[\ell]}\rightarrow\sigma /* σΣ{ϵ}\sigma\in\Sigma\cup\{\epsilon\} */ do
       5 𝐌𝗂[]:=(𝐌𝗂[]I(σ))O(σ)\mathbf{M_{\sf i}}[\ell]:=(\mathbf{M_{\sf i}}[\ell]\ominus I(\sigma))\oplus O(\sigma)
       6 𝑠𝑢𝑏__𝑡𝑜(𝐌𝗂[],𝐌𝖿[])\mathit{sub\_\mathord{\ast}\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf f}}[\ell])
    7 case X[]B[]C[1]X^{[\ell]}\rightarrow B^{[\ell]}C^{[\ell-1]} do
       8 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜(𝐌𝖿[],𝐌𝖿[1])\mathit{transfer\_from\_to}({\mathbf{M_{\sf f}}}[\ell],{\mathbf{M_{\sf f}}}[\ell-1])
       9 𝑎𝑑𝑑__𝑡𝑜(𝐌𝖿[],𝐌𝗂[1])\mathit{add\_\mathord{\ast}\_to}(\mathbf{M_{\sf f}}[\ell],\mathbf{M_{\sf i}}[\ell-1])
       10 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[1])\mathit{traverse}(C^{[\ell-1]})
       11 assert 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]={\mathbf{M_{\sf f}}}[j]=\varnothing for all j<j<\ell
       12 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]})
    13 case X[]B[1]C[]X^{[\ell]}\rightarrow B^{[\ell-1]}C^{[\ell]} do
       14 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜(𝐌𝗂[],𝐌𝗂[1])\mathit{transfer\_from\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf i}}[\ell-1])
       15 𝑎𝑑𝑑__𝑡𝑜(𝐌𝗂[],𝐌𝖿[1])\mathit{add\_\mathord{\ast}\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf f}}[\ell-1])
       16 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[1])\mathit{traverse}(B^{[\ell-1]})
       17 assert 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]={\mathbf{M_{\sf f}}}[j]=\varnothing for all j<j<\ell
       18 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[])\mathit{traverse}(C^{[\ell]})
 19 return
Algorithm 2 𝑎𝑑𝑑__𝑡𝑜,𝑠𝑢𝑏__𝑡𝑜\mathit{add\_\mathord{\ast}\_to},\mathit{sub\_\mathord{\ast}\_to}
Input: 𝑠𝑟𝑐1,𝑠𝑟𝑐2\mathit{src}_{1},\mathit{src}_{2}
begin
   Let 𝑞𝑡𝑦\mathit{qty} s.t. 𝑞𝑡𝑦\varnothing\preceq\mathit{qty}
   if 𝑎𝑑𝑑__𝑡𝑜\mathit{add\_\mathord{\ast}\_to} then
       (𝑠𝑟𝑐1,𝑠𝑟𝑐2):=(𝑠𝑟𝑐1,𝑠𝑟𝑐2)𝑞𝑡𝑦(\mathit{src}_{1},\mathit{src}_{2}):=(\mathit{src}_{1},\mathit{src}_{2})\oplus\mathit{qty}
   else // 𝑠𝑢𝑏__𝑡𝑜\mathit{sub\_\mathord{\ast}\_to}
       (𝑠𝑟𝑐1,𝑠𝑟𝑐2):=(𝑠𝑟𝑐1,𝑠𝑟𝑐2)𝑞𝑡𝑦(\mathit{src}_{1},\mathit{src}_{2}):=(\mathit{src}_{1},\mathit{src}_{2})\ominus\mathit{qty}
Algorithm 3 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜\mathit{transfer\_from\_to}
Input: 𝑠𝑟𝑐,𝑡𝑔𝑡\mathit{src},\mathit{tgt}
begin
   Let 𝑞𝑡𝑦\mathit{qty} s.t. 𝑞𝑡𝑦𝑠𝑟𝑐\varnothing\preceq\mathit{qty}\preceq\mathit{src}
   𝑡𝑔𝑡:=𝑡𝑔𝑡𝑞𝑡𝑦\mathit{tgt}:=\mathit{tgt}\oplus\mathit{qty}
   𝑠𝑟𝑐:=𝑠𝑟𝑐𝑞𝑡𝑦\mathit{src}:=\mathit{src}\ominus\mathit{qty}

The formal statement is given at Lem. 3.1. We give some intuitions about Alg. 1 first.

The control flow of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} matches the traversal of a derivation tree of G[k]G^{[k]} such that at each node 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} goes first to the subtree which carries the least index. The tree traversal is implemented through recursive calls in 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse}. To see that the traversal goes first in the subtree of least index, it suffices to look at the ordering of the recursive calls to 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} in the code of Alg. 1, e.g. in case the of line 1, 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[1])\mathit{traverse}(C^{[\ell-1]}) is called before 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]}).

Reasoning in terms of derivation trees, we have that the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) returns iff there exists a derivation tree tt of G[k]G^{[k]} with root variable X[]X^{[\ell]} such that the sequence of transitions given by the yield of tt is enabled from the marking stored in 𝐌𝗂[]\mathbf{M_{\sf i}}[\ell] and its firing yields the marking stored in 𝐌𝖿[]\mathbf{M_{\sf f}[\ell]}.

Because of the least index first traversal, it turns out that the arrays 𝐌𝗂\mathbf{M_{\sf i}} and 𝐌𝖿\mathbf{M_{\sf f}} provide enough space to manage all the intermediary results.

Also, we observe that when the procedure 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) calls itself with the parameter, say B[]B^{[\ell]}, the call is a tail recursive call. This means that when 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]}) returns then 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) immediately returns. It is known from programming techniques how to implement tail recursive call without consuming space on the call stack. In the case of Alg. 1, we can do so by having a global variable to store the parameter of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} and by replacing tail recursive calls with 𝐠𝐨𝐭𝐨\mathbf{goto} statements. For the remaining recursive calls (line 1 and 1), because the index of the callee is one less than the index of the caller, we conclude that a bounded space consisting of kk frames suffices for the call stack.

Those two insights (two arrays with kk entries and a stack with kk frames) will be the key to show, in Part 2, that 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒\mathit{traverse} can be implemented as a 𝖯𝖭𝖶\mathsf{PNW}.

Lemma 3.1.

Let {0,,k}\ell\in\{0,\ldots,k\}, X[]𝒳[k]X^{[\ell]}\in\mathcal{X}^{[k]}, and 𝐦,𝐦𝕄[S]\mathbf{m},\mathbf{m}^{\prime}\in{\mathbb{M}[S]}. Then, the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with context 𝐌𝗂[]=𝐦\mathbf{M_{\sf i}}[\ell]=\mathbf{m} and 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime} successfully returns if and only if there exists wL(X[])w\in L(X^{[\ell]}) such that 𝐦[wN𝐦\mathbf{m}\left[{w}\right\rangle_{N}\mathbf{m}^{\prime}.

Proof 3.2.

If. We prove that if there exists wL(X[])w\in L(X^{[\ell]}) such that 𝐦[w𝐦\mathbf{m}\left[{w}\right\rangle\mathbf{m}^{\prime} then the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with 𝐌𝗂[]=𝐦\mathbf{M_{\sf i}}[\ell]=\mathbf{m} and 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime} successfully returns.

Our proof is done by induction on the length nn of the derivation of wL(X[])w\in L(X^{[\ell]}). For the case n=1n=1, we necessarily have X[]w=σX^{[\ell]}\Rightarrow w=\sigma for some (X[],σ)𝒫[k](X^{[\ell]},\sigma)\in\mathcal{P}^{[k]}. In this case, the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with 𝐌𝗂[]=𝐦\mathbf{M_{\sf i}}[\ell]=\mathbf{m} and 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime} executes as follows: p=(X[],σ)p=(X^{[\ell]},\sigma) is picked and the case of line 1 executes successfully since 𝐦=𝐌𝗂[][σ𝐌𝖿[]=𝐦\mathbf{m}=\mathbf{M_{\sf i}}[\ell]\left[{\sigma}\right\rangle\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime} holds. In fact, after the assignment of line 1 we have 𝐌𝗂[]=𝐌𝖿[]\mathbf{M_{\sf i}}[\ell]=\mathbf{M_{\sf f}}[\ell]. From there, the call to 𝑠𝑢𝑏__𝑡𝑜\mathit{sub\_\mathord{\ast}\_to} can return with 𝐌𝗂[]=𝐌𝖿[]=\mathbf{M_{\sf i}}[\ell]=\mathbf{M_{\sf f}}[\ell]=\varnothing which shows that 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) successfully returns.

For the case n>1n>1, we have X[]nwX^{[\ell]}\Rightarrow^{n}w which necessarily has the form X[]B[]C[1]n1wX^{[\ell]}\Rightarrow B^{[\ell]}C^{[\ell-1]}\Rightarrow^{n-1}w or X[]B[1]C[]n1wX^{[\ell]}\Rightarrow B^{[\ell-1]}C^{[\ell]}\Rightarrow^{n-1}w by def. of G[k]G^{[k]}. Assume we are in the latter case. Thus there exists w1w_{1} and w2w_{2} such that X[]B[1]C[]iw1C[]jw1w2=wX^{[\ell]}\Rightarrow B^{[\ell-1]}C^{[\ell]}\Rightarrow^{i}w_{1}C^{[\ell]}\Rightarrow^{j}w_{1}w_{2}=w with i+j=n1i+j=n-1 and 𝐦1:𝐦[w1𝐦1[w2𝐦\exists\mathbf{m}_{1}\colon\mathbf{m}\left[{w_{1}}\right\rangle\mathbf{m}_{1}\left[{w_{2}}\right\rangle\mathbf{m}^{\prime}. Observe that w1L(B[1])w_{1}\in L(B^{[\ell-1]}) and w2L(C[])w_{2}\in L(C^{[\ell]}) and so by induction hypothesis we find that the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[1])\mathit{traverse}(B^{[\ell-1]}) with 𝐌𝗂[1]=𝐦\mathbf{M_{\sf i}}[\ell-1]=\mathbf{m}, 𝐌𝖿[1]=𝐦1\mathbf{M_{\sf f}}[\ell-1]=\mathbf{m}_{1} successfully returns. And so does, by induction hypothesis, the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[])\mathit{traverse}(C^{[\ell]}) with 𝐌𝗂[]=𝐦1\mathbf{M_{\sf i}}[\ell]=\mathbf{m}_{1}, 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime}. Therefore let us consider the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with 𝐌𝗂[]=𝐦\mathbf{M_{\sf i}}[\ell]=\mathbf{m}, 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime}. We show it successfully returns.

First observe that the call to the procedure 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) is proper. Next, at line 1, pick p=(X[],B[1]C[])p=(X^{[\ell]},B^{[\ell-1]}C^{[\ell]}). Then the call 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜(𝐌𝗂[],𝐌𝗂[1])\mathit{transfer\_from\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf i}}[\ell-1]) of line 1 executes such that 𝐌𝗂[]\mathbf{M_{\sf i}}[\ell] is updated to \varnothing and 𝐌𝗂[1]\mathbf{M_{\sf i}}[\ell-1] to 𝐦\mathbf{m}. Next the call to the procedure 𝑎𝑑𝑑__𝑡𝑜(𝐌𝗂[],𝐌𝖿[1])\mathit{add\_\mathord{\ast}\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf f}}[\ell-1]) of line 1 executes such that both 𝐌𝗂[]\mathbf{M_{\sf i}}[\ell] and 𝐌𝖿[1]\mathbf{M_{\sf f}}[\ell-1] are updated to 𝐦1\mathbf{m}_{1}. Recall that 𝐦[w1𝐦1[w2𝐦\mathbf{m}\left[{w_{1}}\right\rangle\mathbf{m}_{1}\left[{w_{2}}\right\rangle\mathbf{m}^{\prime}.

Finally we showed above that the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[1])\mathit{traverse}(B^{[\ell-1]}) successfully returns, the assert that follows too and finally the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[])\mathit{traverse}(C^{[\ell]}). Moreover it is routine to check that upon completion of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[])\mathit{traverse}(C^{[\ell]}) (and therefore 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]})) we have 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]=\mathbf{M_{\sf f}}[j]=\varnothing for all jj\leq\ell.

The left case (i.e. p=(X[],B[]C[1])𝒫[k]p=(X^{[\ell]},B^{[\ell]}C^{[\ell-1]})\in\mathcal{P}^{[k]}) is treated similarly.

Only If. Here we prove that if the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) successfully returns then there exists wL(X[])w\in L(X^{[\ell]}) such that 𝐌𝗂[][wN𝐌𝖿[]\mathbf{M_{\sf i}}[\ell]\left[{w}\right\rangle_{N}\mathbf{M_{\sf f}}[\ell].

Our proof is done by induction on the number nn of times line 1 is executed during the execution of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}). In every case, line 1 is executed at least once. For the case n=1n=1, the algorithm necessarily executes the case of line 1. The definition of G[k]G^{[k]} shows that along a successful execution of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}), the non deterministic choice of line 1 necessarily returns a production of the form p=(X[],σ)𝒫[k]p=(X^{[\ell]},\sigma)\in\mathcal{P}^{[k]}. Therefore, a successful execution must execute line 1 and 1 and then 1 after which the postcondition 𝐌𝗂[j]=𝐌𝖿[j]=\mathbf{M_{\sf i}}[j]=\mathbf{M_{\sf f}}[j]=\varnothing for all jj\leq\ell holds. Because the postcondition holds, we find that 𝐌𝗂[]=𝐌𝖿[]\mathbf{M_{\sf i}}[\ell]=\mathbf{M_{\sf f}}[\ell] holds before executing line 1, hence that 𝐌𝖿[]=𝐌𝗂[]I(σ)O(σ)\mathbf{M_{\sf f}}[\ell]=\mathbf{M_{\sf i}}[\ell]\ominus I(\sigma)\oplus O(\sigma) before executing line 1, and finally that 𝐌𝗂[][σ𝐌𝖿[]\mathbf{M_{\sf i}}[\ell]\left[{\sigma}\right\rangle\mathbf{M_{\sf f}}[\ell] by semantics of transition σ\sigma and we are done.

For the case n>1n>1, the first non deterministic choice of line 1 necessarily picks p𝒫[k]p\in\mathcal{P}^{[k]} of the form (X[],B[]C[1])(X^{[\ell]},B^{[\ell]}C^{[\ell-1]}) or (X[],B[1]C[])(X^{[\ell]},B^{[\ell-1]}C^{[\ell]}). Let us assume p=(X[],B[]C[1])p=(X^{[\ell]},B^{[\ell]}C^{[\ell-1]}), hence that the case of line 1 is executed. Let 𝐦\mathbf{m} and 𝐦\mathbf{m}^{\prime} be respectively the values of 𝐌𝗂[]\mathbf{M_{\sf i}}[\ell] and 𝐌𝖿[]\mathbf{M_{\sf f}}[\ell] when 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) is invoked. Now, let 𝐦3,𝐦Δ\mathbf{m}_{3},\mathbf{m}_{\Delta} be such that 𝐦=𝐦3𝐦Δ\mathbf{m}^{\prime}=\mathbf{m}_{3}\oplus\mathbf{m}_{\Delta} and such that upon completion of the call to 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜\mathit{transfer\_from\_to} at line 1 we have that 𝐌𝖿[]=𝐦Δ\mathbf{M_{\sf f}}[\ell]=\mathbf{m}_{\Delta} and 𝐌𝖿[1]=𝐦3\mathbf{M_{\sf f}}[\ell-1]=\mathbf{m}_{3}. Moreover, let 𝐦2\mathbf{m}_{2} be the marking such that 𝐌𝗂[1]=𝐦2\mathbf{M_{\sf i}}[\ell-1]=\mathbf{m}_{2} upon completion of the call to 𝑎𝑑𝑑__𝑡𝑜\mathit{add\_\mathord{\ast}\_to} at line 1. Therefore we find that 𝐌𝖿[]\mathbf{M_{\sf f}}[\ell] is updated to 𝐦Δ𝐦2\mathbf{m}_{\Delta}\oplus\mathbf{m}_{2}. Next consider the successful proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[1])\mathit{traverse}(C^{[\ell-1]}) of line 1 with 𝐌𝗂[1]=𝐦2{\mathbf{M_{\sf i}}[\ell-1]}=\mathbf{m}_{2}, 𝐌𝖿[1]=𝐦3{\mathbf{M_{\sf f}}[\ell-1]}=\mathbf{m}_{3}. Observe that because the execution of 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) yields the calls 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[1])\mathit{traverse}(C^{[\ell-1]}) and 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]}), we find that the number of times line 1 is executed in 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(C[1])\mathit{traverse}(C^{[\ell-1]}) and 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]}) is strictly less than nn. Therefore, the induction hypothesis shows that there exists w2w_{2} such that w2L(C[1])w_{2}\in L(C^{[\ell-1]}) and 𝐦2[w2𝐦3\mathbf{m}_{2}\left[{w_{2}}\right\rangle\mathbf{m}_{3}. Then comes the successful assert of line 1 followed by the successful proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(B[])\mathit{traverse}(B^{[\ell]}) of line 1 with 𝐌𝗂[]=𝐦{\mathbf{M_{\sf i}}[\ell]}=\mathbf{m} and 𝐌𝖿[]=𝐦Δ𝐦2{\mathbf{M_{\sf f}}[\ell]}=\mathbf{m}_{\Delta}\oplus\mathbf{m}_{2}. Again by induction hypothesis, there exists w1w_{1} such that w1L(B[])w_{1}\in L(B^{[\ell]}) and 𝐦[w1(𝐦Δ𝐦2)\mathbf{m}\left[{w_{1}}\right\rangle(\mathbf{m}_{\Delta}\oplus\mathbf{m}_{2}).

Next we conclude from the monotonicity property of 𝖯𝖭\mathsf{PN} that since 𝐦2[w2𝐦3\mathbf{m}_{2}\left[{w_{2}}\right\rangle\mathbf{m}_{3} then (𝐦2𝐦Δ)[w2(𝐦3𝐦Δ)(\mathbf{m}_{2}\oplus\mathbf{m}_{\Delta})\left[{w_{2}}\right\rangle(\mathbf{m}_{3}\oplus\mathbf{m}_{\Delta}), hence that 𝐦[w1(𝐦2𝐦Δ)[w2(𝐦3𝐦Δ)\mathbf{m}\left[{w_{1}}\right\rangle(\mathbf{m}_{2}\oplus\mathbf{m}_{\Delta})\left[{w_{2}}\right\rangle(\mathbf{m}_{3}\oplus\mathbf{m}_{\Delta}) and finally that 𝐦[w1w2𝐦\mathbf{m}\left[{w_{1}\,w_{2}}\right\rangle\mathbf{m}^{\prime} because 𝐦=𝐦3𝐦Δ\mathbf{m}^{\prime}=\mathbf{m}_{3}\oplus\mathbf{m}_{\Delta}. Finally since w1w2L(X[])w_{1}w_{2}\in L(X^{[\ell]}) we conclude that 𝐦[𝐦L(X[])\mathbf{m}^{\prime}\in\left[{\mathbf{m}}\right\rangle^{L(X^{[\ell]})} and we are done.

The left case (i.e. p=(X[],B[1]C[])𝒫[k]p=(X^{[\ell]},B^{[\ell-1]}C^{[\ell]})\in\mathcal{P}^{[k]}) is treated similarly.∎

Part 2. In this section, we show that it is possible to construct a 𝖯𝖭𝖨\mathsf{PNI} NN^{\prime} such that the problem asking if the call to 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(A[k])\mathit{traverse}(A^{[k]}) successfully returns can be reduced, in polynomial time, to a reachability problem for NN^{\prime}. Incidentally, we show that NN^{\prime} is a 𝖯𝖭𝖶\mathsf{PNW}, hence that the reachability problem for 𝖯𝖭\mathsf{PN} along finite-index 𝖢𝖥𝖫\mathsf{CFL} is decidable.

To describe NN^{\prime} we use a generalization of the net program formalism introduced by Esparza in [3] which enrich the instruction set with the test for 0 of a variable.

A net program is a finite sequence of labelled commands separated by semicolons. Basic commands have the following form, where ,,1,,k\ell,\ell^{\prime},\ell_{1},\ldots,\ell_{k} are labels taken from some arbitrary set, and xx is a variable over the natural numbers, also called a counter.

  • :x:=x1\ell\colon x:=x-1

  • :x:=x+1\ell\colon x:=x+1

  • :𝐠𝐨𝐭𝐨\ell\colon\mathbf{goto}\,\ell^{\prime}

  • :𝐢𝐟x=0𝐭𝐡𝐞𝐧𝐠𝐨𝐭𝐨\ell\colon\mathbf{if}\,x=0\,\mathbf{then\ goto}\,\ell^{\prime}

  • :𝐠𝐨𝐭𝐨1𝐨𝐫𝐨𝐫𝐠𝐨𝐭𝐨k\ell\colon\mathbf{goto}\,\ell_{1}\,\mathbf{or}\cdots\mathbf{or\ goto}\,\ell_{k}

  • :𝐠𝐨𝐬𝐮𝐛\ell\colon\mathbf{gosub}\,\ell^{\prime}

  • :𝐫𝐞𝐭𝐮𝐫𝐧\ell\colon\mathbf{return}

  • :𝐡𝐚𝐥𝐭\ell\colon\mathbf{halt}

A net program is syntactically correct if the labels of commands are pairwise different, and if the destinations of jumps corresponds to existing labels. Moreover we require the net program to be decomposable into a main program that only calls first-level subroutines, which in turn only call second level subroutines, etc and the jump commands in a subroutine can only have commands of the same subroutine as destinations.33 3 Here we consider the main program as a zero-level subroutine, i.e. jump commands in the main program can only have commands of the main program as destinations. Each subroutine has a unique entry command labelled with a subroutine name, and a unique exit command of the form :𝐫𝐞𝐭𝐮𝐫𝐧\ell\colon\mathbf{return}. Entry and exit labelled commands are distinct.

A net program can only be executed once its variables have received initial values. In this paper we assume that the initial values are always 00. The semantics of net programs is that suggested by the syntax.

The compilation of a syntactically correct net program to a 𝖯𝖭𝖨\mathsf{PNI} is straightforward and omitted due to space constraints. See [3] for the compilation.

At Alg. 4 is the net program that implements Alg. 1. In what follows assume SS, the set of places of the underlying Petri net, to be {1,,d}{\left\{1,\ldots,d\right\}} for d1d\geq 1. The counter variables of the net program are given by {x[i]}0ik,X𝒳\{x^{[i]}\}_{0\leq i\leq k,X\in\mathcal{X}} and 𝐌𝖿[0..k][1..d]\mathbf{M}_{\sf f}[0..k][1..d] 𝐌𝗂[0..k][1..d]\mathbf{M}_{\sf i}[0..k][1..d] which arranges counters into two matrices of dimension (k+1)×d(k+1)\times d. For clarity, our net programs use some abbreviations whose semantics is clear from the syntax, e.g. 𝐌𝗂[]:=𝐌𝗂[]𝐦\mathbf{M}_{\sf i}[\ell]:=\mathbf{M}_{\sf i}[\ell]\oplus\mathbf{m} stands for the sequence 𝐌𝗂[][1]:=𝐌𝗂[][1]+𝐦(1);[];\mathbf{M}_{\sf i}[\ell][1]:=\mathbf{M}_{\sf i}[\ell][1]+\mathbf{m}(1);[\ldots]; 𝐌𝗂[][d]:=𝐌𝗂[][d]+𝐦(d).\mathbf{M}_{\sf i}[\ell][d]:=\mathbf{M}_{\sf i}[\ell][d]+\mathbf{m}(d).

Let us now make a few observations of Alg. 4:

• at the top level we have the subroutine 𝐦𝐚𝐢𝐧\mathbf{main} which first sets up 𝐌𝗂[]\mathbf{M}_{\sf i}[\ell] and 𝐌𝖿[]\mathbf{M}_{\sf f}[\ell], then simulates the call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) and finally checks that the postcondition holds (label 𝟎1\boldsymbol{0}_{1}) before halting (label 𝐬𝐮𝐜𝐜𝐞𝐬𝐬\mathbf{success}).

• the counter variables {x[i]}0ik,X𝒳\{x^{[i]}\}_{0\leq i\leq k,X\in\mathcal{X}} defines the parameter of the calls to 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j}. For instance, a call to 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[j])\mathit{traverse}(X^{[j]}) is simulated in the net program by incrementing x[j]x^{[j]} and then calling subroutine 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j}.

Algorithm 4 main invoking 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with 𝐦\mathbf{m}, 𝐦\mathbf{m}^{\prime} and subroutines 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j} where 0<j0<j\leq\ell implementing the calls {𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[j])}X𝒳{\left\{\mathit{traverse}(X^{[j]})\right\}}_{X\in\mathcal{X}}.
main: 𝐌𝗂[]:=𝐌𝗂[]𝐦\mathbf{M}_{\sf i}[\ell]:=\mathbf{M}_{\sf i}[\ell]\oplus\mathbf{m}
𝐌𝖿[]:=𝐌𝖿[]𝐦\mathbf{M}_{\sf f}[\ell]:=\mathbf{M}_{\sf f}[\ell]\oplus\mathbf{m}^{\prime}
x[]:=x[]+1x^{[\ell]}:=x^{[\ell]}+1
gosub 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞\mathbf{traverse}_{\ell}
\boldsymbol{0}_{1} if 𝐌𝗂[0..]==𝐌𝖿[0..]\mathbf{M}_{\sf i}[0..\ell]=\varnothing=\mathbf{M}_{\sf f}[0..\ell] then
     goto success
𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j}: goto 𝐩1\mathbf{p}_{1} or \cdots or goto 𝐩n\mathbf{p}_{n}
[…]
𝐩i0\mathbf{p}_{i_{0}}: x[j]:=x[j]1x^{[j]}:=x^{[j]}-1
𝐌𝗂[j]:=𝐌𝗂[j]I(σ)\mathbf{M}_{\sf i}[j]:=\mathbf{M}_{\sf i}[j]\ominus I(\sigma)
𝐌𝗂[j]:=𝐌𝗂[j]O(σ)\mathbf{M}_{\sf i}[j]:=\mathbf{M}_{\sf i}[j]\oplus O(\sigma)
gosub 𝐬𝐮𝐛_𝐭𝐨j\mathbf{sub\_to}_{j}
goto exit
[…]
𝐩i1\mathbf{p}_{i_{1}}: x[j]:=x[j]1x^{[j]}:=x^{[j]}-1
gosub 𝐭𝐫_𝐟j_𝐟(j1)\mathbf{tr\_f}_{j}\mathbf{\_f}_{(j-1)}
gosub 𝐚𝐝𝐝_𝐭𝐨_𝐢(j1)_𝐟j\mathbf{add\_to\_i}_{(j-1)}\_\mathbf{f}_{j}
c[j1]:=c[j1]+1c^{[j-1]}:=c^{[j-1]}+1
gosub 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞(j1)\mathbf{traverse}_{(j-1)}
\boldsymbol{0}_{2} if 𝐌𝗂[0..j1]==𝐌𝖿[0..j1]\mathbf{M}_{\sf i}[0..j-1]\!=\!\varnothing\!=\!\mathbf{M}_{\sf f}[0..j-1] then
     goto l1
l1: b[j]:=b[j]+1b^{[j]}:=b^{[j]}+1
goto 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j}
[…]
𝐩i2\mathbf{p}_{i_{2}}: v[j]:=v[j]1v^{[j]}:=v^{[j]}-1
gosub 𝐭𝐫_𝐢j_𝐢(j1)\mathbf{tr\_i}_{j}\mathbf{\_i}_{(j-1)}
gosub 𝐚𝐝𝐝_𝐭𝐨_𝐢j_𝐟(j1)\mathbf{add\_to\_i}_{j}\_\mathbf{f}_{(j-1)}
y[j1]:=y[j1]+1y^{[j-1]}:=y^{[j-1]}+1
gosub 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞(j1)\mathbf{traverse}_{(j-1)}
\boldsymbol{0}_{3} if 𝐌𝗂[0..j1]==𝐌𝖿[0..j1]\mathbf{M}_{\sf i}[0..j-1]\!=\!\varnothing\!=\!\mathbf{M}_{\sf f}[0..j-1] then
     goto l2
l2: z[j]:=z[j]+1z^{[j]}:=z^{[j]}+1
goto 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j}
[…]
exit: return
[…]
success: halt

• the non-deterministic jump at label 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j} simulates the selection of a production rule 𝐩ik=(X[j],w)\mathbf{p}_{i_{k}}=(X^{[j]},w) which will be fired next (if enabled else the program fails).

• the missing code for the subroutines 𝐭𝐫_𝐟j_𝐟j1\mathbf{tr\_f}_{j}\mathbf{\_f}_{j-1}, 𝐚𝐝𝐝_𝐭𝐨_𝐢j_𝐟j1\mathbf{add\_to\_i}_{j}\_\mathbf{f}_{j-1}, and 𝐬𝐮𝐛_𝐭𝐨j\mathbf{sub\_to}_{j} can be found in the appendix although it is pretty obvious to infer from Alg. 2 and Alg. 3. The code for 𝐭𝐫_𝐢j_𝐢j1\mathbf{tr\_i}_{j}\mathbf{\_i}_{j-1}, 𝐚𝐝𝐝_𝐭𝐨_𝐟j_𝐢j1\mathbf{add\_to\_f}_{j}\_\mathbf{i}_{j-1} and 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞0\mathbf{traverse}_{0} is also routine to write.

• the program is syntactically correct. First, the levels are assigned to subroutines as follows: the level of 𝐭𝐫𝐚𝐯𝐞𝐫𝐬𝐞j\mathbf{traverse}_{j} is jj, the level of 𝐭𝐫_𝐟j_𝐟j1\mathbf{tr\_f}_{j}\mathbf{\_f}_{j-1}, 𝐭𝐫_𝐢j_𝐢j1\mathbf{tr\_i}_{j}\mathbf{\_i}_{j-1}, 𝐚𝐝𝐝_𝐭𝐨_𝐢j_𝐟j1\mathbf{add\_to\_i}_{j}\_\mathbf{f}_{j-1}, 𝐚𝐝𝐝_𝐭𝐨_𝐟j_𝐢j1\mathbf{add\_to\_f}_{j}\_\mathbf{i}_{j-1} and 𝐬𝐮𝐛_𝐭𝐨j\mathbf{sub\_to}_{j} is j1j-1. Given that level assignment, it is routine to check that subroutines of level ii only call subroutines of level i1i-1. Moreover, thanks to the programming techniques that allow to implement the tail recursive call as a goto instead of gosub we find that the program is synctactically correct. (If we had used gosub everywhere, then the net program would be synctactically incorrect). Also observe that each jump commands does not leave the subroutine inside which it is invoked.

• the tests for 0 (labels 𝟎1,𝟎2,𝟎3\boldsymbol{0}_{1},\boldsymbol{0}_{2},\boldsymbol{0}_{3}) have a particular structure matching the level of the subroutines (level 00 for 𝟎1\boldsymbol{0}_{1} and jj for 𝟎2\boldsymbol{0}_{2} and 𝟎3\boldsymbol{0}_{3}). So, after compilation of the net program into a 𝖯𝖭𝖨\mathsf{PNI} NN^{\prime}, if we set a mapping ff from the places of NN^{\prime} to {\mathbb{N}} such that cc is mapped to ii if c{𝐌𝗂[i][j]j{1,,d}}{𝐌𝖿[i][j]j{1,,d}}c\in{\left\{\mathbf{M}_{\sf i}[i][j]\mid j\in{\left\{1,\ldots,d\right\}}\right\}}\cup{\left\{\mathbf{M}_{\sf f}[i][j]\mid j\in{\left\{1,\ldots,d\right\}}\right\}} and every other place is mapped to +2\ell+2 then we find that NN^{\prime} is a 𝖯𝖭𝖶\mathsf{PNW}. Clearly, deciding whether Alg. 4 halts reduces to 𝖯𝖭𝖶\mathsf{PNW} reachability. Therefore, by Thm. 2.3, it is decidable whether Alg. 4 halts.

Lemma 3.3.

Let {0,,k}\ell\in{\left\{0,\ldots,k\right\}}, X[]𝒳[k]X^{[\ell]}\in\mathcal{X}^{[k]}, and 𝐦,𝐦𝕄[S]\mathbf{m},\mathbf{m}^{\prime}\in{\mathbb{M}[S]}. Then the proper call 𝑡𝑟𝑎𝑣𝑒𝑟𝑠𝑒(X[])\mathit{traverse}(X^{[\ell]}) with 𝐌𝗂[]=𝐦\mathbf{M_{\sf i}}[\ell]=\mathbf{m}, 𝐌𝖿[]=𝐦\mathbf{M_{\sf f}}[\ell]=\mathbf{m}^{\prime} successfully returns iff Alg. 4 halts.

Hence from Lem. 2.2, 3.1 and 3.3, we conclude the following.

Corollary 3.4.

The reachability problem for 𝖯𝖭\mathsf{PN} along finite-index 𝖢𝖥𝖫\mathsf{CFL} can be reduced to the reachability problem for 𝖯𝖭𝖶\mathsf{PNW}.

4 From 𝖯𝖭𝖶\mathsf{PNW} reachability to 𝖯𝖭\mathsf{PN} reachability along fi𝖢𝖥𝖫\text{fi}\mathsf{CFL}

In this section, we show that the reachability problem for 𝖯𝖭𝖶\mathsf{PNW} can be reduced to the reachability problem of 𝖯𝖭\mathsf{PN} along finite-index 𝖢𝖥𝖫\mathsf{CFL}. To this aim, let N=(S,T,F=Z,I,O,𝐦ı)N=(S,T,F={\left\langle Z,I,O\right\rangle},\mathbf{m}_{\imath}) be a 𝖯𝖭𝖶\mathsf{PNW}, 𝐦f𝕄[S]\mathbf{m}_{f}\in{\mathbb{M}[S]} a marking, and f:Sf\colon S\mapsto{\mathbb{N}} an index function such that (1) holds.

Let S={s1,,sn+1}S=\{s_{1},\ldots,s_{n+1}\} and T={t1,,tm}T=\{t_{1},\ldots,t_{m}\}. Because it simplifies the presentation we will make a few assumptions that yield no loss of generality. (ii) For every i{1,,n}i\in{\left\{1,\ldots,n\right\}}, we have f(si)f(si+1)f(s_{i})\leq f(s_{i+1}), (iiii) 𝐦ı=sn+1\mathbf{m}_{\imath}={\llbracket s_{n+1}\rrbracket}, 𝐦f=\mathbf{m}_{f}=\varnothing, (iiiiii) Z(t1)Z(t2)Z(tm){s1,,sn}Z(t_{1})\subseteq Z(t_{2})\subseteq\cdots\subseteq Z(t_{m})\subseteq\{s_{1},\ldots,s_{n}\}, and (iviv) for every tTt\in T, if sZ(t)s\in Z(t) then O(t)(s)=0O(t)(s)=0 (see [15], Lemma 2.1). Notice that the Petri net NN can not test if the place sn+1s_{n+1} is empty or not.

In the following, we show that it is possible to construct a Petri net (without inhibitor arcs) NN^{\prime}, a marking 𝐦f\mathbf{m}^{\prime}_{f}, and a finite-index 𝖢𝖥𝖫\mathsf{CFL} LL such that: 𝐦f[𝐦ıNT\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle_{N}^{T^{*}} iff 𝐦f[𝐦ıNL\mathbf{m}^{\prime}_{f}\in\left[{\mathbf{m}^{\prime}_{\imath}}\right\rangle_{N^{\prime}}^{L}.

Constructing the Petri net NN^{\prime}: Let N=(S,T,F=I,O,𝐦ı)N^{\prime}=(S^{\prime},T^{\prime},F^{\prime}={\left\langle I^{\prime},O^{\prime}\right\rangle},\mathbf{m}^{\prime}_{\imath}) be a 𝖯𝖭\mathsf{PN} which consists in n+1n+1 unconnected 𝖯𝖭\mathsf{PN} widget: the widget N0N_{0} given by NN without tests for zero (i.e. Z(t)Z(t) is set to \varnothing for every tTt\in T) and the widgets N1,,NnN_{1},\ldots,N_{n} where each Ni=({ri},{pi,ci},Fi,)N_{i}=({\left\{r_{i}\right\}},{\left\{p_{i},c_{i}\right\}},F_{i},\varnothing) where Fi(pi)=,riF_{i}(p_{i})={\left\langle\varnothing,{\llbracket r_{i}\rrbracket}\right\rangle} and Fi(ci)=ri,F_{i}(c_{i})={\left\langle{\llbracket r_{i}\rrbracket},\varnothing\right\rangle}. NiN_{i} is depicted as follows: pirici\stackrel{{\scriptstyle p_{i}}}{{\blacksquare}}\!\mathord{\rightarrow}\!\mathord{\stackrel{{\scriptstyle r_{i}}}{{\bigcirc}}}\mathord{\rightarrow}\stackrel{{\scriptstyle c_{i}}}{{\blacksquare}}. Finally, define 𝐦ı𝕄[S]\mathbf{m}^{\prime}_{\imath}\in{\mathbb{M}[S^{\prime}]} to be 𝐦ı(s)=𝐦ı(s)\mathbf{m}^{\prime}_{\imath}(s)=\mathbf{m}_{\imath}(s) for sSs\in S and 00 elsewhere; and 𝐦f=\mathbf{m}^{\prime}_{f}=\varnothing.

Since we have the ability to restrict the possible sequences of transitions that fire in NN^{\prime}, we can enforce the invariant that the sum of tokens in sis_{i} and rir_{i} stays constant. To do so it suffices to force that whenever a token produced in sis_{i} then a token is consumed from rir_{i} and vice versa. Call LL the language enforcing that invariant. Then, let 𝐦\mathbf{m} be a marking such that 𝐦(si)=𝐦(ri)=0\mathbf{m}(s_{i})=\mathbf{m}(r_{i})=0, observe that by firing from 𝐦\mathbf{m} a sequence of the form: (ii) pip_{i} repeated nn times, (iiii) any sequence wLw\in L and (iiiiii) cic_{i} repeated nn times; the marking 𝐦\mathbf{m}^{\prime} that is reached is such that 𝐦(si)=𝐦(ri)=0\mathbf{m}^{\prime}(s_{i})=\mathbf{m}^{\prime}(r_{i})=0. This suggests that to simulate faithfully a transition t0t_{0} of NN that does test sis_{i} for 00 we allow the occurrence of the counterpart of t0t_{0} in N0N_{0} right before (ii) or right after (iiiiii) only. In what follows, we build upon the above idea the language LnL_{n} which, as we we will show, coincides with the finite-index approximation of some 𝖢𝖥𝖦\mathsf{CFG}.

We need the following notation. Given a word vΣv\in\Sigma^{*} and ΘΣ\Theta\subseteq\Sigma, we define v|Θv|_{\Theta} to be the word obtained from vv by erasing all the symbols that are not in Θ\Theta. We extend it to languages as follows: Let LΣL\subseteq\Sigma^{*}. Then L|Θ={u|ΘuL}L|_{\Theta}={\left\{u|_{\Theta}\,\mid\,u\in L\right\}}.

Constructing the language LnL_{n}: For every j{1,,m}j\in\{1,\ldots,m\}, let uj=pi11pi22pinn{u}_{j}=p^{\,i_{1}}_{1}p^{\,i_{2}}_{2}\cdots p^{\,i_{n}}_{n} and vj=ck11ck22cknnv_{j}=c^{\,k_{1}}_{1}c^{\,k_{2}}_{2}\cdots c^{\,k_{n}}_{n} be two words over the alphabet TT^{\prime} such that i=I(tj)(s)i_{\ell}=I(t_{j})(s_{\ell}) and k=O(tj)(s)k_{\ell}=O(t_{j})(s_{\ell}) for all {1,,n}\ell\in\{1,\ldots,n\}. Observe that firing vjtjujv_{j}t_{j}u_{j} keeps unchanged the total number of tokens in {si,ri}{\left\{s_{i},r_{i}\right\}} for each i{1,,n}i\in{\left\{1,\ldots,n\right\}}. Let {0,,n}\ell\in{\left\{0,\ldots,n\right\}} define T={vjtjujZ(tj)={s1,,s}}T_{\ell}={\left\{v_{j}\cdot t_{j}\cdot u_{j}\mid Z(t_{j})={\left\{s_{1},\ldots,s_{\ell}\right\}}\right\}}.44 4 Note that if =0\ell=0 then {s1,,s}={\left\{s_{1},\ldots,s_{\ell}\right\}}=\emptyset. Also given a,bΣa,b\in\Sigma^{*} and ZΣZ\subseteq\Sigma^{*}, define a,bZ{\left\langle a,b\right\rangle}\star Z as the set {aizbiizZ}{\left\{a^{i}\cdot z\cdot b^{i}\mid i\in{\mathbb{N}}\land z\in Z\right\}}.

Define the 𝖢𝖥𝖫\mathsf{CFL}s L0,,LnL_{0},\ldots,L_{n} inductively as follows: L0=T0L_{0}=T_{0}^{*} and for 0<n0<\ell\leq n define L=((p,cL1)T)L_{\ell}=\bigl(({\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1})\cup T_{\ell}\bigr)^{*}. It is routine to check that L0L1LnL_{0}\subseteq L_{1}\subseteq\cdots\subseteq L_{n} (since OPENL1p,cL1)L_{\ell-1}\subseteq{\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1})) and Ln|T=TL_{n}|_{T}=T^{*} (since Lni=0nTiL_{n}\supseteq\bigcup_{i=0}^{n}T_{i}). Also, L0L_{0} is a regular language and therefore there exists a 𝖢𝖥𝖦\mathsf{CFG} G0G_{0} and a variable A0A_{0} of G0G_{0} such that L(1)(A0)=L0L^{(1)}(A_{0})=L_{0}. Now, let us assume that for LiL_{i} there exists a 𝖢𝖥𝖦\mathsf{CFG} GiG_{i} and a variable AiA_{i} such that L(i+1)(Ai)=LiL^{(i+1)}(A_{i})=L_{i}. From the definition of Li+1L_{i+1} it is routine to check that there exists a 𝖢𝖥𝖦\mathsf{CFG} Gi+1G_{i+1} and a variable Ai+1A_{i+1} such that L(i+2)(Ai+1)=Li+1L^{(i+2)}(A_{i+1})=L_{i+1}. Finally we find that LnL_{n} can be captured by the n+1n+1-index approximation of a 𝖢𝖥𝖦\mathsf{CFG}.

Lemma 4.1.

Let {0,,n}\ell\in\{0,\ldots,n\}. If 𝐦1,𝐦2𝕄[S]\mathbf{m}_{1},\mathbf{m}_{2}\in{\mathbb{M}[S^{\prime}]} such that 𝐦2[𝐦1NL\mathbf{m}_{2}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}}, then 𝐦2(sj)+𝐦2(rj)=𝐦1(sj)+𝐦1(rj)\mathbf{m}_{2}(s_{j})+\mathbf{m}_{2}(r_{j})=\mathbf{m}_{1}(s_{j})+\mathbf{m}_{1}(r_{j}) for all j{1,,n}j\in\{1,\ldots,n\}.

Let us make a few observations about the transitions of NN^{\prime} which were carrying out 0 test in NN. In LL_{\ell} no transition tt such that s+1Z(t)s_{\ell+1}\in Z(t) is allowed, that is no test of place s+1s_{\ell+1} for 00 is allowed along any word of LL_{\ell}. The language LL_{\ell} imposes that the place ss_{\ell} can only be tested for 00 along TT_{\ell}. The intuition is that LL_{\ell} allows to test ss_{\ell} for 00 provided all places sjs_{j} and rjr_{j} for jj\leq\ell are empty.

Let us introduce the following notations. Let 𝐦𝕄[S]\mathbf{m}\in{\mathbb{M}[S^{\prime}]} and QSQ\subseteq S^{\prime}, we write Q(𝐦)Q(\mathbf{m}) for the multiset of 𝕄[Q]{\mathbb{M}[Q]} such that Q(𝐦)(q)=𝐦(q)Q(\mathbf{m})(q)=\mathbf{m}(q) for all qQq\in Q. We define the following subsets of places of NN^{\prime}: RR_{\ell} (resp. SS_{\ell}) is given by {r1,,r}{\left\{r_{1},\ldots,r_{\ell}\right\}} (resp. {s1,,s}{\left\{s_{1},\ldots,s_{\ell}\right\}}). The proofs of lemmata that follow are done by induction and given in the appendix.

Lemma 4.2.

Let {0,,n}\ell\in{\left\{0,\ldots,n\right\}}, wLw\in L_{\ell}, and 𝐦a,𝐦b𝕄[S]\mathbf{m}_{a},\mathbf{m}_{b}\in{\mathbb{M}[S^{\prime}]} such that (SR)(𝐦a)=(SR)(𝐦b)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{a})=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{b})=\varnothing and 𝐦a[wN𝐦b\mathbf{m}_{a}\left[{w}\right\rangle_{N^{\prime}}\mathbf{m}_{b}. Then S(𝐦a)[w|TNS(𝐦b)S(\mathbf{m}_{a})\left[{w|_{T}}\right\rangle_{N}S(\mathbf{m}_{b}).

Lemma 4.3.

Let {0,,n}\ell\in\{0,\ldots,n\}, μ1,μ2𝕄[S]\mu_{1},\mu_{2}\in{\mathbb{M}[S]} such that S(μ1)=S(μ2)=S_{\ell}(\mu_{1})=S_{\ell}(\mu_{2})=\varnothing and μ2[μ1NL|T\mu_{2}\in\left[{\mu_{1}}\right\rangle^{L_{\ell}|_{T}}_{N}. Then there are 𝐦1,𝐦2𝕄[S]\mathbf{m}_{1},\mathbf{m}_{2}\in{\mathbb{M}[S^{\prime}]} such that S(𝐦1)=μ1S(\mathbf{m}_{1})=\mu_{1}, S(𝐦2)=μ2S(\mathbf{m}_{2})=\mu_{2}, R(𝐦1)=R(𝐦2)=R_{\ell}(\mathbf{m}_{1})=R_{\ell}(\mathbf{m}_{2})=\varnothing, and 𝐦2[𝐦1NL\mathbf{m}_{2}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}}.

Lemma 4.4.

𝐦f(=)[𝐦ıN\mathbf{m}_{f}(=\varnothing)\in\left[{\mathbf{m}_{\imath}}\right\rangle_{N} if and only if 𝐦f(=)[𝐦ıNLn\mathbf{m}^{\prime}_{f}(=\varnothing)\in\left[{\mathbf{m}^{\prime}_{\imath}}\right\rangle^{L_{n}}_{N^{\prime}}.

Proof 4.5.

(\Rightarrow) Assume that 𝐦f[𝐦ıN\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle_{N}. Since Ln|T=TL_{n}|_{T}=T^{*} and Sn(𝐦ı)=Sn(𝐦f)=S_{n}(\mathbf{m}_{\imath})=S_{n}(\mathbf{m}_{f})=\varnothing, the result of Lem. 4.3 shows that there are 𝐦1,𝐦2𝕄[S]\mathbf{m}_{1},\mathbf{m}_{2}\in{\mathbb{M}[S^{\prime}]} such that S(𝐦1)=𝐦ıS(\mathbf{m}_{1})=\mathbf{m}_{\imath}, S(𝐦2)=𝐦fS(\mathbf{m}_{2})=\mathbf{m}_{f}, Rn(𝐦1)=Rn(𝐦2)=R_{n}(\mathbf{m}_{1})=R_{n}(\mathbf{m}_{2})=\varnothing, and 𝐦2[𝐦1NLn\mathbf{m}_{2}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{n}}_{N^{\prime}}. This implies that 𝐦f[𝐦ıNLn\mathbf{m}^{\prime}_{f}\in\left[{\mathbf{m}^{\prime}_{\imath}}\right\rangle^{L_{n}}_{N^{\prime}} since 𝐦f=𝐦2\mathbf{m}^{\prime}_{f}=\mathbf{m}_{2} and 𝐦ı=𝐦1\mathbf{m}^{\prime}_{\imath}=\mathbf{m}_{1} by definition.

(\Leftarrow) Assume that 𝐦f[𝐦ıNLn\mathbf{m}^{\prime}_{f}\in\left[{\mathbf{m}^{\prime}_{\imath}}\right\rangle^{L_{n}}_{N^{\prime}}. The definition of 𝐦ı\mathbf{m}^{\prime}_{\imath} and 𝐦f\mathbf{m}^{\prime}_{f} shows that (SnRn)(𝐦ı)=(SnRn)(𝐦f)=(S_{n}\cup R_{n})(\mathbf{m}^{\prime}_{\imath})=(S_{n}\cup R_{n})(\mathbf{m}^{\prime}_{f})=\varnothing and therefore, by Lem. 4.2, we find that S(𝐦f)[S(𝐦ı)NLn|TS(\mathbf{m}^{\prime}_{f})\in\left[{S(\mathbf{m}^{\prime}_{\imath})}\right\rangle^{L_{n}|_{T}}_{N}, hence that 𝐦f[𝐦ıNLn|T\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle^{L_{n}|_{T}}_{N} by definition of 𝐦ı,𝐦f\mathbf{m}_{\imath},\mathbf{m}_{f}, and finally that 𝐦f[𝐦ıN\mathbf{m}_{f}\in\left[{\mathbf{m}_{\imath}}\right\rangle_{N} since Ln|T=T{L_{n}|_{T}}=T^{*}. ∎

As an immediate consequence of Lemma 4.4, we obtain the following result:

Corollary 4.6.

The reachability problem for 𝖯𝖭𝖶\mathsf{PNW} can be reduced to the reachability problem for 𝖯𝖭\mathsf{PN} along finite-index 𝖢𝖥𝖫\mathsf{CFL}.

5 Conclusion

In this paper, we have defined the class finite-index context-free languages (which is an interesting sub-class of context-free languages). We have shown that the problem of checking whether the intersection of a finite-index context-free language and a Petri net language is empty is decidable. This result is obtained through a non-trivial reduction to the reachability problem for Petri nets with weak inhibitor arcs. On the other hand, we have proved that the reachability problem for Petri nets with weak inhibitor arcs can be reduced to the the emptiness problem of the language obtained from the intersection of a finite-index context-free language and a Petri net language, which implies by [13] that the latter is EXPSPACE-hard.

References

  • [1] R. Bonnet. The reachability problem for vector addition systems with one zero-test. In MFCS ’11: Proc. 36th Int. Symp. on Mathematical Foundations of Computer Science, LNCS. Springer, 2011. To appear.
  • [2] P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL ’77, pages 238–252. ACM Press, 1977.
  • [3] J. Esparza. Decidability and complexity of petri net problems – an introduction. In Lectures on Petri Nets I: Basic Models, volume 1491 of LNCS, pages 374–428. Springer, 1998.
  • [4] J. Esparza, P. Ganty, S. Kiefer, and M. Luttenberger. Parikh’s theorem: A simple and direct automaton construction. Information Processing Letters, 111:614–619, 2011.
  • [5] J. Esparza, S. Kiefer, and M. Luttenberger. Newton’s method for ω\omega-continuous semirings. In ICALP ’08, volume 5126 of LNCS, pages 14–26. Springer, 2008. Invited paper.
  • [6] J. Esparza, S. Kiefer, and M. Luttenberger. Newtonian program analysis. Journal of the ACM, 57(6):33:1–33:47, 2010.
  • [7] P. Ganty, B. Monmege, and R. Majumdar. Bounded underapproximations. In CAV ’10, volume 6174 of LNCS, pages 600–614. Springer, 2010.
  • [8] S. Graf and H. Saïdi. Construction of abstract state graphs with PVS. In CAV ’97, volume 1254 of LNCS, pages 72–83. Springer, 1997.
  • [9] M. H. T. Hack. Decidability questions for petri nets. Technical Report 161, MIT, 1976.
  • [10] J. E. Hopcroft, R. Motwani, and J. D. Ullman. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, third edition, July 2006.
  • [11] M. Lange and H. Leiß. To CNF or not to CNF ? An efficient yet presentable version of the CYK algorithm. Informatica Didactica, 8, 2008-2010.
  • [12] J. Leroux. Vector addition system reachability problem (a short self-contained proof). In POPL ’11, pages 307–316. ACM, 2011.
  • [13] R. Lipton. The reachability problem is exponential-space hard. Technical Report 62, Department of Computer Science, Yale University, Jan. 1976.
  • [14] M. Luker. A family of languages having only finite-index grammars. Information and Control, 39(1):14–18, 1978.
  • [15] K. Reinhardt. Reachability in petri nets with inhibitor arcs. Electr. Notes Theor. Comput. Sci, 223:239 – 264, 2008. RP ’08.
  • [16] A. Salomaa. On the index of a context-free grammar and language. Information and Control, 14(5):474 – 477, 1969.

Appendix A Missing Net programs

Alg. 5 gives the net program which implements the call 𝑠𝑢𝑏__𝑡𝑜(𝐌𝗂[],𝐌𝖿[])\mathit{sub\_\mathord{\ast}\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf f}}[\ell]).

Algorithm 5
𝐬𝐮𝐛_𝐭𝐨\mathbf{sub\_to}_{\ell} goto exit or s1s_{1} oror sds_{d}
s1s_{1}: 𝐌𝗂[][1]:=𝐌𝗂[][1]1\mathbf{M}_{\sf i}[\ell][1]:=\mathbf{M}_{\sf i}[\ell][1]-1
𝐌𝖿[][1]:=𝐌𝖿[][1]1\mathbf{M}_{\sf f}[\ell][1]:=\mathbf{M}_{\sf f}[\ell][1]-1
goto 𝐬𝐮𝐛_𝐭𝐨\mathbf{sub\_to}_{\ell}
[…]
sds_{d}: 𝐌𝗂[][d]:=𝐌𝗂[][d]1\mathbf{M}_{\sf i}[\ell][d]:=\mathbf{M}_{\sf i}[\ell][d]-1
𝐌𝖿[][d]:=𝐌𝖿[][d]1\mathbf{M}_{\sf f}[\ell][d]:=\mathbf{M}_{\sf f}[\ell][d]-1
goto 𝐬𝐮𝐛_𝐭𝐨\mathbf{sub\_to}_{\ell}
exit: return

Alg. 6 implements the call 𝑎𝑑𝑑__𝑡𝑜(𝐌𝗂[],𝐌𝖿[1])\mathit{add\_\mathord{\ast}\_to}(\mathbf{M_{\sf i}}[\ell],\mathbf{M_{\sf f}}[\ell-1]).

Algorithm 6
𝐚𝐝𝐝_𝐭𝐨_𝐢_𝐟1\mathbf{add\_to\_i}_{\ell}\_\mathbf{f}_{\ell-1} goto exit or s1s_{1} oror sds_{d}
s1s_{1}: 𝐌𝗂[][1]:=𝐌𝗂[][1]+1\mathbf{M}_{\sf i}[\ell][1]:=\mathbf{M}_{\sf i}[\ell][1]+1
𝐌𝖿[1][1]:=𝐌𝖿[1][1]+1\mathbf{M}_{\sf f}[\ell-1][1]:=\mathbf{M}_{\sf f}[\ell-1][1]+1
goto 𝐚𝐝𝐝_𝐭𝐨_𝐢_𝐟1\mathbf{add\_to\_i}_{\ell}\_\mathbf{f}_{\ell-1}
[…]
sds_{d}: 𝐌𝗂[][d]:=𝐌𝗂[][d]+1\mathbf{M}_{\sf i}[\ell][d]:=\mathbf{M}_{\sf i}[\ell][d]+1
𝐌𝖿[1][d]:=𝐌𝖿[1][d]+1\mathbf{M}_{\sf f}[\ell-1][d]:=\mathbf{M}_{\sf f}[\ell-1][d]+1
goto 𝐚𝐝𝐝_𝐭𝐨_𝐢_𝐟1\mathbf{add\_to\_i}_{\ell}\_\mathbf{f}_{\ell-1}
exit: return

Alg. 7 implements the call 𝑡𝑟𝑎𝑛𝑠𝑓𝑒𝑟_𝑓𝑟𝑜𝑚_𝑡𝑜(𝐌𝖿[],𝐌𝖿[1])\mathit{transfer\_from\_to}(\mathbf{M_{\sf f}}[\ell],\mathbf{M_{\sf f}}[\ell-1]).

Algorithm 7
𝐭𝐫_𝐟_𝐟1\mathbf{tr\_f}_{\ell}\mathbf{\_f}_{\ell-1} goto exit or s1s_{1} oror sds_{d}
s1s_{1}: 𝐌𝖿[][1]:=𝐌𝖿[][1]1\mathbf{M}_{\sf f}[\ell][1]:=\mathbf{M}_{\sf f}[\ell][1]-1
𝐌𝖿[1][1]:=𝐌𝖿[1][1]+1\mathbf{M}_{\sf f}[\ell-1][1]:=\mathbf{M}_{\sf f}[\ell-1][1]+1
goto 𝐭𝐫_𝐟_𝐟1\mathbf{tr\_f}_{\ell}\mathbf{\_f}_{\ell-1}
[…]
sds_{d}: 𝐌𝖿[][d]:=𝐌𝖿[][d]1\mathbf{M}_{\sf f}[\ell][d]:=\mathbf{M}_{\sf f}[\ell][d]-1
𝐌𝖿[1][d]:=𝐌𝖿[1][d]+1\mathbf{M}_{\sf f}[\ell-1][d]:=\mathbf{M}_{\sf f}[\ell-1][d]+1
goto 𝐭𝐫_𝐟_𝐟1\mathbf{tr\_f}_{\ell}\mathbf{\_f}_{\ell-1}
exit: return

Appendix B Missing Proofs

B.1 Proof of Lemma 2.2

Proof B.1.

Let wΣw\in\Sigma^{*}, we shall demonstrate that A[k]wA^{[k]}\Rightarrow^{*}w iff there exists a derivation AwA\Rightarrow^{*}w that is k+1k+1 index bounded.

Only if. We have A[k]wA^{[k]}\Rightarrow^{\ell}w for some {0}\ell\in{\mathbb{N}}\setminus{\left\{0\right\}}. The proof is done by induction on \ell. For the case =1\ell=1, we have A[k]wA^{[k]}\Rightarrow w, hence that (A[k],w)𝒫[k](A^{[k]},w)\in\mathcal{P}^{[k]} and (A,w)𝒫(A,w)\in\mathcal{P} by definition of G[k]G^{[k]} and finally that AwA\Rightarrow w is 1k+11\leq k+1 index bounded. For the case >1\ell>1, the definition of G[k]G^{[k]} shows that there exists a derivation of the form (1) A[k]B[k1]C[k]iw1C[k]jw1w2=wA^{[k]}\Rightarrow B^{[k-1]}C^{[k]}\Rightarrow^{i}w_{1}C^{[k]}\Rightarrow^{j}w_{1}w_{2}=w where i+j=1i+j=\ell-1 or (2) A[k]B[k]C[k1]jB[k]w2iw1w2=wA^{[k]}\Rightarrow B^{[k]}C^{[k-1]}\Rightarrow^{j^{\prime}}B^{[k]}w_{2}\Rightarrow^{i^{\prime}}w_{1}w_{2}=w where i+j=1i^{\prime}+j^{\prime}=\ell-1 which is treated similarly. Assume case (1) holds. Because B[k1]iw1B^{[k-1]}\Rightarrow^{i}w_{1} where i<i<\ell we find, by induction hypothesis, that there exists a derivation Bw1B\Rightarrow^{*}w_{1} that is kk index bounded. Also, since C[k]jw2C^{[k]}\Rightarrow^{j}w_{2} where j<j<\ell, the induction hypothesis shows that there exists a derivation Cw2C\Rightarrow^{*}w_{2} that is k+1k+1 index bounded. Finally, we conclude from (A[k],B[k1]C[k])𝒫[k](A^{[k]},B^{[k-1]}C^{[k]})\in\mathcal{P}^{[k]}, that (A,BC)𝒫(A,BC)\in\mathcal{P}, hence that there exists a derivation ABCw1Cw1w2=wA\Rightarrow BC\Rightarrow^{*}w_{1}C\Rightarrow^{*}w_{1}w_{2}=w that is k+1k+1 index bounded and we are done.

If. Let AwA\Rightarrow^{\ell}w for some {0}\ell\in{\mathbb{N}}\setminus{\left\{0\right\}} be a k+1k+1 index bounded derivation. The proof is done by induction on \ell. For the case =1\ell=1, we conclude from AwA\Rightarrow w is k+1k+1 index bounded that (A,w)𝒫(A,w)\in\mathcal{P} by definition of GG, hence that (A[k],w)𝒫[k](A^{[k]},w)\in\mathcal{P}^{[k]} by definition of G[k]G^{[k]} and finally that A[k]wA^{[k]}\Rightarrow w.

For the case >1\ell>1, there is a k+1k+1 index bounded derivation of the form ABC1wA\Rightarrow BC\Rightarrow^{\ell-1}w such that one of the following derivation is k+1k+1 index bounded: ABCiw1Cjw1w2=wA\Rightarrow BC\Rightarrow^{i}w_{1}C\Rightarrow^{j}w_{1}w_{2}=w or ABCjBw2iw1w2=wA\Rightarrow BC\Rightarrow^{j}Bw_{2}\Rightarrow^{i}w_{1}w_{2}=w where i+j=1i+j=\ell-1.

Assume the former case holds (the other is handled similarly). Since the derivation is k+1k+1 index bounded we find that Biw1B\Rightarrow^{i}w_{1} is kk index bounded and Cjw2C\Rightarrow^{j}w_{2} is k+1k+1 bounded. Because i<i<\ell and j<j<\ell we find, by induction hypothesis, that w1L(B[k1])w_{1}\in L(B^{[k-1]}) and w2L(C[k])w_{2}\in L(C^{[k]}). Finally, ABCA\Rightarrow BC shows that (A,BC)𝒫(A,BC)\in\mathcal{P}, hence we deduce that {(A[k],B[k1]C[k]),(A[k],B[k]C[k1])}𝒫[k]{\left\{(A^{[k]},B^{[k-1]}C^{[k]}),(A^{[k]},B^{[k]}C^{[k-1]})\right\}}\subseteq\mathcal{P}^{[k]}, and finally that A[k]wA^{[k]}\Rightarrow^{*}w holds.∎

B.2 Proof of Lemma 4.1

Proof B.2.

The proof is done by induction on \ell.

Basis. =0\ell=0. Let wL0w\in L_{0}, that is wT0kw\in T_{0}^{k} for some kk\in{\mathbb{N}}. The proof is by induction on kk. The case k=0k=0 (w=εw=\varepsilon) is trivially solved. Let k>0k>0, then ww can be decomposed in w1,,wkw_{1},\ldots,w_{k} where each wiT0w_{i}\in T_{0} for i{1,,k}i\in{\left\{1,\ldots,k\right\}} and wiw_{i} is necesarily of the form vjtjujv_{j}\cdot t_{j}\cdot u_{j}. Finally since the firing of vjtjujT0v_{j}\cdot t_{j}\cdot u_{j}\in T_{0} keeps unchanged the total number of tokens in {si,ri}{\left\{s_{i},r_{i}\right\}} for each i{1,,n}i\in{\left\{1,\ldots,n\right\}} then so does all wT0w\in T_{0} and we are done.

Step. >0\ell>0. The definition of LL_{\ell} shows that w((p,cL1)T)kw\in(({\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1})\cup T_{\ell})^{k} for some kk\in{\mathbb{N}}. The proof is done by induction on kk. The case k=0k=0 (w=ϵw=\epsilon) is trivially solved. For k>0k>0 we have that w=w1wkw=w_{1}\cdots w_{k} where wip,cL1w_{i}\in{\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1} or wiTw_{i}\in T_{\ell}. If w1Tw_{1}\in T_{\ell}, then using the above reasoning we find that the the firing of any wTw\in T_{\ell} keeps unchanged the total number of tokens in {si,ri}{\left\{s_{i},r_{i}\right\}} for each i{1,,n}i\in{\left\{1,\ldots,n\right\}}. If w1p,cL1w_{1}\in{\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1} then w1=pivciw_{1}=p_{\ell}^{i}vc_{\ell}^{i} for some ii\in{\mathbb{N}}, vL1v\in L_{\ell-1}. Since the result holds for every vL1v\in L_{\ell-1} by induction hypothesis, we find that it also holds for w1w_{1} by definition of pp_{\ell} and cc_{\ell} and because they fire an equal number of times. Finally we use the induction hypothesis on w2wkw_{2}\cdots w_{k} (we can because w2wkLw_{2}\cdots w_{k}\in L_{\ell}) and we are done.∎

B.3 Proof of Lemma 4.2

Proof B.3.

The proof is done by induction on \ell.

Basis. =0\ell=0. wL0=T0w\in L_{0}=T_{0}^{*} and every transition tt occurring in w|Tw|_{T} is such that Z(t)=Z(t)=\emptyset, hence the def. of NN^{\prime} and 𝐦a[wN𝐦b\mathbf{m}_{a}\left[{w}\right\rangle_{N^{\prime}}\mathbf{m}_{b} show that S(𝐦a)[w|TNS(𝐦b)S(\mathbf{m}_{a})\left[{w|_{T}}\right\rangle_{N}S(\mathbf{m}_{b}).

Step. >0\ell>0. The definition of LL_{\ell} shows that w((p,cL1)T)kw\in(({\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1})\cup T_{\ell})^{k} for some kk\in{\mathbb{N}}. The proof is done by induction on kk. The case k=0k=0 (w=ϵw=\epsilon) is trivially solved. For k>0k>0 we have that w=w1wkw=w_{1}\cdots w_{k} where wip,cL1w_{i}\in{\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1} or wiTw_{i}\in T_{\ell}. If w1p,cL1w_{1}\in{\left\langle p_{\ell},c_{\ell}\right\rangle}\star L_{\ell-1} then w1=pivciw_{1}=p_{\ell}^{i}vc_{\ell}^{i} for some ii\in{\mathbb{N}}, vL1v\in L_{\ell-1}. Let 𝐦0,𝐦0,𝐦1,𝐦1\mathbf{m}_{0},\mathbf{m}^{\prime}_{0},\mathbf{m}^{\prime}_{1},\mathbf{m}_{1} such that 𝐦a=𝐦0[pi𝐦0[v𝐦1[ci𝐦1\mathbf{m}_{a}=\mathbf{m}_{0}\left[{p_{\ell}^{i}}\right\rangle\mathbf{m}^{\prime}_{0}\left[{v}\right\rangle\mathbf{m}^{\prime}_{1}\left[{c_{\ell}^{i}}\right\rangle\mathbf{m}_{1}. We conclude from (SR)(𝐦a)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{a})=\varnothing and pip_{\ell}^{i} that (S1R1)(𝐦0)=(S_{\ell-1}\cup R_{\ell-1})(\mathbf{m}^{\prime}_{0})=\varnothing. Next Lem. 4.1 shows that (S1R1)(𝐦1)=(S_{\ell-1}\cup R_{\ell-1})(\mathbf{m}^{\prime}_{1})=\varnothing. Hence, the induction hypothesis on L1L_{\ell-1} shows that S(𝐦0)[v|TNS(𝐦1)S(\mathbf{m}^{\prime}_{0})\left[{v|_{T}}\right\rangle_{N}S(\mathbf{m}^{\prime}_{1}). Finally the definition of w1w_{1} shows that w1|T=v|Tw_{1}|_{T}=v|_{T}, hence that S(𝐦0)[w1|TNS(𝐦1)S(\mathbf{m}^{\prime}_{0})\left[{w_{1}|_{T}}\right\rangle_{N}S(\mathbf{m}^{\prime}_{1}), and finally that S(𝐦0)[w1|TNS(𝐦1)S(\mathbf{m}_{0})\left[{w_{1}|_{T}}\right\rangle_{N}S(\mathbf{m}_{1}) since S(𝐦0)=S(𝐦0)S(\mathbf{m}_{0})=S(\mathbf{m}^{\prime}_{0}) and S(𝐦1)=S(𝐦1)S(\mathbf{m}_{1})=S(\mathbf{m}^{\prime}_{1}). Also from the assumption (SR)(𝐦0)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{0})=\varnothing, w1Lw_{1}\in L_{\ell} and Lem. 4.1 we conclude that (SR)(𝐦1)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{1})=\varnothing.

Let us now turn to the case w1Tw_{1}\in T_{\ell}. Let 𝐦1\mathbf{m}_{1} such that 𝐦a[w1𝐦1\mathbf{m}_{a}\left[{w_{1}}\right\rangle\mathbf{m}_{1}, we conclude from (SR)(𝐦a)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{a})=\varnothing, w1Lw_{1}\in L_{\ell} and Lem. 4.1 that (SR)(𝐦1)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{1})=\varnothing, hence that S(𝐦a)[w1|TNS(𝐦1)S(\mathbf{m}_{a})\left[{w_{1}|_{T}}\right\rangle_{N}S(\mathbf{m}_{1}) since w1|T=tjw_{1}|_{T}=t_{j}, Z(tj)=SZ(t_{j})=S_{\ell} and S(𝐦a)=S_{\ell}(\mathbf{m}_{a})=\varnothing.

Finally we use the induction hypothesis on w2wkw_{2}\cdots w_{k} (we can because (1) w2wkLw_{2}\cdots w_{k}\in L_{\ell} and (2) we have shown that (SR)(𝐦1)=(S_{\ell}\cup R_{\ell})(\mathbf{m}_{1})=\varnothing in both cases) and we are done. ∎

B.4 Proof of Lemma 4.3

Proof B.4.

The proof is done by induction on \ell.

Basis. =0\ell=0. First, let us observe that, since =0\ell=0, the predicates S(μ1)=S(μ2)=S_{\ell}(\mu_{1})=S_{\ell}(\mu_{2})=\varnothing and R(𝐦1)=R(𝐦2)=R_{\ell}(\mathbf{m}_{1})=R_{\ell}(\mathbf{m}_{2})=\varnothing are vacuously true. Let μ1[uNμ2\mu_{1}\left[{u}\right\rangle_{N}\mu_{2} where uL0|Tu\in{L_{0}|_{T}}. Then, there is a word wL0w\in L_{0} such that u=w|Tu=w|_{T}. Let 𝐦1𝕄[S]\mathbf{m}_{1}\in{\mathbb{M}[S^{\prime}]} defined as follows: S(𝐦1)=μ1S(\mathbf{m}_{1})=\mu_{1}, and 𝐦1(ri)=|w|\mathbf{m}_{1}(r_{i})=|w| for all i{1,,n}i\in{\left\{1,\ldots,n\right\}}. Then, we have 𝐦1[wN\mathbf{m}_{1}\left[{w}\right\rangle_{N^{\prime}} which yields 𝐦2\mathbf{m}_{2} since there are enough tokens in the places RnR_{n}. Moreover, we have S(𝐦2)=μ2S(\mathbf{m}_{2})=\mu_{2} since no transition in {p1,c1,,pn,cn}{\left\{p_{1},c_{1},\ldots,p_{n},c_{n}\right\}} has an arc to a place in SS.

Step. >0\ell>0. Since there is uL|Tu\in{L_{\ell}|_{T}} such that μ1[uNμ2\mu_{1}\left[{u}\right\rangle_{N}\mu_{2}, then either case must hold:

  • Case 1: uL1|Tu\in L_{\ell-1}|_{T}. Then, we can use the induction hypothesis to show that there are 𝐦1,𝐦2𝕄[S]\mathbf{m}^{\prime}_{1},\mathbf{m}^{\prime}_{2}\in{\mathbb{M}[S^{\prime}]} and wL1w^{\prime}\in L_{\ell-1} such that S(𝐦1)=μ1S(\mathbf{m}^{\prime}_{1})=\mu_{1}, S(𝐦2)=μ2S(\mathbf{m}^{\prime}_{2})=\mu_{2}, R1(𝐦1)=R1(𝐦2)=R_{\ell-1}(\mathbf{m}^{\prime}_{1})=R_{\ell-1}(\mathbf{m}^{\prime}_{2})=\varnothing, and 𝐦1[wN𝐦2\mathbf{m}^{\prime}_{1}\left[{w^{\prime}}\right\rangle_{N^{\prime}}\mathbf{m}^{\prime}_{2}. Next, Lem. 4.1 shows that 𝐦1(s)+𝐦1(r)=𝐦2(s)+𝐦2(r)\mathbf{m}^{\prime}_{1}(s_{\ell})+\mathbf{m}^{\prime}_{1}(r_{\ell})=\mathbf{m}^{\prime}_{2}(s_{\ell})+\mathbf{m}^{\prime}_{2}(r_{\ell}), hence that 𝐦1(r)=𝐦2(r)\mathbf{m}^{\prime}_{1}(r_{\ell})=\mathbf{m}^{\prime}_{2}(r_{\ell}) since S(μi)=S_{\ell}(\mu_{i})=\varnothing and S(𝐦i)=μiS(\mathbf{m}^{\prime}_{i})=\mu_{i} for i{1,2}i\in{\left\{1,2\right\}}. Let w=pjwcjLw=p_{\ell}^{\,j}\,w^{\prime}\,c_{\ell}^{\,j}\in L_{\ell} where j=𝐦1(r)j=\mathbf{m}^{\prime}_{1}(r_{\ell}), and let 𝐦1,𝐦2𝕄[S]\mathbf{m}_{1},\mathbf{m}_{2}\in{\mathbb{M}[S^{\prime}]} such that (S{r})(𝐦i)=(S{r})(𝐦i)(S^{\prime}\setminus{\left\{r_{\ell}\right\}})(\mathbf{m}_{i})=(S^{\prime}\setminus{\left\{r_{\ell}\right\}})(\mathbf{m}^{\prime}_{i}) and 𝐦i(r)=0\mathbf{m}_{i}(r_{\ell})=0 for i{1,2}i\in{\left\{1,2\right\}}. From the above we find that (i) S(𝐦i)=S(𝐦i)=μiS(\mathbf{m}_{i})=S(\mathbf{m}^{\prime}_{i})=\mu_{i} for i{1,2}i\in{\left\{1,2\right\}}, (ii) R(𝐦1)=R(𝐦2)=R_{\ell}(\mathbf{m}_{1})=R_{\ell}(\mathbf{m}_{2})=\varnothing (since R1(𝐦1)=R1(𝐦2)=R_{\ell-1}(\mathbf{m}^{\prime}_{1})=R_{\ell-1}(\mathbf{m}^{\prime}_{2})=\varnothing and by def. of 𝐦1,𝐦2\mathbf{m}_{1},\mathbf{m}_{2}) and (iii) 𝐦1[wN𝐦2\mathbf{m}_{1}\left[{w}\right\rangle_{N^{\prime}}\mathbf{m}_{2} (since 𝐦1(r)=𝐦2(r)\mathbf{m}^{\prime}_{1}(r_{\ell})=\mathbf{m}^{\prime}_{2}(r_{\ell}) we can show that 𝐦1[pj𝐦1[w𝐦2[cj𝐦2\mathbf{m}_{1}\left[{p_{\ell}^{j}}\right\rangle\mathbf{m}^{\prime}_{1}\left[{w^{\prime}}\right\rangle\mathbf{m}^{\prime}_{2}\left[{c_{\ell}^{j}}\right\rangle\mathbf{m}_{2}) and we are done.

  • Case 2: u=w0ti1w1ti2w2tikwku=w_{0}t_{i_{1}}w_{1}t_{i_{2}}w_{2}\cdots t_{i_{k}}w_{k} for some w1,,wkL1|Tw_{1},\ldots,w_{k}\in L_{\ell-1}|_{T} and ti1,,tikT|Tt_{i_{1}},\ldots,t_{i_{k}}\in T_{\ell}|_{T} (also Z(ti1)==Z(tik)=SZ(t_{i_{1}})=\cdots=Z(t_{i_{k}})=S_{\ell}). To simplify the presentation, we assume that k=1k=1. (The general case can be handled in the same way.) Then, there are μ1,μ2𝕄[S]\mu^{\prime}_{1},\mu^{\prime}_{2}\in{\mathbb{M}[S]} such that μ1[w0μ1[ti1μ2[w1μ2\mu_{1}\left[{w_{0}}\right\rangle\mu^{\prime}_{1}\left[{t_{i_{1}}}\right\rangle\mu^{\prime}_{2}\left[{w_{1}}\right\rangle\mu_{2}. Since μ1[ti1μ2\mu^{\prime}_{1}\left[{t_{i_{1}}}\right\rangle\mu^{\prime}_{2}, Z(ti1)=SZ(t_{i_{1}})=S_{\ell} and S(O(ti1))=S_{\ell}\bigl(O(t_{i_{1}})\bigr)=\varnothing, we have S(μ1)=S(μ2)=S_{\ell}(\mu^{\prime}_{1})=S_{\ell}(\mu^{\prime}_{2})=\varnothing. Hence, we can apply the first case to the runs μ1[w0μ1\mu_{1}\left[{w_{0}}\right\rangle\mu^{\prime}_{1} and μ2[w1μ2\mu^{\prime}_{2}\left[{w_{1}}\right\rangle\mu_{2}, to show there are 𝐦1,𝐦1,𝐦2,𝐦2𝕄[S]\mathbf{m}_{1},\mathbf{m}^{\prime}_{1},\mathbf{m}^{\prime}_{2},\mathbf{m}_{2}\in{\mathbb{M}[S^{\prime}]} such that S(𝐦i)=μiS(\mathbf{m}_{i})=\mu_{i}, S(𝐦i)=μiS(\mathbf{m}^{\prime}_{i})=\mu^{\prime}_{i}, R(𝐦i)=R(𝐦i)=R_{\ell}(\mathbf{m}^{\prime}_{i})=R_{\ell}(\mathbf{m}_{i})=\varnothing for i{1,2}i\in{\left\{1,2\right\}}, 𝐦1[𝐦1NL\mathbf{m}^{\prime}_{1}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}}, and 𝐦2[𝐦2NL\mathbf{m}_{2}\in\left[{\mathbf{m}^{\prime}_{2}}\right\rangle^{L_{\ell}}_{N^{\prime}}. Moreover ti1T|Tt_{i_{1}}\in T_{\ell}|_{T} shows that there exist ui1{p+1,,pn}u_{i_{1}}\in{\left\{p_{\ell+1},\ldots,p_{n}\right\}}^{*} and vi1{c+1,,cn}v_{i_{1}}\in{\left\{c_{\ell+1},\ldots,c_{n}\right\}}^{*} such that ui1ti1vi1Tu_{i_{1}}\cdot t_{i_{1}}\cdot v_{i_{1}}\in T_{\ell}. Therefore we can pick 𝐦1,𝐦1,𝐦2,𝐦2\mathbf{m}_{1},\mathbf{m}^{\prime}_{1},\mathbf{m}^{\prime}_{2},\mathbf{m}_{2} such that in addition to the above constraints we have 𝐦1[ui1ti1vi1N𝐦2\mathbf{m}^{\prime}_{1}\left[{u_{i_{1}}t_{i_{1}}v_{i_{1}}}\right\rangle_{N^{\prime}}\mathbf{m}^{\prime}_{2} which is possible since μ1[ti1μ2\mu^{\prime}_{1}\left[{t_{i_{1}}}\right\rangle\mu^{\prime}_{2} and S(𝐦i)=μiS(\mathbf{m}^{\prime}_{i})=\mu^{\prime}_{i} for i{1,2}i\in{\left\{1,2\right\}}. Finally the above reasoning shows that 𝐦1[𝐦1NL\mathbf{m}^{\prime}_{1}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}}, 𝐦2[𝐦1NL\mathbf{m}^{\prime}_{2}\in\left[{\mathbf{m}^{\prime}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}}, 𝐦2[𝐦2NL\mathbf{m}_{2}\in\left[{\mathbf{m}^{\prime}_{2}}\right\rangle^{L_{\ell}}_{N^{\prime}}, hence that 𝐦2[𝐦1NL\mathbf{m}_{2}\in\left[{\mathbf{m}_{1}}\right\rangle^{L_{\ell}}_{N^{\prime}} by definition of LL_{\ell} and we are done since S(𝐦i)=μiS(\mathbf{m}_{i})=\mu_{i}, R(𝐦i)=R_{\ell}(\mathbf{m}_{i})=\varnothing for i{1,2}i\in{\left\{1,2\right\}}.∎