A reusable and modular TLA+ library for modeling communication primitives over point-to-point and broadcast abstractions. It enables designers to formally describe and verify solutions by providing these primitives as building blocks for communication subsystems. The library includes fault injection for analyzing system behavior under unreliable conditions, such as message loss, duplication, and out-of-order delivery.
/ ← core library modules (FairLossLink, StubbornLink, PerfectLink, etc.)
tests/ ← test specs and TLC configs for each module
protocols/ ← case studies built on top of the core modules
- Install the TLA+ extension (
tlaplus.vscode-ide). - Add a
.vscode/settings.jsonfile at the project root with the following content:
{
"tlaplus.moduleSearchPaths": [
"/absolute/path/to/this/project"
]
}Replace /absolute/path/to/this/project with the actual absolute path where you cloned the repository.
- Open any spec under
tests/orprotocols/and run TLA+: Check model (Command Palette).
Requires a tla2tools.jar. You can download it from the TLA+ releases page or use the one bundled with the VS Code extension.
Run from the repository root so relative paths to tests/ and protocols/ work as shown.
java -DTLA-Library=/path/to/project \
-cp /path/to/tla2tools.jar \
tlc2.TLC \
-config tests/StubbornLinkTest.cfg \
tests/StubbornLinkTest.tla- Replace
/path/to/projectwith the root directory of this repository. - Replace
/path/to/tla2tools.jarwith the path to yourtla2tools.jar. - The
TLA-LibraryJVM property tells SANY/TLC where to look for modules outside the spec's own directory. - Substitute
StubbornLinkTestwith any other test or protocol spec as needed (and update the-configpath accordingly).