**2. Preliminaries**

To keep this chapter self-contained as far as possible, we present some of the necessary definitions and concepts. For standard terminology and notation on Petri net theory and graph theory, we refer the reader to Peterson [12] and Harary [3], respectively. In this chapter, we shall adopt the definition of Jenson [4] for Petri nets:

**Definition 1.** *A Petri net is a 5-tuple C* = (*P*, *T*, *I*−, *I*+, *μ*0)*, where*


In fact, *I*−(*p*, *t*) and *I*+(*p*, *t*) represent the number of arcs from *p* to *t* and *t* to *p* respectively, and some times referred to a 'flow relations'. *I*−, *I*<sup>+</sup> and *μ*<sup>0</sup> can be viewed as matrices of size |*P*|×|*T*|, |*P*|×|*T*| and |*P*| × 1, respectively.

The quadruple (*P*, *T*, *I*−, *I*+) in the definition of the Petri net is called the *Petri net structure*. The *Petri net graph* is a representation of the Petri net structure, which is essentially a bipartite directed multigraph, in which any pair of symmetric arcs (*pi*, *tj*) and (*tj*, *pi*) is called a *self-loop*.

As in many standard books (e.g., see [14]), Petri net is a particular kind of directed graph [3], together with an initial marking *μ*0. The underlying graph of a Petri net is a directed, weighted, bipartite graph consisting of two kinds of nodes, called places and transitions, where arcs are either from a place to a transition or from a transition to a place. No two of the same kind being adjacent. Hence, Petri nets have a well known graphical representation in which transitions are represented as boxes and places as circles with directed arcs interconnecting places and transitions, to represent the flow relations. The initial marking is represented by placing a token, shown as a black dot, in the circle representing a place *pi*, whenever *<sup>μ</sup>*0(*pi*) = 1, 1 <sup>≤</sup> *<sup>i</sup>* <sup>≤</sup> *<sup>n</sup>* <sup>=</sup> <sup>|</sup>*P*|. In general, a *marking <sup>μ</sup>* is a mapping *<sup>μ</sup>* : *<sup>P</sup>* −→ **<sup>N</sup>**. A marking *<sup>μ</sup>* can hence be represented as a vector *<sup>μ</sup>* <sup>∈</sup> **<sup>N</sup>***n*, *<sup>n</sup>* <sup>=</sup> <sup>|</sup>*P*|, such that the *<sup>i</sup> th* component of *μ* is the value *μ*(*pi*), viz., the number of tokens placed at *pi*.

**Definition 2.** *Let C* = (*P*, *<sup>T</sup>*, *<sup>I</sup>*−, *<sup>I</sup>*+, *<sup>μ</sup>*) *be a Petri net. A transition t* <sup>∈</sup> *T is said to be enabled at <sup>μ</sup> if and only if I*−(*p*, *t*) ≤ *μ*(*p*)*,* ∀*p* ∈ *P. An enabled transition may or may not 'fire' (depending on whether or not the event actually takes place). After firing at μ, the new marking μ*� *is given by the rule*

$$
\mu'(p) = \mu(p) - I^-(p, t) + I^+(p, t), \text{for all } p \in P.
$$

We say that *t fires at μ* to yield *μ*� (or, that *t fires μ* to *μ*� ), and we write *μ t* −→ *μ*� , whence *μ*� is said to be *directly reachable* from *μ*. Hence, it is clear, what is meant by a sequence like

$$
\mu^0 \xrightarrow{t\_1} \mu^1 \xrightarrow{t\_2} \mu^2 \xrightarrow{t\_3} \mu^3 \cdots \xrightarrow{t\_k} \mu^k \mu^k
$$

which simply represents the fact that the transitions

2 Will-be-set-by-IN-TECH

For example, in the design of generalized switches such as those used to control automatic machines [1], suppose that we have a sequence of *n* terminals each of which can be either at a prescribed low-voltage (denoted by zero '0') or at a prescribed high-voltage (denoted by unity, '1'). It is required to arrange them so that every one of the 2*<sup>n</sup>* sequences of *n* bits, corresponding to the 2*<sup>n</sup>* binary n-tuples, can appear on the terminals [1]. Now that *Qn*, the binary *n*-cube, is known to be Hamiltonian (in the sense that there exists an all-vertex covering cycle) one can design a "Hamiltonian switch" using a crisp Boolean Petri net that triggers operation of a machine exactly once after 2*<sup>n</sup>* successive switching moves along the prescribed Hamiltonian cycle in *Qn*. The 'switch design' may be imagined to be an arbitrary connected graph of order 2*n*, where connection between a pair (*u*, *v*) of nodes would mean that *v* is to be the terminal that needs to be turned on after the terminal corresponding to *u* (which may or may not be in an active state depending on the machine design). Therefore, a good characterization of such Boolean Petri nets is needed. This problem is still open. Many specific classes of such 1-safe Petri nets have been found [5–7]. Also, many fundamental issues

To keep this chapter self-contained as far as possible, we present some of the necessary definitions and concepts. For standard terminology and notation on Petri net theory and graph theory, we refer the reader to Peterson [12] and Harary [3], respectively. In this chapter,

