The model checks the model.
TLA+ describes system states, allowed transitions, and properties over possible executions. TLC explores reachable states for a finite instance and reports a trace when the model violates a checked property.[1] That is stronger than asking an agent whether a design looks safe. It is narrower than proving the running software behaves the same way.
The new Reasonable guide makes that boundary explicit. Its leader-election example has 38 states for three computers and more than one million for nine. The guide also warns that a TLA+ specification is usually separate from the implementation. The two can drift.[1]
A counterexample is a route through your model. The next job is to make the implementation drive that route.
Ask safety and liveness separately.
A safety property says that a bad condition never occurs. In leader election, two leaders at once would violate safety. A liveness property says that a desired condition eventually occurs. A system that never elects anyone can satisfy the safety rule while remaining useless.[1]
This split matters when an agent drafts the specification. A clean safety result may hide a dead system. A liveness claim may depend on fairness assumptions that the implementation, scheduler, or network does not honor. Put the property and every assumption in the review packet.
Use the spec as a map, not a trophy.
Datadog describes TLA+ specifications as one layer in a larger verification stack. Its published workflow also uses deterministic simulation, bounded verification, model checking, compatibility tests, and staging telemetry. The article calls deterministic simulation the main workhorse and TLA+ the map that defines state variables, actions, and invariants.[3]
Those performance and production results are Datadog's reports about its own systems. They do not prove that an agent-generated spec matches another codebase. The reusable idea is the transfer path. Reuse the same invariant across the model, test harness, and live checks. When the checker returns a trace, turn it into an implementation test.
Make the handoff executable.
Leslie Lamport describes TLA+ as a language for modeling concurrent and distributed systems. His site distinguishes the TLC model checker from the TLAPS proof system.[2] The TLA+ Wiki calls TLC an explicit-state checker for a commonly used subset of TLA+, especially finite systems. It can also dump a violation trace as JSON.[4]
A practical counterexample packet needs these parts:
- The specification revision and model configuration.
- The exact property, assumptions, constants, and finite bounds.
- The checker command, version, result, and failing trace.
- An implementation test or deterministic simulation that recreates the trace.
- A result from the code revision that will ship.
If the bridge to code is missing, say "model checked." Do not say "implementation verified." Precise language is part of the control system.