[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tlaplus] How do you do functions of structures?
On 06.06.21 15:57, Isaac DeFrain wrote:
To manage the amount of names I have to write following UNCHANGED, I
usually write several /inclusive/ and /exclusive/ variable tuples; e.g.
say we have the variables x1, x2, ..., xN and I have a few actions which
change only x1 and x2 and leave x3, ..., xN unchanged (this would
suggest an exclusive variable tuple to me). I'll define a tuple, call it
non_x1_x2_vars == <<x3, ..., xN>>, and then just write UNCHANGED
non_x1_x2_vars in the aforementioned actions. As long as you write all
your actions in one module, this seems to work really well. Not to
mention when you have 10+ variables in a spec, it becomes next to
impossible to visually inspect whether you have included all the
unchanged variables.
I first saw this little trick in the raft spec
<https://github.com/ongardie/raft.tla/blob/master/raft.tla> where they
use several (what I would call) inclusive variable tuples.
Hi,
have you tried *simulating* the specs with TLC for a few seconds to find
any missing variables in UNCHANGED statements? I haven't yet, but I
would expect the trick to catch most of them.
Markus
--
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+unsubscribe@xxxxxxxxxxxxxxxx.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/211edb41-3abe-ea5c-80a5-445d36872205%40lemmster.de.