Hello everyone.
What do you think, is a violation of the temporal property a normal behavior or not?
Because from my point of view, it shouldn't be any violation.
So this is a very simple example:
EXTENDS Integers
VARIABLES step, state
vars == <<step, state>>
TypeOK ==
state \in {"created", "inProgress", "completed"}
Init ==
/\ step = 1
/\ state = "created"
InProgress ==
/\ state = "created"
/\ step' = step + 1
/\ state' = "inProgress"
Completed ==
/\ state = "inProgress"
/\ step' = step + 1
/\ state' = "completed"
Next ==
\/ InProgress
\/ Completed
Spec == Init /\ [][Next]_vars
TemporalProperty ==
[]<><<state = "completed">>_vars
I am trying to check the temporal property "TemporalProperty" and it fails on the last step:
/\ state = "completed"
/\ step = 3
Stuttering State(num = 4)
If we look at the temporal property expression:
[]<><<state = "completed">>_vars
It says: "should always eventually happen, state = "completed" or vars should be changed".
So on the last step (and all the next steps) state = "completed" and this satisfies the temporal property.
Why does the stuttering error appear?
Thanks for your attention.
--
Bye.
Best regards, Rostislav Nikitin.