But I've found the imperative mentality in my own work on TLA+ modeling initially confusing. I offer the following write-up to help clarify several important points (focusing on TLA+ Pluscal) in a technical note with example models, Python code. It's the first in a series on modeling a distributed key-value store I'm working on:
https://github.com/rodgarrison/tla_note1
Beyond basics I also give a recipe to use TLA+ at the command line for those of us who prefer it over IDEs. TLA's toolbox IDE is nice; still I prefer command line development when possible.
In the paper:
- program behavior versus model states
- deadlock
- termination
- coverage (label) checks
- setting up TLA+ on the command line
Hope it helps. As I note in the abstract I got some help of my own from the TLA Google Group.