spot/doc/org/ltlsynt.org
Thibaud Michaud f414e9f5f2 parity game: add Zielonka's recursive algorithm
* spot/misc/game.cc, spot/misc/game.hh: Implement it.
* bin/ltlsynt.cc: Use it.
* doc/org/ltlsynt.org: Document it.
2017-09-25 12:23:47 +02:00

2.2 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 control the parity game solving step in two ways:

  • By choosing a different algorithm using the --algo option. The default is

rec for Zielonka's recursive algorithm, and as of now the only other available option is qp for Calude et al.'s quasi-polynomial time algorithm.

  • By asking 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.