Commit graph

250 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
d719c706f4 ltlcross: report statistics about Rabin and Streett automata
* src/bin/ltlcross.cc: Implement it.
* src/bin/man/ltlcross.x, doc/org/ltlcross.org, NEWS: Document it.
* src/tgbatest/ltl2dstar.test, src/tgbatest/ltlcross3.test: Test it.
2013-11-22 08:59:13 +01:00
Alexandre Duret-Lutz
2b10745dfb ltlcross: support --products=+N
* src/bin/ltlcross.cc: Implement it.
* NEWS, doc/org/ltlcross.org: Document it.
* src/tgbatest/ltlcross3.test: Test it.
2013-11-22 02:13:57 +01:00
Alexandre Duret-Lutz
f65c621a55 ltlcross: report exit_status and exit_code columns in CSV and JSON
* src/bin/ltlcross.cc: Report exit_status and exit_code columns in CSV
and JSON files.  Also output lines for failed translations, and add
a --omit-missing option to disable that.  Move the time column right
after exit_status and exit_code.
* src/bin/man/ltlcross.x: Document each column of the output.
* bench/ltl2tgba/tools: Use the "{name}cmd" notation.
* bench/ltl2tgba/sum.py: Adjust to the new columns.
* bench/ltl2tgba/README: Update to point to the man page for a
description of the columns.
* bench/ltl2tgba/Makefile.am: Build results.pdf as said announced in
README.
* bench/spin13/html.bottom: Update code to ignore these two new
columns and lines with null values.
* src/tgbatest/ltlcross3.test: Add tests.
* doc/org/ltlcross.org: Adjust examples.
* NEWS: Mention this.
2013-11-22 02:13:57 +01:00
Alexandre Duret-Lutz
686a45484d ltlcross: report missing input/output sequence
* src/bin/ltlcross.cc: Fix it.
* src/tgbatest/ltlcross3.test: New file.
* src/tgbatest/Makefile.am: Add it.
* NEWS: Mention it.
2013-11-22 02:13:57 +01:00
Alexandre Duret-Lutz
7de25a32ef ltlcross: support short names
* NEWS: Mention it.
* doc/org/ltlcross.org: Document it.
* src/bin/ltlcross.cc: Implement it.
* src/tgbatest/Makefile.am, src/tgbatest/defs.in,
src/tgbatest/ltlcross4.test: Test it.
2013-11-22 02:13:57 +01:00
Alexandre Duret-Lutz
1c5536ea9c ltlcross: follow RFC 4180 for CSV output.
* src/misc/escape.cc, src/misc/escape.hh (escape_rfc4180): New
function.
* src/bin/ltlcross.cc: Do not output space after ',', use
"\r\n" for end of line, and use escape_rfc4180().
* NEWS: Mention it.
2013-11-22 02:13:50 +01:00
Alexandre Duret-Lutz
65dc65b061 * NEWS, configure.ac: Bump version to 1.2a 2013-10-01 13:48:40 +02:00
Alexandre Duret-Lutz
c0a845b274 Release Spot 1.2.
* NEWS, configure.ac, doc/org/tools.org: Bump version to 1.2.
2013-10-01 13:23:47 +02:00
Alexandre Duret-Lutz
87b65b9bce relabel: implement relabeling of Boolean subexpressions.
* src/ltlast/multop.cc, src/ltlast/multop.hh (multop::boolean_operands,
multop::boolean_count): New methods.
* src/ltlvisit/relabel.cc, src/ltlvisit/relabel.hh
(relabel): Take an optional relabeling_map as parameter.
(relabel_bse): New.
* src/ltltest/ltlrel.test, src/ltltest/ltlrel.cc: New files.
* src/ltltest/Makefile.am: Add them.
* src/bin/ltlfilt.cc: Add option --relabel-bool.
* src/ltltest/ltlfilt.test: Test it.
* NEWS: Mention it.
* doc/org/ltlfilt.org: Illustrate it.
2013-09-28 09:02:30 +02:00
Alexandre Duret-Lutz
536e45b342 Arrange multops so that Boolean arguments come first.
This helps recursive implication checks.  Also order
atomic propositions with strverscmp().

