**9. An embedding theorem and complexity**

The following is a "frustration theorem" due to the negative fact it reveals, to the effect that one cannot hope to have a "forbidden subgraph characterization" of a Boolean Petri net.

**Theorem 8.** *[10]: Every* <sup>1</sup>*-safe Petri net C* = (*P*, *<sup>T</sup>*, *<sup>I</sup>*−, *<sup>I</sup>*+, *<sup>μ</sup>*0)*,* <sup>|</sup>*P*<sup>|</sup> <sup>=</sup> *n with <sup>μ</sup>*0(*p*) = <sup>1</sup> <sup>∀</sup> *<sup>p</sup>* <sup>∈</sup> *<sup>P</sup> can be embedded as an induced subnet of a Boolean Petri net.*

*Proof.* Let *<sup>C</sup>* = (*P*, *<sup>T</sup>*, *<sup>I</sup>*−, *<sup>I</sup>*+, *<sup>μ</sup>*0), <sup>|</sup>*P*<sup>|</sup> <sup>=</sup> *<sup>n</sup>* be a 1-safe Petri net. If *<sup>C</sup>* is a Boolean Petri net then there is nothing to prove. Hence, assume that *C* is not a Boolean Petri net. Then, we have the following steps to obtain a Boolean Petri net *C*� in which *C* is one of its induced subnets.

**Step-1:** First of all, find those places in *C* each of whose postsets has single distinct sink transition (if the postset of a place has more than one distinct sink transitions then choose only one transition giving *K*2). Suppose such places are *p*1, *p*2, ··· , *pk*, 1 ≤ *k* < *n*. If there is no sink transition in *C*, then augment one sink transition to each place in *C*.

**Step-2:** Augment *n* − *k* new transitions and join each of them to the remaining *n* − *k* places in *C* by an arc from a place to a new transition creating *n* − *k* new active transitions.

**Step-3:** Thus, in *<sup>C</sup>*� we have *<sup>n</sup>*-copies of *<sup>K</sup>*<sup>2</sup> as its subgraph. Since *<sup>μ</sup>*0(*p*) = <sup>1</sup> <sup>∀</sup>*<sup>p</sup>* <sup>∈</sup> *<sup>P</sup>*, all the transitions are enabled. Firing of *n* transitions forming *n* 'pendant transitions' will produce *nC*<sup>1</sup> distinct binary *n*-vectors whose Hamming distance is 1 from the initial marking vector. At these marking vectors, *n* − 1 transitions out of those *n* transitions are enabled, and after firing give at least *nC*<sup>2</sup> distinct marking vectors, each of whose Hamming distance is 2 from the initial marking.

In general at any stage *<sup>j</sup>*, 3 <sup>≤</sup> *<sup>j</sup>* <sup>≤</sup> *<sup>n</sup>*, we get a set of at least *nCj* new distinct binary *<sup>n</sup>*-vectors whose Hamming distance is *j* from the initial marking, which are also distinct from the sets of *nCr* distinct marking vectors for all *<sup>r</sup>*, 2 <sup>≤</sup> *<sup>r</sup>* <sup>≤</sup> *<sup>j</sup>* <sup>−</sup> 1. Therefore, at the *<sup>n</sup>th* stage we would have obtained at least *nC*<sup>1</sup> <sup>+</sup>*<sup>n</sup> <sup>C</sup>*<sup>2</sup> <sup>+</sup> ··· <sup>+</sup>*<sup>n</sup> Cn*=2*<sup>n</sup>* <sup>−</sup> 1 distinct binary *<sup>n</sup>*-vectors. Together with the initial marking (1, 1, ··· , 1), we thus see that all the 2*<sup>n</sup>* binary *<sup>n</sup>*-vectors would have been obtained as marking vectors, possibly with repetitions. Thus *C*� is Boolean.

Therefore, every 1-safe Petri net *C* can be embedded as an induced subgraph of a Boolean Petri net.
