TLA+ in Practice and Theory, Part 4: Order in TLA+
pron.github.io
pron.github.io
[1]: https://pron.github.io/posts/correctness-and-complexity
Question: would you have examples of TLA+ specs that are not related to distributed algos (raft, paxos, etc.) or puzzles (die hard, etc.)?
There are also examples in these links:
https://learntla.com/models/example/
https://www.hillelwayne.com/post/modeling-deployments/
https://www.linkedin.com/pulse/lamports-tla-spec-testing-why...
https://github.com/tlaplus/Examples/tree/master/specificatio...
https://github.com/tlaplus/Examples/tree/master/specificatio...
So the question in a specification is deciding what the board looks like, what the legal moves are, and what properties you're interested in. Then model-checking is exploring the game tree to some depth to find out if there are move sequences that will reach interesting states.
You wouldn't write a chess or Go-playing program in TLA+, but most discrete systems have smaller trees than that.
It seems like it would reasonable to compare this to QuickCheck-style testing or fuzzing, except that it's entirely done in a different language.
Hmm... A "board" with "moves" sounds an awful lot like the first part of a Turing Machine...
The more general truth is quality does not correlate with cost.
Google Rory Sutherlands TED talk