communitymodules

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

https://github.com/tlaplus/communitymodules

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.2%) to scientific vocabulary

Keywords

pluscal tla-specification tlaplus
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
  • Host: GitHub
  • Owner: tlaplus
  • License: mit
  • Language: TLA
  • Default Branch: master
  • Homepage:
  • Size: 6.39 MB
Statistics
  • Stars: 292
  • Watchers: 13
  • Forks: 42
  • Open Issues: 17
  • Releases: 245
Topics
pluscal tla-specification tlaplus
Created almost 7 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Community Repository

This is an open repository dedicated to contributions from the TLA+ community. Here you can 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 | | ---: | ---- | :--: | ---- | | BagsExt.tla | Additional operators on bags (e.g. BagAdd, BagRemove, FoldBag, etc.) | | @muenchnerkindl, @lemmy | | Bitwise.tla | Bitwise And and shift-right. | | @lemmy, @pfeodrippe | | Combinatorics.tla | Binomial coefficient (N choose K) and factorial operator | | @lemmy | | CSV.tla | Operations on CSV files | | @lemmy | | DifferentialEquations.tla | see page 178 of Specifying Systems | | Leslie Lamport | | DyadicRationals.tla | Operations on dyadic rational numbers | | @lemmy | | FiniteSetsExt.tla | Additional operators on finite sets (e.g. FoldSet, Min, Max, Quantify, etc.) | | @hwayne, @lemmy, @quicquid, @mryndzionek, @will62794, @konnov | | Folds.tla | Basic Fold operator (MapThenFoldSet). | | @quicquid, @muenchnerkindl, @konnov | | Functions.tla | Notions about functions (range, anti-function, injection, surjection, bijection) and folds (FoldFunction, FoldFunctionOnSet). | | Thomas L. Rodeheffer, @muenchnerkindl, @quicquid, @lemmy | | Graphs.tla | Common operators on directed and undirected graphs | | Leslie Lamport, @lemmy, @muenchnerkindl | | GraphViz.tla | Generate GraphViz file through TLC | | @lemmy | | HTML.tla | Format strings into HTML tags | | @afonsof | | IOUtils.tla | Input/Output of TLA+ values & Spawn system commands from a spec. | | @lemmy, @lvanengelen, @afonsof | | Json.tla | JSON serialization and deserialization into TLA+ values. | | @kuujo, @lemmy, @jobvs, @pfeodrippe | | Relation.tla | Basic operations on relations, represented as binary Boolean functions over some set S. | | @muenchnerkindl, @lemmy | | SequencesExt.tla | Additional operators on sequences (e.g. ToSet, Reverse, ReplaceAll, SelectInSeq, etc.) | | @muenchnerkindl, @lemmy, @hwayne, @quicquid, @konnov, @afonsof | | ShiViz.tla | Visualize error-traces of multi-process PlusCal algorithms with an Interactive Communication Graphs. | | @lemmy | | Statistics.tla | Statistics operators (ChiSquare, etc.) | | @lemmy | | SVG.tla | see will62794/tlaplus_animation | | @will62794, @lemmy | | TLCExt.tla | Assertion operators and experimental TLC features (now part of TLC). | | @lemmy, @will62794 | | VectorClocks.tla | Causal order operations on vector clocks (e.g. CausalOrder, IsCausalOrder) | | @lemmy |

How to use it

You must be running Java 9 or higher.

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

Alternatively, clone this repository and pass -DTLA-Library=/path/to/CommunityModules/modules when running TLC.

Another option is to download a library archive and add it to TLC's or the Toolbox's TLA+ library path. The advantage of doing this is that TLC will evaluate an operator faster if the operator comes with a Java implementation (see e.g. SequencesExt.Java). The latest release is at the stable URL https://github.com/tlaplus/CommunityModules/releases/latest/download/CommunityModules-deps.jar.

If you are using the Toolbox, add the library archive under File > Preferences > TLA+ Preferences > TLA+ library path locations. Screencast how to install the CommunityModules into the TLA+ Toolbox

If you are using the VS Code extension, a recent version of the community modules is bundled with the nightly build. If you are not using the nightly build or need to use another version, see this.

If you are running TLC via tla2tools.jar, ensure the JAR is on the classpath: either place it next to tla2tools.jar or add it explicitly with java -cp tla2tools.jar:CommunityModules-deps.jar ....

Being a community-driven repository puts the community in charge of checking the validity and correctness of submissions. The maintainers of this repository will try to keep this place in order. Still, 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.

If you change an existing module and tests start failing, check all tests that assert (usually AssertError operator) specific error messages, i.e., line numbers and module names. Note that even an unrelated change further up in the file might have changed the line number and could lead to a failing test case.