**(d)** *<sup>I</sup>*−, *<sup>I</sup>*<sup>+</sup> : *<sup>P</sup>* <sup>×</sup> *<sup>T</sup>* −→ **<sup>N</sup>***, where* **<sup>N</sup>** *is the set of nonnegative integers, are called the negative and the*

In fact, *I*−(*p*, *t*) and *I*+(*p*, *t*) represent the number of arcs from *p* to *t* and *t* to *p* respectively, and some times referred to a 'flow relations'. *I*−, *I*<sup>+</sup> and *μ*<sup>0</sup> can be viewed as matrices of size

The quadruple (*P*, *T*, *I*−, *I*+) in the definition of the Petri net is called the *Petri net structure*. The *Petri net graph* is a representation of the Petri net structure, which is essentially a bipartite directed multigraph, in which any pair of symmetric arcs (*pi*, *tj*) and (*tj*, *pi*) is called a *self-loop*. As in many standard books (e.g., see [14]), Petri net is a particular kind of directed graph [3], together with an initial marking *μ*0. The underlying graph of a Petri net is a directed, weighted, bipartite graph consisting of two kinds of nodes, called places and transitions,

regarding Boolean Petri nets emerge from this study.

we shall adopt the definition of Jenson [4] for Petri nets:

**Definition 1.** *A Petri net is a 5-tuple C* = (*P*, *T*, *I*−, *I*+, *μ*0)*, where*

*positive 'incidence functions' (or,'flow functions') respectively,*

**(e)** <sup>∀</sup> *<sup>p</sup>* <sup>∈</sup> *<sup>P</sup>*, <sup>∃</sup>*<sup>t</sup>* <sup>∈</sup> *<sup>T</sup>* : *<sup>I</sup>*−(*p*, *<sup>t</sup>*) �<sup>=</sup> <sup>0</sup> *or I*+(*p*, *<sup>t</sup>*) �<sup>=</sup> <sup>0</sup> *and* <sup>∀</sup>*<sup>t</sup>* <sup>∈</sup> *<sup>T</sup>*, <sup>∃</sup>*<sup>p</sup>* <sup>∈</sup> *<sup>P</sup>* : *<sup>I</sup>*−(*p*, *<sup>t</sup>*) �<sup>=</sup> <sup>0</sup> *or I*+(*p*, *<sup>t</sup>*) �<sup>=</sup> <sup>0</sup>*,*

**2. Preliminaries**

**(c)** *P* ∩ *T* = ∅*,*

**(a)** *P is a nonempty set of 'places',* **(b)** *T is a nonempty set of 'transitions',*

**(f)** *<sup>μ</sup>*<sup>0</sup> : *<sup>P</sup>* <sup>→</sup> **<sup>N</sup>** *is the initial marking.*


$$t\_1, t\_2, t\_3, \dots, t\_k$$

have been successively fired to transform the *initial marking μ*<sup>0</sup> into the *terminal* marking *μk*. The whole of this sequence of transformations is also written in short as *<sup>μ</sup>*<sup>0</sup> *<sup>σ</sup>* −→ *<sup>μ</sup>k*, where *σ* = *t*1, *t*2, *t*3,..., *tk* is called the corresponding *firing sequence*.

A marking *μ* is said to be *reachable from μ*0, if there exists a firing sequence of transitions which successively fire to reach the state *μ* from *μ*0. The set of all markings of a Petri net *C* reachable from a given marking *μ* is denoted by *M*(*C*, *μ*) and, together with the arcs of the form *<sup>μ</sup><sup>i</sup> tr* −→ *<sup>μ</sup><sup>j</sup>* , represents what in standard terminology is called the *reachability graph* of the Petri net *C*, denoted by *R*(*C*, *μ*0). In particular, if the reachability graph has no semicycle then it is called the *reachability tree* of the Petri net.

A place in a Petri net is *safe* if the number of tokens in that place never exceeds one. A Petri net is *safe* if all its places are safe.

The *preset* of a transition *t* is the set of all input places to *t*, i.e., •*t*={*p* ∈ *P* : *I*−(*p*, *t*) > 0}. The *postset* of *t* is the set of all output places from *t*, i.e., *t* •={*<sup>p</sup>* <sup>∈</sup> *<sup>P</sup>* : *<sup>I</sup>*+(*p*, *<sup>t</sup>*) <sup>&</sup>gt; <sup>0</sup>}. Similarly, *<sup>p</sup>*� *s* preset and postset are • *<sup>p</sup>*={*<sup>t</sup>* <sup>∈</sup> *<sup>T</sup>* : *<sup>I</sup>*+(*p*, *<sup>t</sup>*) <sup>&</sup>gt; <sup>0</sup>} and *<sup>p</sup>*•={*<sup>t</sup>* <sup>∈</sup> *<sup>T</sup>* : *<sup>I</sup>*−(*p*, *<sup>t</sup>*) <sup>&</sup>gt; <sup>0</sup>}, respectively.

