/CommunityModules

TLA+ snippets, operators, and modules contributed and curated by the TLA+ community

Primary LanguageTLAMIT LicenseMIT

Community Repository

This is an open repository dedicated to contributions from the TLA+ commmunity. Here you are able to submit the snippets, operators, and modules that you wrote for your specifications and that you want to share with the rest of the TLA+ community.

(For us to gauge demand, please star (eyes up and right) this repository if you use the CommunityModules.)

The Modules

Name Short description Module Override? Contributors
Functions.tla Notions about functions including injection, surjection, and bijection. @muenchnerkindl
Graphs.tla Common operators on directed and undirected graphs. Leslie Lamport
SequencesExt.tla Various operators to manipulate sequences. @muenchnerkindl,@lemmy, @hwayne
Relation.tla Basic operations on relations, represented as binary Boolean functions over some set S. @muenchnerkindl
FiniteSetsExt.tla An Operator to do folds without having to use RECURSIVE. @hwayne,@lemmy
Bitwise.tla Bitwise And and shift-right. @lemmy,@pfeodrippe
DifferentialEquations.tla see page 178ff of Specifying Systems Leslie Lamport
Json.tla Print TLA+ values as JSON values. @kuujo
SVG.tla see https://github.com/will62794/tlaplus_animation @will62794, @lemmy
ShiViz.tla Visualize error-traces of multi-process PlusCal algorithms with an Interactive Communication Graphs. @lemmy
TLCExt.tla Assertion operators and experimental TLC features. @lemmy, @will62794
IOUtils.tla Input/Output of TLA+ values & Spawn system commands from a spec. @lemmy, @lvanengelen

How to use it

Just copy & paste the snippet, the operators or the set of modules you are interested in.

Alternatively, you can download a library archive and add it to TLC's or the Toolbox's TLA+ library path. The advantage of the library archive is that TLC will evaluate an operator faster if the operator comes with a (Java) implementation (see e.g. SequencesExt.Java). Run TLC with -DTLA-Library=/path/to/lib/archive or add the library archive to the Toolbox (File > Preferences > TLA+ Preferences > TLA+ library path locations). The latest release is at the stable URL https://github.com/tlaplus/CommunityModules/releases/latest/download/CommunityModules.jar.

Being a community-driven repository puts the community in charge to check the validity and correctness of submissions. The maintainers of this repository will try to keep this place in order, but we can't guarantee the quality of the modules and therefore cannot provide any assistance on eventual malfunctions.

Contributing

If you have one or more snippets, operators, or modules you'd like to share, please open an issue or create a pull request. Before submitting your operator or module, please consider adding documentation. The more documentation there is, the more likely it is that someone will find it useful.

Download

CI