Hello Stephan,
Right now in my specification I have several failure scenarios where if
I made a step in a particular fashion, it will cause invariant
violations. I can do this at multiple locations and it would be nice to
be able to verify these invariant violations exists as a) a sanity check
and b) it can serve an illustration for others who read the spec to see
for themselves exactly how the violation takes place. Furthermore,
swapping out the processes I had talked about will allow me to specify a
system with several different implementations of something that
accomplish the same thing.
Without modularity, this is difficult to accomplish without copy or
pasting the TLA+ spec many many times. If the spec is to be changed, the
change must be mirrored everywhere. Are there some recommended ways of
solving this problem? Or is this simply something that should be
discouraged from TLA+'s perspective? An idea could be using C
pre-processors, but that seems like a massive hack.
Thanks,
Shuhao