**Definition 3.** *Let C* = (*P*, *<sup>T</sup>*, *<sup>I</sup>*−, *<sup>I</sup>*+, *<sup>μ</sup>*0) *be a Petri net with* <sup>|</sup>*P*<sup>|</sup> <sup>=</sup> *n and* <sup>|</sup>*T*<sup>|</sup> <sup>=</sup> *m, the incidence matrix I* = [*aij*] *is an n* <sup>×</sup> *m matrix of integers and its entries are given by aij* <sup>=</sup> *<sup>a</sup>*<sup>+</sup> *ij* − *a*<sup>−</sup> *ij where a*+ *ij =I*+(*pi*, *tj*) *is the number of arcs from transition tj to its output place pi and a*<sup>−</sup> *ij =I*−(*pi*, *tj*) *is the number of arcs from place pi to its output transition tj i.e., in other words, I* <sup>=</sup> *<sup>I</sup>*<sup>+</sup> <sup>−</sup> *<sup>I</sup>*−.

#### **3. 1-safe star Petri net is Boolean**

We shall now define *1-safe star* Petri net. The notion of a *star* is from graph theory (see [3]); it is the *complete bipartite graph K*1, *<sup>n</sup>* which consists of exactly one vertex *c*, called the *center*, joined by a single edge *cvi* to the pendant vertex *vi* (i.e. the degree of *vi* is 1) for each *i* ∈ {1, 2, . . . , *n* }, *n* ≥ 1. A *1-safe star Petri net Sn* is obtained by *subdividing* every edge of the graph *K*1,*n*, *n* ≥ 1, so that every subdividing vertex is a place node and the original vertices of *<sup>K</sup>*1,*n*, *<sup>n</sup>* <sup>≥</sup> 1, are the (*<sup>n</sup>* <sup>+</sup> <sup>1</sup>) transition nodes, (*<sup>n</sup>* <sup>+</sup> <sup>1</sup>)*th* being the central node. Further, every arc incident to the central node is directed towards it, and every arc incident to a pendent node is directed towards the pendent node (See Figure 1).

*0*

 *= 1–1+0 =0*

*p*

*t <sup>2</sup>*

*3 t*

**(,)** *1 1*

*t <sup>2</sup>*

*t*

*t 3*

*t*

**(,)** *0 0*

**(,)** *0 1* **(,)** *1 0*

*t <sup>1</sup>*

*1*

*2*

replacing (0, 1) by the label (1, 0) which is the initial marking of *R*0(*S*1, *μ*0).

**(,)** *0 0* **(,)** *0 0*

*R*0(*S*1, *μ*0) by fusing the node labeled (1, 0) with the node labeled (0, 1) in *R*1(*S*1, *μ*0) and

*1 S*

*<sup>t</sup> <sup>2</sup>*

*1 p*

*1*

*t*

*<sup>S</sup>* : *<sup>2</sup> <sup>2</sup>*

*1 p*

*1*

**Figure 2.** <sup>1</sup>−safe star Petri net *<sup>S</sup>*<sup>1</sup> and *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0)

**Figure 3.** 1-safe star Petri net *S*<sup>2</sup>

**Figure 4.** *R*(*S*2, *μ*0), *μ*<sup>0</sup> = (1, 1)

*1 1 11 11 ( ) ( ) ( ,) ( ,)*

*( ) 1 (,) <sup>1</sup> <sup>0</sup> R S* <sup>μ</sup>

Boolean Petri Nets 385

*t <sup>2</sup> t*

*p p I pt I pt* − + μ′ = μ − + *( ) 0 ( ) 0*

*t*

*1*

**Figure 1.** 1-safe star Petri net *Sn*

**Theorem 1.** *[5] The reachability tree of Sn with μ*<sup>0</sup> = (1, 1, 1, 1, . . . , 1) *as the initial marking contains every binary n-vector* (*a*1, *a*2, *a*3, ..., *an*), *ai* ∈ {0, 1}.

*Proof.* We shall prove this result by using the Principle of Mathematical Induction (PMI). Clearly, the reachability tree *R*(*S*1, *μ*0) of *S*<sup>1</sup> generates both the binary 1-vectors (1) and (0) as shown in Figure 2. Next, consider the 1-safe star Petri net *S*<sup>2</sup> as shown in Figure 3 and its reachability tree *R*(*S*2, *μ*0) displayed in Figure 4.

It is clear from Figure 4 that *<sup>R</sup>*(*S*2, *<sup>μ</sup>*0) has all the 4 <sup>=</sup> 22, binary 2-vectors (*a*1, *<sup>a</sup>*2), *<sup>a</sup>*1, *<sup>a</sup>*<sup>2</sup> <sup>∈</sup> {0, 1}. We can construct *<sup>R</sup>*(*S*2, *<sup>μ</sup>*0) from *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0) as follows. Take two copies of *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0). In the first copy, augment each vector of *R*(*S*1, *μ*0), by putting a 0 entry at the second position of every marking vector and denote the resulting labeled tree as *R*0(*S*1, *μ*0). Similarly, in the second copy, augment each vector by putting 1 at the second position of every marking and let *R*1(*S*1, *μ*0) be the resulting labeled tree (See Figure 5). Now, using the following steps we construct the reachability tree *R*(*S*2, *μ*0) of *S*<sup>2</sup> from *R*0(*S*1, *μ*0) and *R*1(*S*1, *μ*0).