* src/ltlast/formula.hh (formula_ptr_less_than_multop,
is_literal, atomic_prop_cmp): New.
* src/ltlast/formula.cc (is_literal, atomic_prop_cmp): Implement them.
* src/ltlast/multop.cc: Use formula_ptr_less_than_multop.
* src/ltltest/isop.test, src/ltltest/ltlfilt.test,
src/tgbatest/det.test, src/tgbatest/dstar.test,
src/tgbatest/explicit.test, src/tgbatest/explpro2.test,
src/tgbatest/explpro3.test, src/tgbatest/explprod.test,
src/tgbatest/nondet.test, src/tgbatest/tripprod.test: Adjust tests.
* NEWS: Mention the new order.
2013-09-26 17:14:58 +02:00
Alexandre Duret-Lutz
ce5ea829bd tools: Add a --format option
* src/bin/common_output.cc: Add option --format and implement
it.
* src/bin/ltlfilt.cc, src/bin/randltl.cc: Document the
supported %-sequences.
* src/bin/genltl.cc: Document the %-sequences, and supply
the name of the pattern to output_formula().
* doc/org/genltl.org, doc/org/ioltl.org, doc/org/ltlfilt.org,
NEWS: Document it.
* src/ltltest/latex.test: Use it.
2013-09-22 23:56:56 +02:00
Alexandre Duret-Lutz
3076c3da4e org: document SAT-based minimization
* doc/org/satmin.org, doc/org/satmin.tex: New files.
* doc/Makefile.am: Add them.
* doc/org/tools.org: Point to satmin.org.
* NEWS: Mention satmin.html.
2013-09-16 08:39:06 +02:00
Alexandre Duret-Lutz
9cfe1a3496 tostring: add LaTeX output
* src/ltlvisit/tostring.cc, src/ltlvisit/tostring.hh
(to_latex_string): New function.
* src/bin/common_output.cc, src/bin/common_output.hh:
Add a --latex option.
* doc/tl/spotltl.sty: New file.
* doc/tl/Makefile.am: Distribute it.
* src/ltltest/latex.test: New test.
* src/ltltest/Makefile.am: Add it.
* NEWS: Mention it.
2013-09-08 20:43:53 +02:00
Alexandre Duret-Lutz
1ab46b0864 postproc: Add option to output Complete automata.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: Tweak set_pref()
to also accept Any|Complete, Small|Complete, or Deterministic|Complete.
* src/bin/common_post.hh, src/bin/common_post.cc: Add option --complete
and set comp.
* src/bin/dstar2tgba.cc, src/bin/ltl2tgba.cc, src/bin/ltl2tgta.cc: Pass
comp to set_pref().
* src/tgbaalgos/complete.cc: Preserve state-based acceptance.
* src/tgbatest/dstar.test, src/tgbatest/ltlcross2.test,
src/tgbatest/nondet.test: Augment tests.
* doc/org/dstar2tgba.org, doc/org/ltl2tgba.org, NEWS: Document.
2013-09-08 20:43:52 +02:00
Alexandre Duret-Lutz
b31facffb1 * NEWS: Summarize recent changes 2013-09-08 20:43:52 +02:00
Alexandre Duret-Lutz
fdb157bf94 satmin: cleanup interfaces and minimization loops
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh:
(dtba_sat_minimize): Split into...
(dtba_sat_synthetize, dtba_sat_minimize): These.
(dtba_sat_minimize_dichotomy): New function.
* src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh
(dtgba_sat_minimize, dtgba_sat_synthetize): Likewise.
* src/tgbatest/ltl2tgba.cc: Adjust to new interface.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh:
Cleanup option processing for SAT options.
* src/tgbatest/satmin.test: Adjust.
* src/bin/spot-x.cc, src/bin/man/spot-x.x, NEWS: Document.
2013-09-08 20:43:17 +02:00
Alexandre Duret-Lutz
bfbe5b448b stats: add %r to display run-time
* src/tgbaalgos/stats.cc, src/tgbaalgos/stats.hh: Add
support for printing run-time.
* src/bin/ltl2tgba.cc, src/bin/dstar2tgba.cc: Compute
the run-time and show the option.
* NEWS: Mention it.
2013-08-26 17:27:43 +02:00
Alexandre Duret-Lutz
4dd8d80292 isdet: simplify is_deterministic(), add is_complete().
* src/tgbaalgos/isdet.cc: Simplify determinism check.
* src/tgbaalgos/isdet.hh, src/tgbaalgos/isdet.cc (is_complete): New
function.
* src/tgbaalgos/stats.cc, src/tgbaalgos/stats.hh, src/bin/dstar2tgba.cc
src/bin/ltl2tgba.cc: Add escape sequence %p to the possible statistics
to show whether an automaton is complete.
* src/tgbatest/nondet.test: Add a couple more tests.
2013-08-26 17:27:42 +02:00
Alexandre Duret-Lutz
1029d08a77 ltlcross: Complement deterministic automata.
* src/bin/ltlcross.cc: Complement deterministic automata,
and use them for additional intersection checks.
* NEWS, doc/org/ltlcross.org, src/bin/man/ltlcross.x: Document it.
2013-08-26 17:27:42 +02:00
Alexandre Duret-Lutz
f704513b6b org: document dstar2tgba.
* doc/org/dstar2tgba.org: New file.
* doc/org/tools.org: Link to it.
* doc/Makefile.am: Distribute it.
* NEWS: Mention the generated web page.
2013-08-26 17:27:39 +02:00
Alexandre Duret-Lutz
d7027c34d3 dstar: Improve conversion from DRA to BA.
Extended former conversion from DRA->DBA to handle
the case where some SCC is not DBA-realizable.

