tlaplus/awesome-tlaplus

A curated list of TLA+ resources.

194

44 commits

updated Mar 10, 2026

See the code

README

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

Experimental

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

namedescription
AWS and TLA+Use of Formal Methods at Amazon Web Services
Batch InstallerSending async batches of commands.
ReduxRedux reducers with verifying a temporal property.
Zero Downtime DeploymentsA 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 AlgorithmTrading boths executing trades in a simulated market, showing how it’s susceptible to flash crashes.
Detecting Linked-List CyclesFinding cycles in linked lists.
Replicated StorageReplicated storage system with a quorum.
Rate LimiterIndependent workers hitting a rate-limited API.
Thread PoolMultiple reader and writer threads sharing a bounded queue, discovering deadlocks.
Bank TransferSpecifying a bank transfer with overdraft protection.
Finding bugs in systems through formalizationEnsuring distributed jobs go from “pending” to “completed”.
Building A "Simple" Distributed SystemRebalanser - distributed resource allocation library.
Train Sidings – A TLA+ ExampleRailroad line where two trains can pass each other.
Azure Cosmos TLA+ specificationsThe 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.
Understanding Apache Hudi's Consistency ModelTLA+ specification and model checking of Hudi's consistency model
Using TLA+ in the Real World to Understand a Glibc BugLifting code to the specification level to study a complex concurrency bug.
Formal Specification for Authorization: Clarity Before ImplementationApplying TLA+ for better describing authorization requirements for systems.
Multi-Grained Specifications for Distributed System Model Checking and VerificationReview of multi-grained specifications combining high-level protocol models with fine-grained implementation details.
A Tale of Two RefinementsGenerating Rust implementations from TLA+ specs using LLMs, building a concurrent system through stepwise refinement.
TLA+ in support of AI code generationUsing TLA+ specs as prompts for AI agent-mode code generation, demonstrating that the AI preserves specified algorithm correctness.
Verified Spec Transpilation with ClaudeLLM-based verified transpilation from TLA+ specifications.
tla-specsCollection of documented TLA+ explorations.

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