**1.** Clearly, the set of binary 2-vectors in *R*0(*S*1, *μ*0) is disjoint with the set of those appearing in *R*1(*S*1, *μ*0) and together they contain all the binary 2-vectors.

**2.** In *<sup>R</sup>*0(*S*1, *<sup>μ</sup>*0), transition *<sup>t</sup>*<sup>2</sup> does not satisfy the enabling condition, since *<sup>I</sup>*−(*pi*, *<sup>t</sup>*) <sup>≤</sup> *μ*(*pi*), for each *pi* ∈ *S*<sup>1</sup> is violated. So, we can ignore this transition at this stage.

**3.** In *R*1(*S*1, *μ*0), transition *t*<sup>2</sup> is enabled and the marking obtained after firing of *t*<sup>2</sup> is actually (1, 0) whereas the augmented vector attached to this node is (0,1). So, we concatenate

**Figure 2.** <sup>1</sup>−safe star Petri net *<sup>S</sup>*<sup>1</sup> and *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0)

4 Will-be-set-by-IN-TECH

We shall now define *1-safe star* Petri net. The notion of a *star* is from graph theory (see [3]); it is the *complete bipartite graph K*1, *<sup>n</sup>* which consists of exactly one vertex *c*, called the *center*, joined by a single edge *cvi* to the pendant vertex *vi* (i.e. the degree of *vi* is 1) for each *i* ∈ {1, 2, . . . , *n* }, *n* ≥ 1. A *1-safe star Petri net Sn* is obtained by *subdividing* every edge of the graph *K*1,*n*, *n* ≥ 1, so that every subdividing vertex is a place node and the original vertices of *<sup>K</sup>*1,*n*, *<sup>n</sup>* <sup>≥</sup> 1, are the (*<sup>n</sup>* <sup>+</sup> <sup>1</sup>) transition nodes, (*<sup>n</sup>* <sup>+</sup> <sup>1</sup>)*th* being the central node. Further, every arc incident to the central node is directed towards it, and every arc incident to a pendent

3*t*

2 *p*

*nt*

2*t*

1 *t*

*contains every binary n-vector* (*a*1, *a*2, *a*3, ..., *an*), *ai* ∈ {0, 1}.

its reachability tree *R*(*S*2, *μ*0) displayed in Figure 4.

1 *p*

*n p*

*<sup>n</sup>* <sup>1</sup> *t*

3 *p*

**Theorem 1.** *[5] The reachability tree of Sn with μ*<sup>0</sup> = (1, 1, 1, 1, . . . , 1) *as the initial marking*

*Proof.* We shall prove this result by using the Principle of Mathematical Induction (PMI). Clearly, the reachability tree *R*(*S*1, *μ*0) of *S*<sup>1</sup> generates both the binary 1-vectors (1) and (0) as shown in Figure 2. Next, consider the 1-safe star Petri net *S*<sup>2</sup> as shown in Figure 3 and

It is clear from Figure 4 that *<sup>R</sup>*(*S*2, *<sup>μ</sup>*0) has all the 4 <sup>=</sup> 22, binary 2-vectors (*a*1, *<sup>a</sup>*2), *<sup>a</sup>*1, *<sup>a</sup>*<sup>2</sup> <sup>∈</sup> {0, 1}. We can construct *<sup>R</sup>*(*S*2, *<sup>μ</sup>*0) from *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0) as follows. Take two copies of *<sup>R</sup>*(*S*1, *<sup>μ</sup>*0). In the first copy, augment each vector of *R*(*S*1, *μ*0), by putting a 0 entry at the second position of every marking vector and denote the resulting labeled tree as *R*0(*S*1, *μ*0). Similarly, in the second copy, augment each vector by putting 1 at the second position of every marking and let *R*1(*S*1, *μ*0) be the resulting labeled tree (See Figure 5). Now, using the following steps we

**1.** Clearly, the set of binary 2-vectors in *R*0(*S*1, *μ*0) is disjoint with the set of those appearing

**2.** In *<sup>R</sup>*0(*S*1, *<sup>μ</sup>*0), transition *<sup>t</sup>*<sup>2</sup> does not satisfy the enabling condition, since *<sup>I</sup>*−(*pi*, *<sup>t</sup>*) <sup>≤</sup>

**3.** In *R*1(*S*1, *μ*0), transition *t*<sup>2</sup> is enabled and the marking obtained after firing of *t*<sup>2</sup> is actually (1, 0) whereas the augmented vector attached to this node is (0,1). So, we concatenate

construct the reachability tree *R*(*S*2, *μ*0) of *S*<sup>2</sup> from *R*0(*S*1, *μ*0) and *R*1(*S*1, *μ*0).

