Spot is a C++17 library for LTL, ω-automata manipulation and model checking. It has the following notable features:
- Support for LTL (several syntaxes supported) and a subset of the linear fragment of PSL.
- Support for ω-automata with arbitrary acceptance condition.
- Support for transition-based acceptance (state-based acceptance is supported by a reduction to transition-based acceptance).
- The automaton parser can read a stream of automata written in any of four syntaxes (HOA, never claims, LBTT, DSTAR).
- Several algorithms for formula manipulation including: simplifying formulas, testing implication or equivalence, testing stutter-invariance, removing some operators by rewriting, translation to automata, testing membership to the temporal hierarchy of Manna & Pnueli…
- Several algorithms for automata manipulation including: product, emptiness checks, simulation-based reductions, minimization of weak-DBA, removal of useless SCCs, acceptance-condition transformations, determinization, SAT-based minimization of deterministic automata, Alternating Cycle Decomposition, etc.
- Support for Safety and parity games.
- Applications to reactive synthesis and model checking.
- In addition to the C++ interface, most of its algorithms are usable via command-line tools, and via Python bindings.
- One command-line tool, called ltlcross, is a rewrite of LBTT, but with support for PSL and automata with arbitrary acceptance conditions. It can be used to test tools that translate LTL into ω-automata, or benchmark them. A similar tool, autcross, checks tools that transform automata.