## 6 Illustrative Example
### Normal Execution  
In this section, we are to show a sample execution of the proposed algorithm starting in an arbitrary system configuration. Each circle in the figure represents an individual process, and within each circle, the primary state variable is shown in the upper left half, the secondary state variable is shown in the lower left half, and the level of the process is shown in the right half. The root process is identified by id 0. Each locked process is denoted by a thicker circle. The construction of the broadcast tree is shown using arrows that indicate the parent-child relationship between adjacent processes. Figure 4 Part 1 shows the arbitrary starting configuration where processes have arbitrary initial values. It is easy to see that Processes 1, 3, and 5 have inconsistent level values with respect to their parents, whereas Processes 2 and 4 have no parent. In one round, all system processes enter the cleaning phase by executing guard \(iCa\) as shown in Figure 4 Part 2. Note that, in our algorithm, the level values of the processes are corrected by the secondary wave. Therefore, it is shown in Part 2 that all the processes are in state \(C\), while their \(L\)-variables still have the initial arbitrary values. Figure 4 Part 3 shows the normal starting configuration where root Process 0 waits until all its neighboring processes (Process 1 and Process 3) enter state \(C\), are locked, and with variables \(L=1\), \(S=C\), and \(S^{\prime}=c\) hold for both the processes by executing guard \(iC1\). In Part 4, the root starts the construction of the normal broadcast tree by entering the broadcast phase (guard \(rB\)). After entering the broadcast phase, notice that the neighbors of the root are all in state \(C\) and locked by the root to guarantee the receipt of the message. However, Processes 1 and 3 do not enter the broadcast phase until ensuring that the neighbors of Processes 1 and 3 not included in the tree are locked and their \(S\), \(S^{\prime}\)  
Figure 3: Illustration of specification violation and semantics change. Normal and abnormal broadcast trees are shown in green and red, respectively. and \(L\) variables are set to \(C\), \(c\), and 2, respectively, by a secondary wave. For that purpose, Processes 1 and 3 initiate the first secondary wave \(f\) ( \(S=C\) and \(S^{{}^{\prime}}=f\)) by entering state \(f\) as shown in Figure 5 Part 5. In the next round, as shown in Figure 5 Part 6, the secondary wave reaches the root as it enters state \(b\). Then, in the next round, Processes 1 and 3 enter state \(b\) as the secondary wave reaches them in a top-down manner, as shown in Figure 5 Part 7. As the secondary wave takes place, the required information is collected from the processes, and the designated parents of the new boundary processes (Processes 2, 4, and 5) are determined by the root and sent to Processes 1 and 3. In the next round, as shown in Figure 5 Part 8, Processes 2, 4, and 5 determine their parents and are locked based on the designations. Therefore, Processes 1 and 3 remain in state \(Cb\) until Processes 2, 4, and 5 assign parents to themselves and also are locked according to the received correction information \(CorreInfo_{1,3}\) by executing the guards \(ic2\) and \(ib7\). Guards \(ic2\) and \(ib7\) are responsible for executing the correction of states of the processes that are not contained in the tree processes when they discover that their locked neighboring processes have received correction information for them. Moreover, the levels of the processes are assigned according to their parent's level values. Subsequently, upon discovering that parent assignments and locking of the new boundary processes are completed, Processes 1 and 3 enter state \(B\) and \(c\) (\(S=B\) and \(S^{{}^{\prime}}=c\)), extending the broadcast to them as shown in Figure 5 Part 9. This concludes a secondary wave. Since the broadcast is not completed, another secondary wave is started by Processes 2, 4, and 5 as shown in Figure 5 Part 10.