*μ*(*pi*), for each *pi* ∈ *S*<sup>1</sup> is violated. So, we can ignore this transition at this stage.

in *R*1(*S*1, *μ*0) and together they contain all the binary 2-vectors.

*<sup>n</sup>* <sup>1</sup> *t*

*<sup>n</sup>* <sup>1</sup> *<sup>p</sup>*

4 *t*

4 *p*

**3. 1-safe star Petri net is Boolean**

**Figure 1.** 1-safe star Petri net *Sn*

node is directed towards the pendent node (See Figure 1).

**Figure 3.** 1-safe star Petri net *S*<sup>2</sup>

**Figure 4.** *R*(*S*2, *μ*0), *μ*<sup>0</sup> = (1, 1)

*R*0(*S*1, *μ*0) by fusing the node labeled (1, 0) with the node labeled (0, 1) in *R*1(*S*1, *μ*0) and replacing (0, 1) by the label (1, 0) which is the initial marking of *R*0(*S*1, *μ*0).

tree. Hence, using the following steps we construct the reachability tree of the 1-safe star Petri

**1.** Clearly, the set of binary (*n* + 1)-vectors in *R*0(*Sn*, *μ*0) is disjoint with the set of those

**2.** In *<sup>R</sup>*0(*Sn*, *<sup>μ</sup>*0), transition *tn*+<sup>1</sup> does not satisfy the enabling condition, *<sup>I</sup>*−(*pi*, *<sup>t</sup>*) <sup>≤</sup> *<sup>μ</sup>*(*pi*), for

**3.** In *R*1(*Sn*, *μ*0), transition *tn*+<sup>1</sup> is enabled and the marking obtained after firing of *tn*+<sup>1</sup> is actually (1, 1, . . . , 0). So we concatenate *R*0(*Sn*, *μ*0) at this node with the (*n* + 1)-vector (0, 0, . . . , 1) replaced by the actual marking (1, 1, . . . , 0) being the initial marking of

**4.** We then augment an extra pendent node labeled *y*<sup>0</sup> joined to the new root node *x*0, labeled by the (*n* + 1)-vector (1, 1, . . . , 1) by the new arc (*x*0, *y*0) labeled as *tn*+<sup>2</sup> and complete this tree by firing transition(s) at the marking vector(s) where nonzero components appear, till all the transitions become dead. In this way, the tree *T*∗ so obtained has all the binary (*n* + 1)-vectors as its node labels, possibly with repetitions. It remains to show that *T*∗ is indeed the reachability tree *R*(*Sn*+1, *μ*0) of *Sn*+<sup>1</sup> with binary (*n* + 1)-vector (1, 1, 1, . . . , 1) as its initial marking *μ*0. For this, consider an arbitrary (*n* + 1)-vector *μ* = (*a*1, *a*2, *a*3, ..., *an*, 1), where

(*pi*) = *<sup>μ</sup>*(*pi*) <sup>−</sup> *<sup>I</sup>*−(*pi*, *tn*+1) + *<sup>I</sup>*+(*pi*, *tn*+1) = <sup>1</sup> <sup>−</sup> <sup>1</sup> <sup>+</sup> <sup>0</sup> <sup>=</sup> <sup>0</sup>

Then, we get a new marking *μ*� = (*a*1, *a*2, *a*3, ..., *an*, 0), where *ai* ∈ {0, 1}. The marking *μ*� is found in *R*0(*Sn*+1, *μ*0). If all *ai*'s are zero, then *μ*� is a dead marking. Hence, suppose some

to zero. Eventually, this process will lead to a dead marking. Further, the marking vectors of the form *μ* = (*a*1, *a*2, *a*3, ..., *an*, 0) are already obtained as a result of firing *t*1, *t*2, *t*3, ...., *tn* through some subsequences by virtue of the induction hypothesis. Thus, *T*∗ is precisely the

The above theorem opens not only the general problem of determining all such Petri nets but also raises the question of determining such optimal Petri nets ; for example, one can ask

**1.** Precisely which Petri nets produce the set of all binary *n*-vectors with minimum repetitions? **2.** Precisely which Petri nets produce all the binary *n*-vectors in the smallest possible number of steps? As pointed out, these questions could be quite important from practical application

**4.** Is it not possible to take any marking other than (1, 1, 1, ··· , 1) as an initial marking for

*th* component is reduced

Boolean Petri Nets 387

appearing in *R*1(*Sn*, *μ*0) and together they contain all the binary (*n* + 1)-vectors.

each *pi* ∈ *Sn*. So, we can ignore this transition for the moment.

*ai* ∈ {0, 1}, ∀ *i*. When transition *tn*+<sup>1</sup> is enabled, this yields

*ai* �= 0. In this case, *ti* is enabled and in the next new marking *μ*��, the *i*

reachability tree *R*(*Sn*+1, *μ*0) of *Sn*+1. Hence, the result follows by PMI.

**3.** Do there exist Petri nets that generate every binary *n*-vector exactly once?

The following proposition and theorem answer the last two questions.

