# State-Bust Feedback Control for Fault Recovery of Input/State Asynchronous Sequential Machines
## 3 Diagnoser  
For \(G\) to determine whether or not a transient fault occurs, \(z_{f}\) and \(z_{l}\) of the current state burst \(z\) are investigated with respect to \(u\in A_{n}\). Assume first that \((z_{f},u,z_{l})\in s\). This implies that \(\Sigma\) undergoes a nominal stable transition \(z_{f}\stackrel{{ u}}{{\rightarrow}}z_{l}\). To signify this, we assign the fault indicator signal \(m:=0\). Accordingly, \(G\) is set to be \(G(z,u):=(z_{l},0)\) if \((z_{f},u,z_{l})\in s\). On the other hand, assume that \((z_{f},u,z_{l})\
otin s\). This elucidates that the latest stable transition is caused not by \(u\), but by \(w\in W(z_{f})\) such that \(s(z_{f},w)=z_{l}\) and \(z_{l}\in\Gamma(z_{f})\). In this case, we assign \(m:=i\in N_{0}\backslash\{0\}\), where \(i\) is the index of the state at which the fault occurs, i.e., \(z_{f}=x_{i}\). Hence \(G(z,u):=(z_{l},i)\) if \((z_{f},u,z_{l})\
otin s\) and \(z_{f}=x_{i}\). Once a transient fault is diagnosed, \(\Sigma\) is controlled to return to the original state \(x_{i}\) via a chain of stable transitions. This means that after diagnosing a transient fault, \(G\) receives a sequence of pairs of state bursts and control inputs characterizing nominal stable transitions. Since the procedure of fault recovery persists until \(\Sigma\) reaches \(x_{i}\), \(G\) must continue to give the same fault indicator signal \(m=i\) unless the state feedback \(x_{i}\) is received. Thus \(m\) of \(G(z,u)\) is set to be unchanged if \((z_{f},u,z_{l})\in s\), \(m_{o}=i\
eq 0\), and \(z_{l}\
eq x_{i}\), where \(m_{o}\) is the previous value of \(m\). Finally, assume that fault recovery is accomplished as \(\Sigma\) reaches \(x_{i}\). Upon receiving the state feedback \(x_{i}\), \(G\) must signify the end of the recovery procedure. Hence \(G\) is designed to generate \(m=0\) at this phase, or \(G(z,u):=(z_{l},0)\) if \((z_{f},u,z_{l})\in s\), \(m_{o}=i\), and \(z_{l}=x_{i}\). Combining the above discussions, we encapsulate the algorithm of fault detection and isolation by \(G\). Algorithm 1: Fault detection and isolation by \(G\) with \(X=\{x_{1},\ldots,x_{n}\}\) and \(m_{o}\in N_{0}\) (the previous value of \(m\)):  
```
1. Receive \(z\) and \(u\), and extract \(z_{f}\) and \(z_{l}\) from \(z\). 2. If \(m_{o}=0\), check \((z_{f},u,z_{l})\): 1. If \((z_{f},u,z_{l})\
otin s\), set \(m:=i\) where \(z_{f}=x_{i}\). 2. Else if \((z_{f},u,z_{l})\in s\), maintain \(m=0\). 3. Else if \(m_{o}=i\
eq 0\), check \(z_{l}\): 1. If \(z_{l}\
eq x_{i}\), maintain \(m=i\). 2. Else if \(z_{l}=x_{i}\), set \(m:=0\). 4. If \(m=i\), a transient fault has occurred at \(x_{i}\); else if \(m=0\), no fault has occurred yet or the normal input/state behavior of \(\Sigma\) is recovered. ```  
**Algorithm 1** Fault detection and isolation by \(G\) with \(X=\{x_{1},\ldots,x_{n}\}\) and \(m_{o}\in N_{0}\) (the previous value of \(m\)):  
**Proof. ** In Algorithm 1, the value of \(m\) is \(0\) at either Step 2.b or Step 3.b. The algorithm goes to Step 2.b when \((z_{f},u,z_{l})\in s\). As this indicates the execution of the nominal stable transition \(z_{f}\stackrel{{ u}}{{\rightarrow}}z_{l}\), no transient fault occurs. Step 3.b implies that after a transient fault at \(x_{i}\) (\(m_{o}=i\)), \(\Sigma\) recovers the normal behavior by reaching \(x_{i}\). Hence \(m=0\) corresponds to no fault occurrence or fault recovery. On the other hand, \(m\) is assigned a non-zero index at either Step 2.a or Step 3.a. Since both steps represent an unauthorized transition from \(x_{i}\) or failure of returning to \(x_{i}\), \(m=i\) serves as the indicator for fault detection and isolation. A formal definition of \(G\) is constructed from the above algorithm as follows:  
\[G(z,u):= \begin{cases}(z_{l},i)&(z_{f},u,z_{i})\
otin s,\;u\in U(z_{f}),\;\text{ and}\;z_{f}=x_{i}\\ (z_{l},\cdot)&(z_{f},u,z_{l})\in s,\;m_{o}-i,\;\text{and}\;z_{l}\
eq x_{i}\\ (z_{l},0)&\text{otherwise}\end{cases}  \tag{3}\]  
where '-' in the second line implies 'unchanged'.