namedescriptionrelated resources
Linux kernelTLA+ specs for kernel/arm64 work, including modeling qrwlock, qspinlock, and parts of arm64Formal Methods for Kernel Hackers (LPC 2018) · LPC 2018 slides (PDF) · LPC 2018 video · rs3lab/kernel-tla (rqspinlock) · A new type of spinlock for BPF (LWN)
glibc pthread_condTLA+ used for investigating and fixing the pthread condition-variable lost-wakeup bugskarupke/glibc_tla_plus · Using TLA+ to Fix a Very Difficult glibc Bug (C++Now 2025 video) · glibc patch series
Elasticsearch Formal ModelsTLA+ models of core Elasticsearch algorithms, including replication and replica engine behaviorUsing TLA+ for fun and profit in the development of Elasticsearch (TLA+ Conf 2019) · Slides (PPTX)
etcd-io/raftTLA+ spec and trace-validation work for the Raft algorithm as implemented by etcdRuntime Protocol Refinement Checking for etcd-raft · Validating System Executions with the TLA+ Tools (TLA+ Conf 2024 slides) · Validating Traces of Distributed Programs Against TLA+ Specifications
TLA+ in TIDBverify the distributed consensus algorithm : Raft & the implementation of distributed transaction.
Servo web engineTLA+ used to find and fix concurrency bugs in Servo's event-loopRe-fixing Servo's event-loop (blog) · GOSIM China 2024 talk (video) · Slides (PDF)
Apache Kafka KRaftTLA+ verification/spec work for KRaft features such as pre-vote and reconfiguration; TLA+ model also used to find bugsVanlightly/kafka-tlaplus · A Primer on Formal Verification and TLA+ · Detecting Bugs in Data Infrastructure using Formal Methods · Verifying Kafka Transactions diary · Distributed Systems Showdown: TLA+ vs Real Code (Hydra Conf slides)
Apache Kafka ReplicationTLA+ specification of the Kafka ISR-based replication protocol, including KIP-101, KIP-279, and KIP-320; model checking revealed weaknesses in proposed designsKIP-320 wiki (references TLA+ spec)
MongoDB ReplicationTLA+ specs and trace-checking for MongoDB replication behavior/protocolsFixing a MongoDB Replication Protocol Bug with TLA+ (TLA+ Conf 2019) · TLA+ Conf 2019 video · Rapid Prototyping a Logless Reconfiguration Protocol (MongoDB blog) · Modular Verification of MongoDB Transactions · Logless Dynamic Reconfiguration (paper) · eXtreme Modelling in Practice (paper) · eXtreme Modelling in Practice (video)
Signal SVR2TLA+ specification of the Raft-based consensus and self-healing protocol for Signal's Secure Value Recovery service, which stores PIN-protected secrets across multi-replica SGX enclavesSecret Key Recovery in a Global-Scale End-to-End Encryption System (paper)
Xen vchanTLA+ specification of the Xen vchan inter-domain communication protocolUsing TLA+ to Understand Xen Vchan (blog)
Ceph ConsensusTLA+ specification of the Ceph consensus algorithm (based on Paxos), derived from the actual Paxos.cc source codeFormal Verification of the Ceph Consensus Algorithm (thesis) · Formal Verification and Visualization (paper)
Raft Consensus AlgorithmTLA+ specification of the Raft consensus algorithm
Raft Consensus Algorithm w/ ClientTLA+ specification of the Raft consensus algorithm and linearizable clientBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Sequentially Consistent Raft StreamsTLA+ specification of an algorithm for sequentially consistent streaming responses from a Raft clusterBridging the Verifiability Gap (TLA+ Conf 2020 slides)
tendermint-rsRust Tendermint implementation with TLA+ specificationsVerification Driven Development for Tendermint and IBC · How TLA+ and Apalache Helped Us Design the Tendermint Light Client (video) · A Tendermint Light Client (paper)
TendermintAccTLA+ specification of Tendermint consensus tuned for safety and fork accountability properties, including an inductive invariantVerification Driven Development for Tendermint and IBC · Model-based Testing with TLA+ and Apalache (TLA+ Conf 2020 slides)
Tendermint Light ClientTLA+ specification of the Tendermint light clientHow TLA+ and Apalache Helped Us Design the Tendermint Light Client (video) · Model-based Testing with TLA+ and Apalache (TLA+ Conf 2020 slides) · A Tendermint Light Client (paper)
celestia-tendermint-rsCelestia fork of tendermint-rs, a Tendermint client framework with TLA+ specifications
cometbft-rsRust CometBFT client framework with TLA+ specifications
DualTor SONiC ProtocolTLA+ specification of the DualTor Standby/Active protocol for SONiC Top-of-Rack switches, verifying correctness of MUX failover and state machine coordination
Apache BookKeeperTLA+ specification of the BookKeeper replication protocol; found data-loss bugs in fencing and recovery
EPaxosTLA+ specs for the Egalitarian Paxos protocol, including EgalitarianPaxos.tlaEPaxos project page · EPaxos Revisited (NSDI'21) · On the Correctness of Egalitarian Paxos · Making Democracy Work: Fixing and Simplifying EPaxos (OPODIS'25)
SWIM Membership ProtocolTLA+ specification of the Scalable Weakly-consistent Infection-style Membership (SWIM) protocolBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Distributed LockTLA+ specification of a replicated state machine for distributed lockingBridging the Verifiability Gap (TLA+ Conf 2020 slides) · Distributed Systems in ONOS with Atomix 3 (ONF Connect 2018 slides) · ONF Connect 2018 video
Multi-primary Replication ProtocolTLA+ specification of a multi-primary replication protocol created for ONOSBridging the Verifiability Gap (TLA+ Conf 2020 slides) · Distributed Systems in ONOS with Atomix 3 (ONF Connect 2018 slides)
P4Runtime Protocol SpecificationTLA+ specification of the P4Runtime API that was used to demonstrate and fix safety violations in the protocolBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Flexible PaxosTLA+ specification of Flexible Paxos, which revisits quorum intersection requirements in PaxosFlexible Paxos paper · Flexible Paxos (the morning paper) · Dr TLA+ Series: Flexible Paxos (video)
Viewstamped ReplicationTLA+ specifications of Viewstamped Replication; found a state transfer defect in the "VR Revisited" paperVR Revisited analysis series (Jack Vanlightly)
CBC CasperTLA+ and PlusCal specification of the CBC Casper consensus protocols (binary consensus) by Trail of BitsFormal Analysis of the CBC Casper Consensus Algorithm with TLA+ (Trail of Bits blog) · CBC Casper paper
Event Driven HotStuffPlusCal specification of the Event Driven HotStuff BFT consensus algorithmdiscuss.tlapl.us thread · HotStuff: BFT Consensus in the Lens of Blockchain (paper)
TezEdgeTLA+ specs and models for the TezEdge node's p2p overlay network, shell, and consensus layers (Tezos blockchain)
Succinct Atomic SwapTLA+ specification of the Succinct Atomic Swap (SAS) Bitcoin smart contract protocol, verifying safety invariants and temporal propertiesSAS protocol description (Ruben Somsen) · SAS presentation (video) · bitcoin-dev mailing list post
KatzenpostTLA+ and Promela specifications of protocols for the Katzenpost mixnet anonymous communication network, including the directory authority voting protocoldiscuss.tlapl.us thread
Generating All Combinations and PartitionsSpec of an algorithm in Knuth's TAOCP. It's Java implemenation is used by TLC.
TaskSchedulerTLA+ specifications by Ubisoft validating lock-free MPSC/MCSP queue algorithms in a concurrent task scheduler, ensuring absence of deadlocks, reordering, and task loss
lfest-rsTLA+ specifications for a leveraged futures exchange simulator, verifying order execution and margin calculation logic
Just-in-Time PaxosTLA+ specification of an experimental consensus protocol that relies on high-precision clock synchronization to order proposals
Spire ConsensusTLA+ specification and TLAPS machine-verifiable proof of the Spire single-value and Spanning Privilege (SP) multi-value consensus algorithmsSpire pre-print (TechRxiv)
zig-rcspTLA+ specification of a reference-counted shared pointer algorithm for Zig, verifying correctness of concurrent acquire/release operations