* src/dstarparse/dra2dba.cc: Rename as...
* src/dstarparse/dra2ba.cc: ... this.
(dra_to_dba, dra_to_dba_worker): Rename as...
(dra_to_ba, dra_to_ba_worker): ... these and extend.
* src/dstarparse/Makefile.am, src/dstarparse/public.hh,
src/dstarparse/dstar2tgba.cc, src/dstarparse/nra2nba.cc: Adjust.
* NEWS: Update the description of dstar2tgba accordingly.
2013-08-26 14:40:13 +02:00
Alexandre Duret-Lutz
d3b81809c8 dstar2tgba: new command.
* src/bin/dstar2tgba.cc, src/bin/man/dstar2tgba.x: New files.
* src/bin/Makefile.am, src/bin/man/Makefile.am: Add them.
* NEWS: Mention it.
* src/bin/ltl2tgba.cc, src/tgbaalgos/stats.cc, doc/org/ltl2tgba.org:
Rename the %S sequence as %c, for consistency with dstar2tgba.
* src/tgbatest/ltl2dstar.test: Add more tests.
* src/tgbatest/ltl2dstar2.test: New file.
* src/tgbatest/Makefile.am: Add it.
2013-08-23 17:02:30 +02:00
Alexandre Duret-Lutz
337aeefcc3 ltlcross: add support for ltl2dstar's output.
* src/bin/ltlcross.cc: Add support for %D.
* src/bin/man/ltlcross.x: Add example.
* NEWS: Mention it.
* src/tgbatest/ltl2dstar.test: New file.
* src/tgbatest/Makefile.am: Add it.
2013-08-23 17:02:30 +02:00
Alexandre Duret-Lutz
dfc5ff95e5 degen: Improve when initial state is accepting without self-loop.
* src/tgbaalgos/degen.cc: Choose the initial level according
to acceptance condition common to all outgoing transitions.
* src/tgbatest/degenid.test: Add test case.
* NEWS: Mention it.
2013-08-23 17:01:55 +02:00
Alexandre Duret-Lutz
e7522056ca ltlcross: give an example of accepted word for nonempty cross-products
* src/tgbaalgos/word.cc, src/tgbaalgos/word.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/ltlcrossce.test: New file.
* src/tgbatest/Makefile.am: Add it.
* src/bin/ltlcross.cc: Compute and display an accepted word
for nonempty cross-products.
* NEWS, doc/org/ltlcross.org: Document it.
2013-07-29 01:14:38 +02:00
Alexandre Duret-Lutz
4bafa4e1b0 tmpfile: Honor SPOT_TMPFILE and SPOT_TMPKEEP.
* src/misc/tmpfile.cc: Check these environment variables.
* src/bin/man/ltlcross.x, NEWS: Document them.
2013-07-29 01:14:37 +02:00
Alexandre Duret-Lutz
5b0bf8ef09 ltlcross: Add a --color option.
* src/bin/ltlcross.cc: Add a --color option.
* NEWS: Mention it.
2013-07-29 01:14:37 +02:00
Alexandre Duret-Lutz
8c2d7fcb7f Use the same location.hh and position.hh in all parsers.
* src/misc/location.hh, src/misc/position.hh: New files,
from Bison 2.7.
* src/misc/Makefile.am: Distribute them.
* src/eltlparse/Makefile.am, src/eltlparse/eltlparse.yy,
src/eltlparse/parsedecl.hh, src/eltlparse/public.hh,
src/kripkeparse/Makefile.am, src/kripkeparse/kripkeparse.yy,
src/kripkeparse/parsedecl.hh, src/kripkeparse/public.hh,
src/ltlparse/Makefile.am, src/ltlparse/fmterror.cc,
src/ltlparse/ltlparse.yy, src/ltlparse/parsedecl.hh,
src/ltlparse/public.hh, src/neverparse/Makefile.am,
src/neverparse/neverclaimparse.yy, src/neverparse/parsedecl.hh,
src/neverparse/public.hh, src/tgbaparse/Makefile.am,
src/tgbaparse/parsedecl.hh, src/tgbaparse/public.hh,
src/tgbaparse/tgbaparse.yy: Adjust to use and include
misc/location.hh.
* NEWS: Mention this change.
2013-07-29 01:14:34 +02:00
Alexandre Duret-Lutz
cbfbf14297 * NEWS: summarize recent changes 2013-07-29 01:13:57 +02:00
Alexandre Duret-Lutz
9ed2d7a1dc Bump version to 1.1.4a.
* NEWS: Bump version.
* configure.ac: Bump version, and add a banner
about this being a development version at the end.
2013-07-29 01:11:32 +02:00
Alexandre Duret-Lutz
9d6d53ed92 Release Spot 1.1.4.
* NEWS, configure.ac, doc/org/tools.org: Update version.
2013-07-29 00:27:59 +02:00
Alexandre Duret-Lutz
cb7bdf8c1f Fix interpretation of {e[*]} and !{e[*]}.
This follows from a discussion with Ernesto Posse.

