tlaplus / tlapm

The TLA Proof Manager
https://proofs.tlapl.us/
BSD 2-Clause "Simplified" License
65 stars 20 forks source link

TLAPM identifies instantiated fairness condition with fairness of instantiated action #69

Open muenchnerkindl opened 2 years ago

muenchnerkindl commented 2 years ago

When instantiating a module, care must be taken with handling operators that implicitly bind state variables, notably ENABLED and fairness conditions. In particular, it is not generally the case that I!(WFvars(A)) is the same as WF(I!vars)(I!A) where I denotes the instance of a module. Note that the notation I!(WF_vars(A)) is not actually legal TLA+ syntax, I am only using it here to denote the instantiated fairness condition.

The attached modules seem to indicate that TLAPS implicitly performs this substitution and therefore allows me to prove an absurdity. This is a soundness issue. Z.tla.txt XY.tla.txt