**Proposition 1.** *[6] If a Petri net is Boolean then <sup>μ</sup>*0(*p*) = 1, <sup>∀</sup>*<sup>p</sup>* <sup>∈</sup> *P.*

**4. Some general questions and a necessary condition**

net *Sn*+<sup>1</sup> having (*n* + 1) places.

*μ*�

*R*0(*Sn*, *μ*0).

point of view.

such a Petri net?

**Figure 5.** Augmented reachability trees and resulting labeled tree *T*∗

**4.** We then augment an extra pendent node labeled *y*<sup>0</sup> joined to the new root node *x*0, labeled by the 2-vector (1, 1), by the new arc (*x*0, *y*0) labeled as *t*<sup>3</sup> and complete this tree by firing transitions(s) at the marking vector(s) where nonzero components appear, till all the transitions become dead. Then the resulting labeled tree *T*∗ is shown in Figure 5. This has all the binary 2-vectors as its node labels, possibly with repetitions. It remains to show that it is the reachability tree *R*(*S*2, *μ*0) of *S*<sup>2</sup> with 2-vector (1, 1) as its initial marking *μ*0. For this, consider an arbitrary 2-vector *μ* = (*a*1, 1), where *a*<sup>1</sup> ∈ {0, 1}. When transition *t*<sup>2</sup> is enabled, this yields

$$
\mu'(p\_i) = \mu(p\_i) - I^-(p\_{i\prime}, t\_2) + I^+(p\_{i\prime}, t\_2),
$$

$$= 1 - 1 + 0 = 0$$

Then, we get a new marking *μ*� = (*a*1, 0), where *a*<sup>1</sup> ∈ {0, 1}. The marking *μ*� is found in *<sup>R</sup>*0(*S*2, *<sup>μ</sup>*0). If all *ai*'s are zero then *<sup>μ</sup>*� is a dead marking. Hence, suppose some *ai* �<sup>=</sup> 0. In this case, *ti* is enabled and in the next new marking *μ*��, the *i th* component is reduced to zero. Eventually, this process will lead to a dead marking. Further, the marking vectors of the form *μ* = (*a*1, 0) are already obtained as a result of firing *t*1, *t*2, through some subsequences. Thus, T is indeed the reachability tree *R*(*S*2, *μ*0) of *S*2.

Now, we assume that the result is true for all the 1-safe star Petri nets *Sk* having *k* places, *k* ≤ *n*. We will prove the result for the 1-safe star Petri net *Sn*+<sup>1</sup> having (*n* + 1) places. For this purpose, consider two copies of the reachability tree *R*(*Sn*, *μ*0) of *Sn*. In the first copy, we extend each vector by augmenting a 0 entry at the (*n* + 1)*th* position and let *R*0(*Sn*, *μ*0) denote the resulting labeled tree. Next, in the second copy of *R*(*Sn*, *μ*0), we augment the entry 1 to the (*n* + 1)*th* position in every marking vector and let *R*1(*Sn*, *μ*0) be the resulting labeled tree. Hence, using the following steps we construct the reachability tree of the 1-safe star Petri net *Sn*+<sup>1</sup> having (*n* + 1) places.

6 Will-be-set-by-IN-TECH

**4.** We then augment an extra pendent node labeled *y*<sup>0</sup> joined to the new root node *x*0, labeled by the 2-vector (1, 1), by the new arc (*x*0, *y*0) labeled as *t*<sup>3</sup> and complete this tree by firing transitions(s) at the marking vector(s) where nonzero components appear, till all the transitions become dead. Then the resulting labeled tree *T*∗ is shown in Figure 5. This has all the binary 2-vectors as its node labels, possibly with repetitions. It remains to show that it is the reachability tree *R*(*S*2, *μ*0) of *S*<sup>2</sup> with 2-vector (1, 1) as its initial marking *μ*0. For this, consider an arbitrary 2-vector *μ* = (*a*1, 1), where *a*<sup>1</sup> ∈ {0, 1}. When transition *t*<sup>2</sup> is

(*pi*) = *<sup>μ</sup>*(*pi*) <sup>−</sup> *<sup>I</sup>*−(*pi*, *<sup>t</sup>*2) + *<sup>I</sup>*+(*pi*, *<sup>t</sup>*2)

Then, we get a new marking *μ*� = (*a*1, 0), where *a*<sup>1</sup> ∈ {0, 1}. The marking *μ*� is found in *<sup>R</sup>*0(*S*2, *<sup>μ</sup>*0). If all *ai*'s are zero then *<sup>μ</sup>*� is a dead marking. Hence, suppose some *ai* �<sup>=</sup> 0. In

zero. Eventually, this process will lead to a dead marking. Further, the marking vectors of the form *μ* = (*a*1, 0) are already obtained as a result of firing *t*1, *t*2, through some subsequences.

