LTLSYNT(1)

NAME
ltlsynt - reactive synthesis from LTL specifications

SYNOPSIS
ltlsynt [OPTION...]

DESCRIPTION
Synthesize a controller from its LTL specification.

  Input options:

--from-pgame=FILENAME
    Read a parity game in Extended HOA format instead of building it.

-f, --formula=STRING
    process the formula STRING

-F, --file=FILENAME[/COL]
    process each line of FILENAME as a formula; if COL is a positive integer, assume a CSV file and read column COL; use a negative COL to drop the first line of the CSV file

--ins=PROPS
    comma-separated list of uncontrollable (a.k.a. input) atomic propositions, interpreted as a regex if enclosed in slashes

--lbt-input
    read all formulas using LBT's prefix syntax

--lenient
    parenthesized blocks that cannot be parsed as subformulas are considered as atomic properties

--outs=PROPS
    comma-separated list of controllable (a.k.a. output) atomic propositions, , interpreted as a regex if enclosed in slashes

--part-file=FILENAME
    read the I/O partition of atomic propositions from FILENAME

--tlsf=FILENAME[/VAR=VAL[,VAR=VAL...]]
    Read a TLSF specification from FILENAME, and call syfco to convert it into LTL. Any parameter assignment specified after a slash is passed as '-op VAR=VAL' to syfco.

  Fine tuning:

--algo=sd|ds|ps|lar|lar.old|acd
    choose the algorithm for synthesis:

sd: translate to TGBA, split, determinize
    ds: translate to TGBA, determinize, split ps: translate to DPA, split lar: translate to a deterministic TELA, convert

to DPA with LAR, split (default)
    lar.old: old version of LAR, for benchmarking; acd: translate to a deterministic TELA, convert

    to DPA with ACD, split

--bypass=yes|no
    whether to try to avoid to construct a parity game (enabled by default)

--decompose=yes|no
    whether to decompose the specification as multiple output-disjoint problems to solve independently (enabled by default)

--global-equivalence=yes|no|before-decompose
    whether to remove atomic propositions that are always equivalent to another one (enabled by default, both before and after decomposition)

--polarity=yes|no|before-decompose
    whether to remove atomic propositions that always have the same polarity in the formula to speed things up (enabled by default, both before and after decomposition)

--simplify=no|bisim|bwoa|sat|bisim-sat|bwoa-sat
    simplification to apply to the controller (no) nothing, (bisim) bisimulation-based reduction, (bwoa) bisimulation-based reduction with output assignment, (sat) SAT-based minimization, (bisim-sat) SAT after bisim, (bwoa-sat) SAT after bwoa. Defaults to 'bwoa'.

--splittype=expl|semisym|fullysym|auto
    Selects the algorithm to use to transform the automaton into a game graph. Defaults to 'auto'.

  Output options:

--aiger[=ite|isop|both[+ud][+dc][+sub0|sub1|sub2]]
    encode the winning strategy as an AIG circuit and print it in AIGER format. The first word indicates the encoding to used: "ite" for If-Then-Else normal form; "isop" for irreducible sum of products; "both" tries both and keeps the smaller one. Other options further refine the encoding, see aiger::encode_bdd. Defaults to "ite".

--csv[=[>>]FILENAME], --csv-without-formula[=[>>]FILENAME]
    output statistics as CSV in FILENAME or on standard output (if '>>' is used to request append mode, the header line is not output)

--csv-with-formula[=[>>]FILENAME]
    like --csv, but with an additional 'formula' column

-d, --dot[=options]
    Use dot format when printing the result (game, strategy, or AIG circuit, depending on other options). The options that may be passed to --dot depend on the nature of what is printed. For games and strategies, standard automata rendering options are supported (e.g., see ltl2tgba --dot). For AIG circuit, use (h) for horizontal and (v) for vertical layouts.

--hide-status
    hide the REALIZABLE or UNREALIZABLE line (The exit status is enough of an indication.)

-H, --hoaf[=1.1|b|i|k|l|m|s|t|v]
    Output the automaton in HOA format (default). Add letters to select (1.1) version 1.1 of the format, (b) create an alias basis if >=2 AP are used, (i) use implicit labels for complete deterministic automata, (s) prefer state-based acceptance when possible [default], (t) force transition-based acceptance, (m) mix state and transition-based acceptance, (k) use state labels when possible, (l) single-line output, (v) verbose properties

--print-game-hoa[=options]
    print the parity game in the HOA format, do not solve it

--print-pg
    print the parity game in the pgsolver format, do not solve it

-q, --quiet
    suppress all normal output

--realizability
    realizability only, do not compute a winning strategy

  Miscellaneous options:

--help
    print this help

--verbose
    verbose mode

--verify
    verify the strategy or (if demanded) AIG against the formula

--version
    print program version

-x, --extra-options=OPTS
    fine-tuning options (see spot-x (7))

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

  Exit status:

0   if all input problems were realizable

1   if at least one input problem was not realizable

2   if any error has been reported

BIBLIOGRAPHY
If you would like to give a reference to this tool in an article, we suggest you cite the following papers:

•   Florian Renkin, Philipp Schlehuber-Caissier, Alexandre Duret-Lutz, and Adrien Pommellet. Dissecting ltlsynt. In Formal Methods in System Design, 2023.

•   Thibaud Michaud and Maximilien Colange. Reactive Synthesis from LTL Specification with Spot. In proceedings of SYNT@CAV'18.

REPORTING BUGS
Report bugs to <spot@lrde.epita.fr>.

COPYRIGHT
Copyright © 2025 by the Spot authors, see the AUTHORS File for details. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
ltlfsynt(1)