← Learn

Formal Specification

A method of defining system behaviors using mathematical models, ensuring precision and reducing ambiguity.

Learn

When to use it

Use formal specification when informal methods like ad-hoc testing or natural language descriptions fail to capture complex system behaviors accurately. Formal specifications bring together mathematical models that ensure clarity and precision, enabling verification of system properties like safety and liveness.

Quick example

In the Untyped tool, developers validate AI agent operations against formal specifications using TLA+. Here, the formal specification is defined in TLA+ and used to check if the recorded runs of AI agents adhere to expected behaviors. Untyped includes this formal specification process, ensuring that AI behaviors align with predefined mathematical models.

agent operations → Untyped → TLA+ formal specification → validation

Ecosystem

Formal specifications fit into the broader verification and validation ecosystem, often working alongside testing frameworks and runtime monitors.

        ┌─ testing frameworks ─┐
code →│ formal specification │→ runtime monitors
        └─ verification tools ─┘

Misconceptions

MisconceptionRebuttal
It's only for safety-critical systemsIt's useful whenever precision is needed
It replaces testingIt complements testing by providing a precise model
Requires advanced math skillsMany tools abstract the complexity

Trade-offs

  • Precision — requires upfront investment in model creation
  • Clarity — may increase initial learning curve for teams
  • Verification — can be computationally intensive in complex systems

Seen in