but I would precise my question:
for me, the i2 variable is supposed to be listed in the 'UNCHANGED' block, but instead, it is described as "/\ i2' = i2'".
i2 appears in UNCHANGED, if "x:= ~x;" is removed from the text
lets compare those two examples:
1.
process clock = "clock"
begin
ActionClock:
i1 := i1+1;
x:= ~x;
goto ActionClock;
end process;
>>
ActionClock == /\ pc["clock"] = "ActionClock"
/\ i1' = i1+1
/\ x' = ~x
/\ pc' = [pc EXCEPT !["clock"] = "ActionClock"]
/\ i2' = i2
2.
process clock = "clock"
begin
ActionClock:
i1 := i1+1;
goto ActionClock;
end process;
>>
ActionClock == /\ pc["clock"] = "ActionClock"
/\ i1' = i1+1
/\ pc' = [pc EXCEPT !["clock"] = "ActionClock"]
/\ UNCHANGED << x, i2 >>
it happens, when I do use 'translate pluscal algorithm' in TLA+ toolbox, v 1.7.1
Practically, both examples are equivalent about i2 variable behavior,
Just the translator don`t want to define 'UNCHANGED' block for the single variable