TLA+ Video Resources

Most videos are hosted on the TLA+ Foundation YouTube channel.

Courses

Conference & Community Event Recordings

Topic Playlists

Standalone Talks

Scientific papers

Theory

Tools

Application

(University) courses teaching (with) TLA+

Contributors

lemmy

28 commits

anton-trunov

4 commits

FedericoPonzi

3 commits

kaelzhang81

2 commits

tlaplus/awesome-tlaplus

A curated list of TLA+ resources.

194

44 commits

updated Mar 10, 2026

See the code

README

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

Experimental

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

namedescription
AWS and TLA+Use of Formal Methods at Amazon Web Services
Batch InstallerSending async batches of commands.
ReduxRedux reducers with verifying a temporal property.
Zero Downtime DeploymentsA 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 AlgorithmTrading boths executing trades in a simulated market, showing how it’s susceptible to flash crashes.
Detecting Linked-List CyclesFinding cycles in linked lists.
Replicated StorageReplicated storage system with a quorum.
Rate LimiterIndependent workers hitting a rate-limited API.
Thread PoolMultiple reader and writer threads sharing a bounded queue, discovering deadlocks.
Bank TransferSpecifying a bank transfer with overdraft protection.
Finding bugs in systems through formalizationEnsuring distributed jobs go from “pending” to “completed”.
Building A "Simple" Distributed SystemRebalanser - distributed resource allocation library.
Train Sidings – A TLA+ ExampleRailroad line where two trains can pass each other.
Azure Cosmos TLA+ specificationsThe 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.
Understanding Apache Hudi's Consistency ModelTLA+ specification and model checking of Hudi's consistency model
Using TLA+ in the Real World to Understand a Glibc BugLifting code to the specification level to study a complex concurrency bug.
Formal Specification for Authorization: Clarity Before ImplementationApplying TLA+ for better describing authorization requirements for systems.
Multi-Grained Specifications for Distributed System Model Checking and VerificationReview of multi-grained specifications combining high-level protocol models with fine-grained implementation details.
A Tale of Two RefinementsGenerating Rust implementations from TLA+ specs using LLMs, building a concurrent system through stepwise refinement.
TLA+ in support of AI code generationUsing TLA+ specs as prompts for AI agent-mode code generation, demonstrating that the AI preserves specified algorithm correctness.
Verified Spec Transpilation with ClaudeLLM-based verified transpilation from TLA+ specifications.
tla-specsCollection of documented TLA+ explorations.

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

