spot/doc/org/ltlsynt.org
Thibaud Michaud 0821c97eb8 add ltlsynt executable
For now, ltlsynt only handles LTL realizability. It uses a reduction to
parity game followed by Calude et al.'s reduction from parity game to
reachability game.

* bin/ltlsynt.cc, bin/Makefile.am, bin/man/ltlsynt.x,
bin/man/Makefile.am, bin/.gitignore: New binary.
* doc/org/arch.tex, doc/Makefile.am, doc/org/tools.org,
doc/org/ltlsynt.org: Document it.
* spot/misc/game.cc, spot/misc/game.hh, spot/misc/Makefile.am: Parity
game wrapper for parity automata + reachability game interface from
Calude et al.'s paper.
2017-09-25 12:23:47 +02:00

1.9 KiB

ltlsynt

Basic usage

This tool answers whether a controller can be built given an LTL/PSL formula specifying its behavior. ltlsynt is typically called with the following three options:

  • --input: a comma-separated list of input signal names
  • --output: a comma-separated list of output signal names
  • --formula or --file: the LTL/PSL specification.

The following example is unrealizable, because a is an input, so no circuit can guarantee that it will be true eventually.

ltlsynt --input=a --output=b -f 'F a'
UNREALIZABLE

TLSF

ltlsynt was made with the SYNTCOMP competition in mind, and more specifically the TLSF track of this competition. TLSF is a high-level specification language created for the purpose of this competition. Fortunately, the SYNTCOMP organizers also provide a tool called syfco which can translate a TLSF specification to an LTL formula.

The following four steps show you how a TLSF specification called spec.tlsf can be tested for realizability using syfco and ltlsynt:

LTL=$(syfco FILE -f ltlxba -m fully)
IN=$(syfco FILE -f ltlxba -m fully)
OUT=$(syfco FILE -f ltlxba -m fully)
ltlsynt --formula="$LTL" --input="$IN" --output="$OUT"

Algorithm

The tool reduces the synthesis problem to a parity game, and solves the parity game using Zielonka's recursive algorithm. The full reduction from LTL to parity game is described in a paper yet to be written and published.

You can ask ltlsynt not to solve the game and print it instead (in the PGSolver format) using the --print-pg option, and leaving you the choice of an external solver such as PGSolver.