Spot: a platform for LTL and ω-automata manipulation
Table of Contents
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.
Latest version
The latest version is 2.12.1 and was released on 2024-09-23. Please see the download and installation instructions.
Documentation
- Basic concepts.
- Command-line tools.
- Code examples.
- Doxygen documentation, generated automatically from the source code.
- Definition of the temporal operators supported by Spot.
- Help for upgrading existing code written for Spot 1.2.x to Spot 2.
Try Spot On-line
- Our on-line translator provides a convenient way to translate LTL or PSL formulas into automata, or to study/compare formulas.
- spot-sandbox is a Jupyter notebook with a complete installation of Spot that allows you to try the command-line tools (using a shell interface) as well as the Python bindings (in an IPython notebook).
License
Spot is distributed under a GNU GPL v3 license.
One consequence is that any work based on Spot is covered by that license as well. For instance if you distribute a tool that links with Spot, you should distribute the source code of that tool as well.
Staying in touch
spot-announce@lrde.epita.fr
is an extremely low-traffic and
read-only mailing list for release announcements. If you want to stay
informed about future releases of Spot, we invite you to subscribe.
spot@lrde.epita.fr
is a list for general discussions and questions
about Spot. Subscribe here if you want to join, but feel free to send
in any question (in English) or bug report without subscribing.
Citing
Our citing page has a list of papers you could cite if you need to reference Spot in an academic publication.