------------------------------------ MODULE 2PossibleTraces -----------------------------
(*
There should be only two possible paths for x to reach 3
0 -> 1 -> 3
0 -> 2 -> 3
*)
EXTENDS Integers, FiniteSets, Sequences, TLC
VARIABLES
\* @type: Int;
x
\* @type: () => Bool;
Init == x = 0
ZeroToOne == x = 0 /\ x' = 1
ZeroToTwo == x = 0 /\ x' = 2
OneToThree == x = 1 /\ x' = 3
TwoToThree == x = 2 /\ x' = 3
ThreePlus == 2 < x /\ x' = x + 1
Next ==
\/ ZeroToOne
\/ ZeroToTwo
\/ OneToThree
\/ TwoToThree
\/ ThreePlus
===============================================================================