# Fluid Net Models: From Behavioral Properties to Structural Objects
## 2 Basic Concepts and Notations
### Fluid or Continuous Petri Net System
(Necessity) If there are no empty siphons at \(\mathbf{m}_{0}\), then it is possible firing the enabled transitions (maybe in fractions of the enabling degree), so that new transitions are enabled maintaining the previous transitions enabled, which can be done until every place \(p\in P\) is marked. Thus, every transition \(t\in T\) can be fired. As a remark, the above property does not hold in both ways for discrete Petri nets. It is true that if there are not dead transitions at \(\mathbf{m}_{0}\), then there are no empty siphons at \(\mathbf{m}_{0}\). However, the converse is not true. Figure 3 shows a consistent Petri net with an initial marking: if considered as discrete, transition \(t_{5}\) cannot be fired (it is a dead transition); however, there is no empty siphon at the initial marking. If considered as continuous, transition \(t_{5}\) can be fired after firing transitions \(t_{1}\) and \(t_{2}\) by half its enabling degree. Now, two algorithms are provided to evaluate the conditions: _there is no empty siphon at \(\mathbf{m}_{0}\)_ and _the net is consistent_. Figure 3: Consistent Petri net with no empty siphons. Transition \(t_{5}\) is dead as discrete, but fireable as continuous. Based on the results of [17], the Algorithm 1 determines if the net is consistent and has no dead transitions, which is equivalent to not having empty siphons in continuous Petri nets (Property 1). It computes if there is a T-semiflow \(\mathbf{x}\geq\mathbf{1}\) involving all transitions of the net \(N\) (line 2). If it exists, then it continues computing the set of enabled transitions at \(\mathbf{m}_{0}\) (line 8). Then, those transitions are fired with half their enabling degree (line 11) and the set of enabled transitions are computed again for the new marking (line 12). This procedure is repeated until the set of enabled transitions is \(T\) (there are no dead transitions) or the set does not grow anymore (there are dead transitions). The algorithm runs in polynomial time. ```
0:\(\langle N,\mathbf{m}_{0}\rangle\). 0: If \(N\) is consistent and there are no empty siphons
1: Compute the token-flow matrix \(\mathbf{C}=\mathbf{Post}-\mathbf{Pre}\)
2: Compute the existence of a positive T-semiflow \(\mathcal{P}_{1}:\) {Find \(\mathbf{x}\geq\mathbf{1}\) s.t. \(\mathbf{Cx}=\mathbf{0}\)}
3:if\(\mathcal{P}_{1}\) has no solution then
4:\(N\) is not consistent
5:else
6:\(N\) is consistent
7:\(T^{0}:=\emptyset\)
8:\(T^{1}:=\{t|enab(t,\mathbf{m}_{0})>0\}\)
9:\(j:=1\)
10:while\(T^{j}\
eq T\) and \(T^{j}\
eq T^{j-1}\)do
11: Let \(\sigma_{j}\) be a sequence obtained firing all the transitions in \(T^{j}\backslash T^{j-1}\) with half their enabling degree, and let \(\mathbf{m}_{j}:=\mathbf{m}_{j-1}+\mathbf{C}\sigma_{j}\)
12:\(T^{j+1}:=\{t|enab(t,\mathbf{m}_{j})>0\}\)
13:\(j:=j+1\)
14:endwhile
15:if\(T^{j}=T\)then
16: There are no empty siphons at \(\mathbf{m}_{0}\)
17:else
18: There are empty siphons at \(\mathbf{m}_{0}\)
19:endif
20:endif
```  
**Algorithm 1** Computing if the net is consistent and there are no empty siphons at \(\mathbf{m}_{0}\). Following the ideas in [2], another algorithm can be proposed to evaluate if there exists empty siphons at the initial marking. It consists of a linear algebraic method to obtain a _generating family_ of siphons. Theorem 13 in [2] characterizes traps in terms of non-negative solutions to a linear of system inequalities. Siphons can be characterized in the same way by reversing the net. That theorem is now rewritten for siphons:  
**Theorem 1** ([2]). : _Let \(N=\langle P,T,\mathbf{Pre},\mathbf{Post}\rangle\) be a Petri net.