Now, we assume that the result is true for all the 1-safe star Petri nets *Sk* having *k* places, *k* ≤ *n*. We will prove the result for the 1-safe star Petri net *Sn*+<sup>1</sup> having (*n* + 1) places. For this purpose, consider two copies of the reachability tree *R*(*Sn*, *μ*0) of *Sn*. In the first copy, we extend each vector by augmenting a 0 entry at the (*n* + 1)*th* position and let *R*0(*Sn*, *μ*0) denote the resulting labeled tree. Next, in the second copy of *R*(*Sn*, *μ*0), we augment the entry 1 to the (*n* + 1)*th* position in every marking vector and let *R*1(*Sn*, *μ*0) be the resulting labeled

*th* component is reduced to

= 1 − 1 + 0 = 0

**Figure 5.** Augmented reachability trees and resulting labeled tree *T*∗

*μ*�

Thus, T is indeed the reachability tree *R*(*S*2, *μ*0) of *S*2.

this case, *ti* is enabled and in the next new marking *μ*��, the *i*

enabled, this yields

**1.** Clearly, the set of binary (*n* + 1)-vectors in *R*0(*Sn*, *μ*0) is disjoint with the set of those appearing in *R*1(*Sn*, *μ*0) and together they contain all the binary (*n* + 1)-vectors.

**2.** In *<sup>R</sup>*0(*Sn*, *<sup>μ</sup>*0), transition *tn*+<sup>1</sup> does not satisfy the enabling condition, *<sup>I</sup>*−(*pi*, *<sup>t</sup>*) <sup>≤</sup> *<sup>μ</sup>*(*pi*), for each *pi* ∈ *Sn*. So, we can ignore this transition for the moment.

**3.** In *R*1(*Sn*, *μ*0), transition *tn*+<sup>1</sup> is enabled and the marking obtained after firing of *tn*+<sup>1</sup> is actually (1, 1, . . . , 0). So we concatenate *R*0(*Sn*, *μ*0) at this node with the (*n* + 1)-vector (0, 0, . . . , 1) replaced by the actual marking (1, 1, . . . , 0) being the initial marking of *R*0(*Sn*, *μ*0).

**4.** We then augment an extra pendent node labeled *y*<sup>0</sup> joined to the new root node *x*0, labeled by the (*n* + 1)-vector (1, 1, . . . , 1) by the new arc (*x*0, *y*0) labeled as *tn*+<sup>2</sup> and complete this tree by firing transition(s) at the marking vector(s) where nonzero components appear, till all the transitions become dead. In this way, the tree *T*∗ so obtained has all the binary (*n* + 1)-vectors as its node labels, possibly with repetitions. It remains to show that *T*∗ is indeed the reachability tree *R*(*Sn*+1, *μ*0) of *Sn*+<sup>1</sup> with binary (*n* + 1)-vector (1, 1, 1, . . . , 1) as its initial marking *μ*0. For this, consider an arbitrary (*n* + 1)-vector *μ* = (*a*1, *a*2, *a*3, ..., *an*, 1), where *ai* ∈ {0, 1}, ∀ *i*. When transition *tn*+<sup>1</sup> is enabled, this yields

$$
\mu'(p\_i) = \mu(p\_i) - I^-(p\_{i\prime}, t\_{n+1}) + I^+(p\_{i\prime}, t\_{n+1}) \ = 1 - 1 + 0 = 0,
$$

Then, we get a new marking *μ*� = (*a*1, *a*2, *a*3, ..., *an*, 0), where *ai* ∈ {0, 1}. The marking *μ*� is found in *R*0(*Sn*+1, *μ*0). If all *ai*'s are zero, then *μ*� is a dead marking. Hence, suppose some *ai* �= 0. In this case, *ti* is enabled and in the next new marking *μ*��, the *i th* component is reduced to zero. Eventually, this process will lead to a dead marking. Further, the marking vectors of the form *μ* = (*a*1, *a*2, *a*3, ..., *an*, 0) are already obtained as a result of firing *t*1, *t*2, *t*3, ...., *tn* through some subsequences by virtue of the induction hypothesis. Thus, *T*∗ is precisely the reachability tree *R*(*Sn*+1, *μ*0) of *Sn*+1. Hence, the result follows by PMI.

#### **4. Some general questions and a necessary condition**

The above theorem opens not only the general problem of determining all such Petri nets but also raises the question of determining such optimal Petri nets ; for example, one can ask

**1.** Precisely which Petri nets produce the set of all binary *n*-vectors with minimum repetitions?

**2.** Precisely which Petri nets produce all the binary *n*-vectors in the smallest possible number of steps? As pointed out, these questions could be quite important from practical application point of view.

**3.** Do there exist Petri nets that generate every binary *n*-vector exactly once?

**4.** Is it not possible to take any marking other than (1, 1, 1, ··· , 1) as an initial marking for such a Petri net?

The following proposition and theorem answer the last two questions.

**Proposition 1.** *[6] If a Petri net is Boolean then <sup>μ</sup>*0(*p*) = 1, <sup>∀</sup>*<sup>p</sup>* <sup>∈</sup> *P.*

*Proof.* Suppose *<sup>C</sup>* = (*P*, *<sup>T</sup>*, *<sup>I</sup>*−, *<sup>I</sup>*+, *<sup>μ</sup>*0) is a Petri net which is Boolean and *<sup>μ</sup>*0(*pi*) �<sup>=</sup> 1 for some *pi* ∈ *P*. By the definition of a Petri net, no place can be isolated. Therefore *pi* has to be connected to some *ti* ∈ *T*. Now, three cases arise for consideration:

