Apalache

The Symbolic Model Checker for TLA+

View the Project on GitHub apalache-mc/apalache

"Apalache Logo"

InstallationManualReleasesChatContribute

Apalache translates TLA+ into the logic supported by SMT solvers such as Microsoft Z3. Currently, Apalache supports three approaches of analyzing TLA+ specifications:

  1. Randomized symbolic execution to reason about some executions up to length k,

  2. Bounded model checking to reason about all executions up to length k, and

  3. Inductiveness checking to reason about all executions of all lengths.

To understand, how these three approaches play together, see the [blogpost] on Model checking safety of Ben-Or’s Byzantine consensus with Apalache (2024).

In general, Apalache runs under the same assumptions as the explicit-state model checker TLC. To learn more about TLA+, visit Leslie Lamport’s page on TLA+ and see his video course. Also, check out TLA+ language manual for engineers.

In addition to TLA+, Apalache power ups the following projects:

Success stories

Tutorials

Theory

To read an academic papers about the theory behind Apalache, check our paper at OOPSLA19 and paper at TACAS23.

Talks