You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Four things in the review guidelines were not being followed.
Constants now carry named assumptions. All four specifications declared
Nodes and MsgIDs with nothing constraining them, and Skew's MaxSkew with
nothing saying it is a natural number. The guidelines call this crucial
for TLAPS, and these modules do carry proofs.
Type invariants are back to the var \in S form: network \subseteq
MsgRecord rather than a quantifier over its elements. MsgRecord ranges
over Nat and so cannot be enumerated, which is why the MC module carries
its own bounded MCTypeInvariant for TLC.
Strong fairness on Process is now justified by measurement rather than
assertion. Weak fairness was tried, as the guidelines ask: the liveness
model reports a temporal-property violation under it, because a crash
intermittently disables Process. The module says so.
The horizon stays inside MCTick rather than moving to a state
CONSTRAINT, which the guidelines otherwise prefer. A constraint was
tried first and does not work here: TLC evaluates invariants on the
state that crosses the boundary before the constraint discards it, so
with MaxSlot = 2 a Tick reaches current_slot = 3 and any invariant
mentioning the horizon fails there. The reason is recorded in the module
header rather than left as an unexplained deviation.
Seven TLC models, all completing in under five seconds. The three TLAPS
modules discharge 191, 128 and 32 obligations and exit 0 under
tlapm --strict.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Vasilis Nasopoulos <vasilis_nasopoulos@hotmail.com>
0 commit comments