GithubHelp home page GithubHelp logo

awesome-tlaplus's Introduction

Awesome TLA+ Awesome

TLA+ is a formal specification and verification language to help engineers design, specify, reason about, and verify complex software and hardware systems. It is widely used to verify the algorithms in distributed systems.

Contents

WebSites

Discussions

Users

Tools

Verification

IDEs

Misc

Parsers

  • SANY (Syntactic Analyzer): A parser and syntax checker for TLA+ specifications
  • TLAPS: A system for mechanically checking proofs written in TLA+
  • tree-sitter-tlaplus: A tree-sitter grammar for TLA⁺ and PlusCal
  • tlapy: A collection of Python tools for working with TLA+ specifications

Books

TLA+ blog posts and articles

name description
AWS and TLA+ Use of Formal Methods at Amazon Web Services
Batch Installer Sending async batches of commands.
Redux Redux reducers with verifying a temporal property.
Zero Downtime Deployments A simple model of a deploying new code to servers where at least one server is always available to clients, and all available servers show the same code version.
Trading Algorithm Trading boths executing trades in a simulated market, showing how it’s susceptible to flash crashes.
Detecting Linked-List Cycles Finding cycles in linked lists.
Replicated Storage Replicated storage system with a quorum.
Rate Limiter Independent workers hitting a rate-limited API.
Thread Pool Multiple reader and writer threads sharing a bounded queue, discovering deadlocks.
Bank Transfer Specifying a bank transfer with overdraft protection.
Finding bugs in systems through formalization Ensuring distributed jobs go from “pending” to “completed”.
Building A "Simple" Distributed System Rebalanser - distributed resource allocation library.
Train Sidings – A TLA+ Example Railroad line where two trains can pass each other.
Azure Cosmos TLA+ specifications The consistency levels offered by Azure Cosmos DB (also see Murat Demirbas' talk).
Modeling Streamlet in TLA+ A PlusCal spec of a crash fault-tolerant variant of the Streamlet blockchain protocol.
Using TLA+ in the Real World to Understand a Glibc Bug Lifting code to the specification level to study a complex concurrency bug.
tla-specs Collection of documented TLA+ explorations.

Real-world specs (not part of TLA+ Examples)

name description
Distributed Lock TLA+ specification of a replicated state machine for distributed locking
Generating All Combinations and Partitions Spec of an algorithm in Knuth's TAOCP. It's Java implemenation is used by TLC.
Just-in-Time Paxos TLA+ specification of an experimental consensus protocol that relies on high-precision clock synchronization to order proposals
Multi-primary Replication Protocol TLA+ specification of a multi-primary replication protocol created for ONOS
P4Runtime Protocol Specification TLA+ specification of the P4Runtime API that was used to demonstrate and fix safety violations in the protocol
Raft Consensus Algorithm TLA+ specification of the Raft consensus algorithm
Raft Consensus Algorithm w/ Client TLA+ specification of the Raft consensus algorithm and linearizable client
Sequentially Consistent Raft Streams TLA+ specification of an algorithm for sequentially consistent streaming responses from a Raft cluster
SWIM Membership Protocol TLA+ specification of the Scalable Weakly-consistent Infection-style Membership (SWIM) protocol
TendermintAcc TLA+ specification of Tendermint consensus tuned for safety and fork accountability properties, including an inductive invariant
Tendermint Light Client TLA+ specification of the Tendermint light client
TLA+ in TIDB verify the distributed consensus algorithm : Raft & the implementation of distributed transaction.

TLA+ Video Resources

Scientific papers

Theory

Tools

Application

(University) courses teaching (with) TLA+

awesome-tlaplus's People

Contributors

alexander-n avatar anton-trunov avatar federicoponzi avatar kaelzhang81 avatar konnov avatar kuujo avatar lemmy avatar martinhornacek avatar ocadaruma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-tlaplus's Issues

Should this list be added to the list of awesome lists?

The Awesome movement is pretty strong and active, see https://github.com/sindresorhus/awesome.
Adding awesome-tlaplus to that list should increase TLA+'s visibility. However, this requires a bit of refactoring according to their style guides: https://github.com/sindresorhus/awesome/blob/main/pull_request_template.md.

Earlier this year I helped with getting awesome-coq into the list of awesome list and can give a hand with this refactoring if it's considered worthwhile for the TLA+ community.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.