the total number of transitions <sup>=</sup> 21 <sup>−</sup> <sup>1</sup> <sup>=</sup> 1,

6 in the first step and after this step, transition becomes dead.

<sup>2</sup> *C* :

1 *p*

2 *p*

0 <sup>2</sup> *R C*( , ): μ

the total number of transitions <sup>=</sup> 22 <sup>−</sup> <sup>1</sup> <sup>=</sup> <sup>4</sup> <sup>−</sup> <sup>1</sup> <sup>=</sup> 3,

Total number of transitions whose post-sets having no element = <sup>1</sup>*C*<sup>0</sup> = 1 and this transition is *t*1. Clearly, *R*(*C*1, *μ*0) of *C*<sup>1</sup> generates both the binary 1-vectors (1) and (0) as shown in Figure

1*t*

Boolean Petri Nets 389

2*t*

3*t*

<sup>2</sup>*<sup>t</sup>* <sup>3</sup>*<sup>t</sup>*

(1, 1 )

( 0,1) (1, 0 ) (0, 0)

The total number of transitions whose post-sets have one element = <sup>2</sup>*C*<sup>1</sup> = 2 and these

The total number of transitions whose post-sets have no element = <sup>2</sup>*C*<sup>0</sup> = 1 and this transition

It is clear from Figure 7 that *<sup>R</sup>*(*C*2, *<sup>μ</sup>*0) has exactly 4 <sup>=</sup> 22 binary 2-vectors (*a*1, *<sup>a</sup>*2), *<sup>a</sup>*1, *<sup>a</sup>*<sup>2</sup> <sup>∈</sup>

We can construct *R*(*C*2, *μ*0) from *R*(*C*1, *μ*0) as follows: Take two copies of *R*(*C*1, *μ*0). In the first copy, augment each vector of *R*(*C*1, *μ*0) by the adjunction of a '0' entry at the second coordinate of every marking vector and denote the resulting labeled tree as *R*0(*C*1, *μ*0). Similarly, in the second copy, augment each vector by the adjunction of a '1' at the second coordinate of every marking vector and let *R*1(*C*1, *μ*0) be the resulting labeled tree (see Figure 8). Now, using

{0, 1} in the first step and after this step, all the transitions become dead.

Next, for *n* = 2, the Petri net *C*<sup>2</sup> shown in Figure 7 has two places. In *C*2, we have

1*t*




<sup>1</sup> <sup>|</sup> <sup>=</sup> 21 <sup>−</sup> <sup>1</sup> <sup>=</sup> 1,

• *<sup>p</sup>*1<sup>|</sup> <sup>=</sup> 21−<sup>1</sup> <sup>−</sup> <sup>1</sup> <sup>=</sup> 0,

**Figure 7.** Petri net *C*<sup>2</sup> and *R*(*C*2, *μ*0)

<sup>|</sup>*p*•| <sup>=</sup> 22 <sup>−</sup> <sup>1</sup> <sup>=</sup> 3, <sup>∀</sup> *<sup>p</sup>*,

transitions are *t*1, *t*2.

• *<sup>p</sup>*<sup>|</sup> <sup>=</sup> 22−<sup>1</sup> <sup>−</sup> <sup>1</sup> <sup>=</sup> 1, <sup>∀</sup> *<sup>p</sup>*,



is *t*3.

•*t*| = 2, ∀ *t*.

$$\begin{array}{l} \mathbf{Case-1:} \ p\_i \in t\_{i'}^\bullet\\ \mathbf{Case-2:} \ p\_i \in \stackrel{\bullet}{\bullet} t\_i \cap t\_{i'}^\bullet \text{ and} \\ \mathbf{Case-3:} \ p\_i \in \stackrel{\bullet}{\bullet} t\_i \end{array}$$

In Case 1, since the given Petri net *C* is safe, •*ti* �= ∅ [2]. Therefore, ∃ *pj* ∈•*ti* for some *pj* ∈ *P*. *pj* will have either one token or no token. If *pj* has one token then *ti* is enabled and hence fires. After firing of *ti*, *pj* will have no token and *pi* will receive one token. So, both the places cannot have one token simultaneously. Hence, we will not get the marking vector whose components are all equal to 1. Again, if *pj* has no token then *ti* cannot fire, whence *pi* will never receive a token, which contradicts the assumption of the case.

Case 2 follows from the arguments given for Case 1 above since, in particular, *pi* ∈ *t*• *i* .

Also, in Case 3, as in the proof of Case 1 *pi* ∈ •*ti* implies that we cannot have the marking vector whose components are all equal to 1.

Thus, if a Petri net generates all the binary *<sup>n</sup>*-vectors then *<sup>μ</sup>*0(*pi*) = <sup>1</sup> <sup>∀</sup> *pi* <sup>∈</sup> *<sup>P</sup>*.
