This directory contains specifications for various M3 components that are used for documentation and/or verification.
TLA specifications in this folder are written in PlusCal and then automatically translated into TLA and checked with the TLC model checker using the TLA toolbox.
Development instructions:
- Install and open the TLA toolbox TLA toolbox.
- Click
File
and thenOpen Spec
and finallyAdd New Spec
. - Name the file / module exactly the same as it is named in the
MODULE
declaration of the top of the specification you wish to run. - Paste the specification into the code editor.
- Click
TLC Model Checker
thenNew Model
and name the model whatever you want. - In the
Model Overview
section, specify the values of any pre-declared constants. Review the comments in the specification for guidance on choosing values. When in doubt, pick small values that limit the search space of the model checker and gradually increase them after measuring how long it takes the model checker to evaluate the specification. - Add any named invariants to the
Invariants
section under theWhat to check?
panel in theModel Overview
tab. By convention, these invariants are listed at the bottom of the specification, underneat the auto-generated TLA translation. - Click the green play symbol to check the model.
Note that if you change the PlusCal algorithm you will need to regenerate the TLA translation by clicking File
and then Translate PlusCal Algorithm
.