
TLA+
Leslie Lamport’s language for specifying concurrent and distributed systems as simple mathematics, with tools that check the designs: the TLC and Apalache model checkers and the TLAPS proof system.
TLA+ Foundation project- What it is
- Formal methods
- Type
- Open source
- Made by
- TLA+ Foundation (Linux Foundation), created by Leslie Lamport
- Foundation
- TLA+ Foundation, joined January 2023. Part of the Linux Foundation
- License
- MIT (TLC and the other core tools, VS Code extension); TLAPS: BSD 2-Clause; Apalache: Apache 2.0
- Facts checked
- 28 October 2026
What it is
A TLA+ specification describes a system as a state machine. You declare its variables, write Init, a formula saying what the initial states are, and Next, a disjunction of actions, each a formula that relates the current state to the next one, where a primed variable such as x' means its value after the step. Spec == Init /\ [][Next]_vars then describes every behaviour the system allows. Properties are formulas too: invariants such as “no two nodes hold the lock”, and temporal properties such as “every request is eventually answered”, which need fairness assumptions. Modules can EXTEND and INSTANCE each other, so you can show that a detailed design refines a simpler one. Programmers often start with PlusCal instead, a pseudocode-like algorithm language written in a comment that a translator turns into TLA+.
The core tools ship as one Java archive, tla2tools.jar (Java 11 or later): the SANY parser, the PlusCal translator, TLATeX, a REPL and TLC. TLC is an explicit-state model checker. A configuration file names the specification, gives the constants small values (three servers, two client requests) and lists the invariants and properties; TLC then visits every reachable state on all cores, or samples random behaviours in simulation mode, and prints a step-by-step trace when a property fails. Apalache checks the same language symbolically, translating it into constraints for the Z3 or CVC5 SMT solvers, which suits large data domains, bounded runs and inductive invariants. TLAPS, the proof system, checks hierarchical proofs written in TLA+ by sending each obligation to Z3, Zenon, Isabelle/TLA+ or LS4, and covers every instance size rather than the few a model checker can visit.
The recommended editor is now the TLA+ extension for VS Code and compatible editors, which runs the parser and TLC; the Eclipse-based TLA+ Toolbox is no longer maintained. Since 2023 the TLA+ Foundation at the Linux Foundation has owned the language: its Specification Language Committee decides changes to TLA+, and the code lives in the tlaplus GitHub organisation, with Apalache in its own project since 2026. Tagged releases are rare; the last full release of the tools was 1.7.4 in August 2024, and newer versions are published as a 1.8.0 pre-release and rolling builds that are rebuilt as changes land.
Why teams pick it
- Finds design bugs that need long, unlikely sequences of events: AWS’s DynamoDB model produced a data-loss trace 35 steps long, after the design had passed reviews, code reviews and testing
- Proven in industry: AWS since 2011, Azure Cosmos DB, MongoDB, Oracle Cloud Infrastructure (hundreds of specifications across dozens of services) and Datadog, among others
- One language, three ways to check it: exhaustive TLC for small instances, symbolic Apalache, and TLAPS proofs for all sizes
- Abstraction is built in: a specification leaves out everything the property doesn’t depend on, and refinement links a detailed design to a simple one
Watch out for
- It checks the specification, not your code: nothing ties the two together unless you add trace validation, and a spec kept by hand drifts as the system changes
- TLC is exhaustive only for the small constants you choose, and the state space grows exponentially; big models need many cores (AWS once ran distributed TLC on ten EC2 instances), and TLC can’t handle integers above 2³¹ − 1
- Unfamiliar notation of sets, functions and temporal logic: AWS engineers needed two to three weeks to get useful results, and teams often start in PlusCal instead
- A small maintainer base: the Toolbox is unmaintained, tagged releases are years apart, and much of the work rests on a few people and foundation grants
How it fits with other technologies
The same lost-update race in PlusCal, translated and checked from the command line · text
---- MODULE Counter ----
EXTENDS Naturals
(* --algorithm counter
variables x = 0;
process worker \in {1, 2}
variables tmp = 0;
begin
Read: tmp := x;
Write: x := tmp + 1;
end process;
end algorithm; *)
\* BEGIN TRANSLATION ... END TRANSLATION (written here by pcal.trans)
BothCounted == (\A w \in {1, 2} : pc[w] = "Done") => x = 2
====
\* Counter.cfg: SPECIFICATION Spec INVARIANT BothCounted
\* $ java -cp tla2tools.jar pcal.trans Counter.tla (PlusCal to TLA+)
\* $ java -jar tla2tools.jar -workers auto Counter.tla
\* Error: Invariant BothCounted is violated. (followed by the trace)See it in a real stack
No architecture uses TLA+ yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from1994–2026
Leslie Lamport had worked on concurrent and distributed algorithms since the 1970s, and wanted a way to state them precisely enough to check. His Temporal Logic of Actions, published in 1994, describes a system by the steps it may take. TLA+ added sets, functions and modules on top, and in 1999 Yuan Yu, Panagiotis Manolios and Lamport described TLC, a model checker for it. The book Specifying Systems followed in 2002. Hardware engineers were early users: a DEC/Compaq team verified cache-coherence protocols for Alpha processors, and Intel used TLA+ on cache-coherence designs before writing RTL.
Lamport developed TLA+ further at Microsoft Research. He added PlusCal in 2009 for people who think in pseudocode, an Eclipse-based Toolbox appeared in 2010, and the TLA+ Proof System was built at the Microsoft Research–Inria Joint Centre and presented in 2012. Meanwhile AWS adopted TLA+ in 2011 and wrote about it in Communications of the ACM in 2015, which brought the language to many cloud and database teams. In 2021 a VS Code extension arrived, and in March 2022 Apalache, a symbolic model checker started at TU Wien and developed at Informal Systems, became available.
In 2023 TLA+ moved to the Linux Foundation: the TLA+ Project became a series of LF Projects in January, and the TLA+ Foundation was launched in April. Lamport retired from Microsoft on January 3, 2025 and wrote that TLA+ is “now under the control of the TLA+ Foundation”. Foundation grants pay for work such as moving TLAPS onto the SANY parser, and Apalache joined the foundation as its own LF Projects series in 2026.
Why it’s built this way
- Mathematics instead of a programming language
- Lamport’s premise is that “the best way to describe things precisely is with simple mathematics”, which lets a specification describe what a system may do without saying how the code does it.
- PlusCal as a front end
- Many engineers find a pseudocode-like algorithm easier to start with; AWS observed that engineers “often find it easier to begin with PlusCal”, and its translator produces ordinary TLA+ for the same tools.
- Several independent checkers
- Explicit-state checking finds bugs quickly in small instances but can’t prove a design for all sizes, so TLC, Apalache and TLAPS each cover a different trade-off between automation and generality.
- Handing the language to a foundation
- After decades under Lamport’s stewardship with Microsoft’s support, a Linux Foundation project with a language committee and paying members gave TLA+ a future that doesn’t depend on one person or company.
Timeline
- 1994
“The Temporal Logic of Actions” is published in ACM TOPLAS
- 1999
TLC, the TLA+ model checker, is described at CHARME
- 2002
Specifying Systems, the TLA+ book, is published
- 2009
PlusCal, the algorithm language that translates to TLA+
- 2012
The TLA+ Proof System is presented at FM 2012
- 2021
A VS Code extension becomes available in January
- 2023
The TLA+ Foundation launches at the Linux Foundation on April 21
- 2026
Apalache becomes a TLA+ Foundation project
- Wikipedia: TLA+ (history from Lamport’s 1977 work to the Toolbox in 2010 and TLAPS)
- Lamport: The Temporal Logic of Actions, ACM TOPLAS 16(3), May 1994
- Yu, Manolios and Lamport: Model Checking TLA+ Specifications, CHARME 1999
- Lamport: Specifying Systems (2002)
- Lamport: The PlusCal Algorithm Language, ICTAC 2009
- Cousineau et al.: TLA+ Proofs, FM 2012
- TLAPS README (authors; copyright 2008 INRIA & Microsoft)
- Newcombe et al.: Use of Formal Methods at Amazon Web Services (2014; DEC/Compaq Alpha, PlusCal, adoption from 2011)
- TLA+ Foundation: Industrial Use of TLA+ (Intel)
- Leslie Lamport: TLA+ news (VS Code extension, Apalache, TLA+ Foundation, retirement)
- Linux Foundation: Linux Foundation Announces Launch of TLA+ Foundation (April 21, 2023)
- Technical Charter for TLA+ Project a Series of LF Projects, LLC (adopted January 5, 2023)
- TLA+ Foundation: Grant Recipients (2024 grant for TLAPS on SANY)
- Apalache README (funding history, moved to the TLA+ Foundation, Apalache a Series of LF Projects)
Sources12 · facts checked 28 October 2026
- Leslie Lamport: The TLA+ Home Page (TLC, TLAPS, Toolbox, VS Code extension; TLA+ Foundation)
- tlaplus/tlaplus README (tla2tools.jar, Java 11+, Toolbox unmaintained, MIT)
- Current Versions of the TLA+ Tools (TLC limitations: integers up to 2³¹ − 1, no action composition)
- tlaplus/tlaplus releases (1.7.4 in August 2024; 1.8.0 pre-release and rolling builds)
- TLA+ extension for Visual Studio Code (MIT)
- TLAPS README (tlapm; Z3, Zenon, Isabelle/TLA+ and LS4 back ends; BSD 2-Clause)
- Apalache README (SMT translation for Z3 and CVC5, bounded model checking, inductive invariants; Apache 2.0)
- Technical Charter for TLA+ Project a Series of LF Projects, LLC (Specification Language Committee, MIT project licence)
- Newcombe et al.: Use of Formal Methods at Amazon Web Services (2014; 35-step trace, ten EC2 instances, 2–3 weeks to learn)
- TLA+ Foundation: Industrial Use of TLA+ (Azure Cosmos DB, MongoDB, Oracle, Google)
- Datadog Engineering: formal modeling, lightweight simulations and chaos testing (TLA+ and TLC for Courier)
- TLA+ Foundation home page (members, charters)