The semantics for the {...} operator we use in Spot comes from the
cl(...) operator defined by Dax et al. (ATVA'09).  This is slightly
different from the the way the PSL spec interprets a SERE used in the
context of a temporal formula (appendix B.3.1.1.2, item 7).

cl({a;b}[*]) would match any infinite word that starts with a;b, while
in PSL {a;b}[*] would match any infinite word that alternates a and b.

Spot documents that {SERE} in a temporal formula is interpreted like
cl(SERE) however it failed to ignore the empty prefix of SERE.  So
{{a;b}[*]} would match anything, because the empty word is a prefix of
any word, and is also accepted by {a;b}[*].  Some trivial identities
and basic rewritings were also wrongly considering these empty
prefixes as well.

This patch therefore fixes the translation and syntactic
simplification rules, to really ignore these empty prefixes.

In some future version it should probably be wise to rename this {...}
operator as cl(...), and use {...} for the semantics given in appendix
B.3.1.1.2 (item 7) of the PSL specs.

* src/ltlast/unop.cc: Fix trivial identities.  We have
{[*0]} = 0 and !{[*0]} = 1.
* src/ltlvisit/simplify.cc: Fix basic rewriting rules.
{e[*]} = {e} and !{e[*]} = !{e}.
* doc/tl/tl.tex: Adjust documentation.
* doc/tl/tl.bib (dax.09.atva): New entry.
* src/tgbaalgos/ltl2tgba_fm.cc: Do not accept any
infinite word for {e[*]} just because the empty
prefix is matched by e[*].
* src/tgbatest/ltl2tgba.test: Add a test case.
* NEWS: Mention it.
* THANKS: Add Ernesto.
2013-07-29 00:25:13 +02:00
Alexandre Duret-Lutz
734e203b65 ltlcross: missing newline in error message.
* src/bin/ltlcross.cc: Add that missing new line.
* NEWS: Mention it.
2013-07-25 18:37:04 +02:00
Alexandre Duret-Lutz
84c9f03767 neverpase: fix parsing of neverclaim produced by ltl2ba and ltl3ba
These translator may output guards such as (a) || (b), but with the
changes in Spot 1.1.3 it would only work with ((a) || (b)).

Furthermore when ltlcross would fail to parse a neverclaim containing
such a guard, it would fail to parse all later neverclaims, because
the lexer was not properly reset.

* src/neverparse/neverclaimscan.ll: Scan (a) || (b) as a single
token.
(neverclaimyyopen): Reset the lexer.
* src/tgbatest/neverclaimread.test: Add a test for (a) || (b).
* NEWS: Update.
2013-07-20 20:21:39 +02:00
Alexandre Duret-Lutz
9bd49cfcfc * NEWS, configure.ac: Bump version to 1.1.3a. 2013-07-09 15:53:44 +02:00
Alexandre Duret-Lutz
026830d159 Release Spot 1.1.3.
* configure.ac, doc/org/tools.org, NEWS: Set version to 1.1.3.
2013-07-09 14:03:07 +02:00
Alexandre Duret-Lutz
a9a96ee4ff ltlcross: do not use f after it has been destroyed.
Reported by Joachim Klein.

* src/bin/ltlcross.cc: Here.
* NEWS, THANKS: Update.
2013-07-09 14:00:49 +02:00
Alexandre Duret-Lutz
168265bdf0 * NEWS: Summarize recent changes. 2013-07-09 13:59:04 +02:00
Alexandre Duret-Lutz
644b5f0152 * configure.ac, NEWS: Bump version to 1.1.2a. 2013-06-09 18:44:42 +02:00
Alexandre Duret-Lutz
424f04ca11 Release Spot 1.1.2.
* configure.ac, NEWS, doc/org/tools.org: Bump version to 1.1.2.
2013-06-09 18:05:20 +02:00
Alexandre Duret-Lutz
ecc8b8c79c * NEWS: Summarize recent changes. 2013-06-09 16:01:34 +02:00
Alexandre Duret-Lutz
57d25f0e21 * NEWS, configure.ac: Bump version to 1.1.1a. 2013-05-13 20:04:04 +02:00
Alexandre Duret-Lutz
27a18a0410 Release Spot 1.1.1
* NEWS, configure.ac, doc/org/tools.org: Bump version.
2013-05-13 16:20:29 +02:00
Alexandre Duret-Lutz
9b82d7557c ltlcross: add a --products=N option
* src/bin/ltlcross.cc: Implement the new option.  Average the product
statistics on all products.
* src/tgbatest/basimul.test, src/tgbatest/ltlcross.test,
src/tgbatest/ltlcross2.test, bench/ltl2tgba/tools: Use the new option.
* NEWS: Mention it.
2013-05-12 21:22:46 +02:00
Alexandre Duret-Lutz
b4670f85f1 bdddict: add an unregister_all_typed_variables() method
* src/tgba/bdddict.cc, src/tgba/bdddict.hh
(unregister_all_typed_variables): New method.
* src/tgbaalgos/degen.cc (degeneralize): Use it.
* NEWS: Mention it.
2013-05-12 21:05:05 +02:00
Alexandre Duret-Lutz
0c7c933805 simulation: Fix co-simulation and iterated simulations of BA automata
* src/tgbaalgos/simulation.hh, src/tgbaalgos/simulation.cc
(simulation_sba, cosimulation_sba, iterated_simulations_sba): New
function.  Also speedup the existing functions by avoiding
add_acceptince_conditions() and add_conditions().  Finally, use
scc_filter_states() when dealing with degeneralized automata.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh (do_ba_simul):
New method.  Use it after degeneralization.
* src/tgba/tgbaexplicit.hh (get_transition, get_state): New methods.
* src/tgbatest/basimul.test: New file.
* src/tgbatest/Makefile.am (TESTS): Add it.
* NEWS: Introduce the new function and summarize the bug.
2013-05-12 21:05:05 +02:00
Alexandre Duret-Lutz
372790a489 bin: Ignore empty lines on input.
* src/bin/common_finput.cc: Here.
* src/ltltest/ltlfilt.test: Test it.
* NEWS: Mention it.
2013-05-12 17:32:46 +02:00
Alexandre Duret-Lutz
9e589422d1 ltlcross: Add a --seed option.
* src/bin/ltlcross.cc: Here.
* NEWS: Mention it.
2013-05-12 17:28:09 +02:00
Alexandre Duret-Lutz
6b5b002ff9 Introduce scc_filter_states().
The main motivation is the upcoming patch that introduces
simulation_sba() and requires this function.

* src/tgbaalgos/sccfilter.hh, src/tgbaalgos/sccfilter.cc: Implement it.
* src/tgbaalgos/postproc.cc: Use it for monitors, because we do not
care about acceptance conditions.
* NEWS: Mention it.
2013-05-12 17:22:00 +02:00
Alexandre Duret-Lutz
2cab8197e5 ltlfilt: Fix handling --universal, --eventual, and --stutter-invariant.
* src/bin/ltlfilt.cc: Handle --universal and --eventual.  Match
only LTL formulas with --stutter-invariant.
* src/ltltest/ltlfilt.test: New file.
* src/ltltest/Makefile.am (TESTS): Add it.
* NEWS: Mention these bug fixes.
2013-05-11 11:24:38 +02:00