Test

Run

shell ant test

Download

CI

Owner

  • Name: TLA+
  • Login: tlaplus
  • Kind: organization
  • Email: tlaplus@googlegroups.com

TLA+ is a formal specification language developed to design, model, document, and verify concurrent systems.

Citation (CITATION.cff)

cff-version: 1.2.0
title: TLA+ CommunityModules
message: Please cite this software using these metadata.
type: software
authors:
  - given-names: Markus
    name-particle: A.
    affiliation: Microsoft
    family-names: Kuppe
  - given-names: Stephan
    family-names: Merz
    affiliation: Inria
  - given-names: Paulo
    name-particle: Rafael 
    family-names: Feodrippe
  - given-names: Leslie
    affiliation: Microsoft
    family-names: Lamport
  - given-names: William
    family-names: Schultz
  - given-names: Afonso
    family-names: Fernandes
  - given-names: Mariusz
    family-names: Ryndzionek
  - given-names: Igor
    family-names: Konnov
    affiliation: Informal Systems
  - given-names: Jordan
    family-names: Halterman
    affiliation: Intel
  - given-names: Hillel
    family-names: Wayne
  - given-names: Jobvs
version: 1.0.0
url: "https://github.com/tlaplus/CommunityModules"

GitHub Events

Total
  • Create event: 10
  • Commit comment event: 1
  • Release event: 8
  • Watch event: 22
  • Delete event: 1
  • Issue comment event: 4
  • Push event: 9
  • Pull request review event: 3
  • Pull request event: 7
  • Fork event: 6
Last Year
  • Create event: 10
  • Commit comment event: 1
  • Release event: 8
  • Watch event: 22
  • Delete event: 1
  • Issue comment event: 4
  • Push event: 9
  • Pull request review event: 3
  • Pull request event: 7
  • Fork event: 6

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 279
  • Total Committers: 19
  • Avg Commits per committer: 14.684
  • Development Distribution Score (DDS): 0.147
Past Year
  • Commits: 6
  • Committers: 2
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.167
Top Committers
Name Email Commits
Markus Alexander Kuppe t****t@l****e 238
Stephan Merz m****l 11
Paulo Rafael Feodrippe p****e@g****m 4
Leroy van Engelen l****n@g****m 3
Afonso Fernandes a****s@n****t 3
William Schultz w****z@m****m 3
Igor Konnov i****r@i****s 3
Mariusz Ryndzionek m****k@g****m 2
Martin m****n@d****g 2
Jones Martins 1****s 1
Jordan Halterman j****n@g****m 1
Hillel h****e@g****m 1
Gabriela Moreira g****5@g****m 1
Darius Foo d****f 1
Calvin Loncaric m****3@g****m 1
Amaury Chamayou a****y@x****r 1
Karolis Petrauskas k****s@g****m 1
Sergey Bronnikov e****s@g****m 1
Job van Stiphout j****t@m****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 107
  • Total pull requests: 80
  • Average time to close issues: 3 months
  • Average time to close pull requests: 20 days
  • Total issue authors: 19
  • Total pull request authors: 23
  • Average comments per issue: 4.27
  • Average comments per pull request: 2.31
  • Merged pull requests: 41
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 4
  • Average time to close issues: about 18 hours
  • Average time to close pull requests: 3 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.5
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • lemmy (30)
  • pfeodrippe (3)
  • jonesmartins (2)
  • Benedicto (2)
  • afonsonf (2)
  • Alexander-N (2)
  • will62794 (2)
  • carl-reverb (1)
  • Tsunaou (1)
  • hwayne (1)
  • ahelwer (1)
  • jackmalkovick (1)
  • lvanengelen (1)
  • dariusf (1)
  • troublescooter (1)
Pull Request Authors
  • muenchnerkindl (8)
  • lemmy (8)
  • konnov (5)
  • pfeodrippe (4)
  • younes-io (4)
  • lvanengelen (3)
  • afonsonf (3)
  • kape1395 (3)
  • mryndzionek (2)
  • fhackett (2)
  • bugarela (2)
  • dariusf (2)
  • ligurio (1)
  • will62794 (1)
  • hwayne (1)
Top Labels
Issue Labels
enhancement (29) bug (4) good first issue (2) help wanted (1) question (1)
Pull Request Labels
enhancement (20) bug (1)

Dependencies

.github/workflows/main.yml actions
  • actions/checkout v2 composite
  • actions/create-release v1 composite
  • actions/upload-release-asset v1.0.1 composite
  • mxschmitt/action-tmate v3 composite