Je suis en train d'écrire le modèle suivant dans NuSMVNuSMV - ET modèle
En d'autres termes, z devient mauvaise que lorsque x et y sont en mauvais état aussi. Ceci est le code que j'ai écrit
MODULE singleton
VAR state: {good, bad};
INIT state = good
TRANS (state = good) -> next(state) = bad
TRANS (state = bad) -> next(state) = bad
MODULE effect(cond)
VAR state: {good, bad};
ASSIGN
init(state) := good;
next(state) := case
(state = bad) : bad;
(state = good & cond) : bad;
(!cond) : good;
TRUE : state;
esac;
MODULE main
VAR x : singleton;
VAR y : singleton;
VAR z : effect((x.state = bad) & (y.state = bad));
Mais je me suis seulement ces états atteignables
NuSMV > print_reachable_states -v
######################################################################
system diameter: 3
reachable states: 3 (2^1.58496) out of 8 (2^3)
------- State 1 ------
x.state = good
y.state = good
z.state = good
------- State 2 ------
x.state = bad
y.state = bad
z.state = bad
------- State 3 ------
x.state = bad
y.state = bad
z.state = good
-------------------------
######################################################################
Comment puis-je modifier mon code pour obtenir également
x.state = good
y.state = bad
z.state = good
x.state = bad
y.state = good
z.state = good
dans les états atteignables? En outre, je ne suis pas sûr si je dois ajouter ou non cette flèche rouge imprimée dans l'image du modèle: si x et y sont en état mauvais, je veux que pour sûr, tôt ou tard aussi z devient mauvais .
Merci beaucoup d'avoir aidé!
Merci beaucoup! Maintenant, je comprends enfin ce qui n'allait pas avec mon code :) – panda