VARIABLES tmp, pc
vars == << tmp, pc >>
Init ==
/\ tmp = 0
/\ pc = "Step1"
Step1 ==
/\ pc = "Step1"
/\ pc' = "Step2"
/\ UNCHANGED << tmp >>
Step2 ==
/\ pc = "Step2"
/\ \/ pc' = "Step1"
\/ pc' = "Done"
/\ UNCHANGED << tmp >>
HackStep ==
/\ tmp' = 1
/\ UNCHANGED << pc >>
Next ==
\/ Step1
\/ Step2
\* Next doesn't have HackStep on it...
\/ (pc = "Done" /\ UNCHANGED vars)
Spec ==
/\ Init /\ [][Next]_vars
/\ WF_vars(Next)
/\ WF_vars(HackStep) \* ...but Spec does have a weak fairness requirement for HackStep
GetsToDone == <>[](pc = "will never get this value")