The problem here is that a first atomic step corresponding to the “either” statement chooses between moving to the inactive or active label. Your strong fairness annotation for active has no effect beyond the weak fairness assumed at the top level because there is only one possible continuation. What you want is imposing strong fairness on the branch taken by the “either” statement. This cannot be expressed in PlusCal but you can achieve what you want by adding the fairness hypothesisSF_vars(initial /\ jobActive’)to the specification at the TLA+ level.StephanOn 19 Mar 2025, at 15:52, jack malkovick <sillym...@xxxxxxxxx> wrote:I have this simple SF PlusCal example(* --algorithm Test
variables jobActive = FALSE;
fair process Job="Job"
begin
initial:
while ~jobActive do
either
inactive:
jobActive := FALSE;
or
active:+
jobActive := TRUE;
end either;
end while;
end process;
end algorithm; *)My expectation was that the spec will have this property<>[][jobActive = TRUE]_varshowever it does not, the error trace is<trace1.png>--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+u...@xxxxxxxxxxxxxxxx.
To view this discussion visit https://groups.google.com/d/msgid/tlaplus/0075d026-4233-4758-9e39-89136257f118n%40googlegroups.com.
<trace1.png>