Improve ltlsynt interface

To ease debugging and testing, ltlsynt can output the synthesized
strategy as an automaton, not just an aiger circuit.
Also, its exit code has been changed to something meaningful.

* bin/ltlsynt.cc: Various improvements: options, exit code, code style
* spot/twaalgos/aiger.hh, spot/twaalgos/aiger.cc,
  spot/twaalgos/Makefile.am: Move the aiger printer to separate files
* tests/core/ltlsynt.test: Clean up and update test file
* tests/Makefile.am: Add the test file to the test suite
* NEWS: document the new aiger printer
* doc/org/concepts.org: document the named property "synthesis-outputs",
  used by print_aiger
This commit is contained in:
Maximilien Colange 2017-11-20 16:34:53 +01:00
parent 502ddc6d0a
commit 1da0afbafe
8 changed files with 564 additions and 1348 deletions

13
NEWS
View file

@ -44,8 +44,8 @@ New in spot 2.4.2.dev (not yet released)
also be used to detect unreliable measurements. See
https://spot.lrde.epita.fr/oaut.html#timing
- ltlsynt is a new tool for synthesizing AIGER circuits from LTL/PSL
formulas.
- ltlsynt is a new tool for synthesizing a controller from LTL/PSL
specifications.
- ltldo learned to limit the number of automata it outputs using -n.
@ -190,6 +190,15 @@ New in spot 2.4.2.dev (not yet released)
- The new spot::formula::is_leaf() method can be used to detect
formulas without children (atomic propositions, or constants).
- The new function spot::print_aiger() encodes an automaton as an
AIGER circuit and prints it. This is only possible for automata
whose acceptance condition is trivial. It relies on a new named
property "synthesis outputs" that describes which atomic
propositions are to be encoded as outputs of the circuits.
This function is used by ltlsynt to output the synthesized
controllers in the format required by the synthesis tools
competition SYNTCOMP.
Deprecation notices:
(These functions still work but compilers emit warnings.)