node SystemNbPannesFNomDuControleur sub V : Valve[3]; T : Tank; C : NomDuControleur; assert T.input = (V[0].rate + V[1].rate); T.output = V[2].rate; /* les observations du controleurs */ C.rate[0] = V[0].rate; C.rate[1] = V[1].rate; C.rate[2] = V[2].rate; C.level = T.level; /* to limit the number of failures */ nbFailures >= (V[0].stucked + V[1].stucked + V[2].stucked); state ctrl : bool; init ctrl := true; event env, cmd; trans ctrl |- cmd -> ctrl := false; ~ctrl |- env -> ctrl := true; sync ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; edon