namedescriptionrelated resources
Linux kernelTLA+ specs for kernel/arm64 work, including modeling qrwlock, qspinlock, and parts of arm64Formal Methods for Kernel Hackers (LPC 2018) · LPC 2018 slides (PDF) · LPC 2018 video · rs3lab/kernel-tla (rqspinlock) · A new type of spinlock for BPF (LWN)
glibc pthread_condTLA+ used for investigating and fixing the pthread condition-variable lost-wakeup bugskarupke/glibc_tla_plus · Using TLA+ to Fix a Very Difficult glibc Bug (C++Now 2025 video) · glibc patch series
Elasticsearch Formal ModelsTLA+ models of core Elasticsearch algorithms, including replication and replica engine behaviorUsing TLA+ for fun and profit in the development of Elasticsearch (TLA+ Conf 2019) · Slides (PPTX)
etcd-io/raftTLA+ spec and trace-validation work for the Raft algorithm as implemented by etcdRuntime Protocol Refinement Checking for etcd-raft · Validating System Executions with the TLA+ Tools (TLA+ Conf 2024 slides) · Validating Traces of Distributed Programs Against TLA+ Specifications
TLA+ in TIDBverify the distributed consensus algorithm : Raft & the implementation of distributed transaction.
Servo web engineTLA+ used to find and fix concurrency bugs in Servo's event-loopRe-fixing Servo's event-loop (blog) · GOSIM China 2024 talk (video) · Slides (PDF)
Apache Kafka KRaftTLA+ verification/spec work for KRaft features such as pre-vote and reconfiguration; TLA+ model also used to find bugsVanlightly/kafka-tlaplus · A Primer on Formal Verification and TLA+ · Detecting Bugs in Data Infrastructure using Formal Methods · Verifying Kafka Transactions diary · Distributed Systems Showdown: TLA+ vs Real Code (Hydra Conf slides)
Apache Kafka ReplicationTLA+ specification of the Kafka ISR-based replication protocol, including KIP-101, KIP-279, and KIP-320; model checking revealed weaknesses in proposed designsKIP-320 wiki (references TLA+ spec)
MongoDB ReplicationTLA+ specs and trace-checking for MongoDB replication behavior/protocolsFixing a MongoDB Replication Protocol Bug with TLA+ (TLA+ Conf 2019) · TLA+ Conf 2019 video · Rapid Prototyping a Logless Reconfiguration Protocol (MongoDB blog) · Modular Verification of MongoDB Transactions · Logless Dynamic Reconfiguration (paper) · eXtreme Modelling in Practice (paper) · eXtreme Modelling in Practice (video)
Signal SVR2TLA+ specification of the Raft-based consensus and self-healing protocol for Signal's Secure Value Recovery service, which stores PIN-protected secrets across multi-replica SGX enclavesSecret Key Recovery in a Global-Scale End-to-End Encryption System (paper)
Xen vchanTLA+ specification of the Xen vchan inter-domain communication protocolUsing TLA+ to Understand Xen Vchan (blog)
Ceph ConsensusTLA+ specification of the Ceph consensus algorithm (based on Paxos), derived from the actual Paxos.cc source codeFormal Verification of the Ceph Consensus Algorithm (thesis) · Formal Verification and Visualization (paper)
Raft Consensus AlgorithmTLA+ specification of the Raft consensus algorithm
Raft Consensus Algorithm w/ ClientTLA+ specification of the Raft consensus algorithm and linearizable clientBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Sequentially Consistent Raft StreamsTLA+ specification of an algorithm for sequentially consistent streaming responses from a Raft clusterBridging the Verifiability Gap (TLA+ Conf 2020 slides)
tendermint-rsRust Tendermint implementation with TLA+ specificationsVerification Driven Development for Tendermint and IBC · How TLA+ and Apalache Helped Us Design the Tendermint Light Client (video) · A Tendermint Light Client (paper)
TendermintAccTLA+ specification of Tendermint consensus tuned for safety and fork accountability properties, including an inductive invariantVerification Driven Development for Tendermint and IBC · Model-based Testing with TLA+ and Apalache (TLA+ Conf 2020 slides)
Tendermint Light ClientTLA+ specification of the Tendermint light clientHow TLA+ and Apalache Helped Us Design the Tendermint Light Client (video) · Model-based Testing with TLA+ and Apalache (TLA+ Conf 2020 slides) · A Tendermint Light Client (paper)
celestia-tendermint-rsCelestia fork of tendermint-rs, a Tendermint client framework with TLA+ specifications
cometbft-rsRust CometBFT client framework with TLA+ specifications
DualTor SONiC ProtocolTLA+ specification of the DualTor Standby/Active protocol for SONiC Top-of-Rack switches, verifying correctness of MUX failover and state machine coordination
Apache BookKeeperTLA+ specification of the BookKeeper replication protocol; found data-loss bugs in fencing and recovery
EPaxosTLA+ specs for the Egalitarian Paxos protocol, including EgalitarianPaxos.tlaEPaxos project page · EPaxos Revisited (NSDI'21) · On the Correctness of Egalitarian Paxos · Making Democracy Work: Fixing and Simplifying EPaxos (OPODIS'25)
SWIM Membership ProtocolTLA+ specification of the Scalable Weakly-consistent Infection-style Membership (SWIM) protocolBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Distributed LockTLA+ specification of a replicated state machine for distributed lockingBridging the Verifiability Gap (TLA+ Conf 2020 slides) · Distributed Systems in ONOS with Atomix 3 (ONF Connect 2018 slides) · ONF Connect 2018 video
Multi-primary Replication ProtocolTLA+ specification of a multi-primary replication protocol created for ONOSBridging the Verifiability Gap (TLA+ Conf 2020 slides) · Distributed Systems in ONOS with Atomix 3 (ONF Connect 2018 slides)
P4Runtime Protocol SpecificationTLA+ specification of the P4Runtime API that was used to demonstrate and fix safety violations in the protocolBridging the Verifiability Gap (TLA+ Conf 2020 slides)
Flexible PaxosTLA+ specification of Flexible Paxos, which revisits quorum intersection requirements in PaxosFlexible Paxos paper · Flexible Paxos (the morning paper) · Dr TLA+ Series: Flexible Paxos (video)
Viewstamped ReplicationTLA+ specifications of Viewstamped Replication; found a state transfer defect in the "VR Revisited" paperVR Revisited analysis series (Jack Vanlightly)
CBC CasperTLA+ and PlusCal specification of the CBC Casper consensus protocols (binary consensus) by Trail of BitsFormal Analysis of the CBC Casper Consensus Algorithm with TLA+ (Trail of Bits blog) · CBC Casper paper
Event Driven HotStuffPlusCal specification of the Event Driven HotStuff BFT consensus algorithmdiscuss.tlapl.us thread · HotStuff: BFT Consensus in the Lens of Blockchain (paper)
TezEdgeTLA+ specs and models for the TezEdge node's p2p overlay network, shell, and consensus layers (Tezos blockchain)
Succinct Atomic SwapTLA+ specification of the Succinct Atomic Swap (SAS) Bitcoin smart contract protocol, verifying safety invariants and temporal propertiesSAS protocol description (Ruben Somsen) · SAS presentation (video) · bitcoin-dev mailing list post
KatzenpostTLA+ and Promela specifications of protocols for the Katzenpost mixnet anonymous communication network, including the directory authority voting protocoldiscuss.tlapl.us thread
Generating All Combinations and PartitionsSpec of an algorithm in Knuth's TAOCP. It's Java implemenation is used by TLC.
TaskSchedulerTLA+ specifications by Ubisoft validating lock-free MPSC/MCSP queue algorithms in a concurrent task scheduler, ensuring absence of deadlocks, reordering, and task loss
lfest-rsTLA+ specifications for a leveraged futures exchange simulator, verifying order execution and margin calculation logic
Just-in-Time PaxosTLA+ specification of an experimental consensus protocol that relies on high-precision clock synchronization to order proposals
Spire ConsensusTLA+ specification and TLAPS machine-verifiable proof of the Spire single-value and Spanning Privilege (SP) multi-value consensus algorithmsSpire pre-print (TechRxiv)
zig-rcspTLA+ specification of a reference-counted shared pointer algorithm for Zig, verifying correctness of concurrent acquire/release operations

TLA+ Video Resources

Most videos are hosted on the TLA+ Foundation YouTube channel.

Courses

Conference & Community Event Recordings

Topic Playlists

Standalone Talks

Scientific papers

Theory

Tools

Application

(University) courses teaching (with) TLA+

Contributors

lemmy

28 commits

anton-trunov

4 commits

FedericoPonzi

3 commits

kaelzhang81

2 commits