Because benchmark show that this option usually do not help.
* src/tgbaalgos/degen.hh, src/tgbatest/ltl2tgba.cc: Here.
* src/tgbaalgos/degen.hh: Document the new options.
* src/tgbatest/ltl2tgba.cc: Calling tgbatest/ltl2tgba -M -O (which
makes no sense, but that is no reason) used the "minimized" variable
for two automata, overwriting one.
* wrap/python/spot.i: The python bindings did not know about
sba_explicit automata, causing memory leaks, and complaints from the
bdd_dict.
* src/tgbaalgos/simulation.cc: Fix non determinism.
* src/tgbatest/simdet.test: Test that the behavior is now correct.
* src/tgbatest/Makefile.am (TESTS): Add the new test to the
test-suite.
* src/tgba/tgbaexplicit.hh (state_is_accepting): Use
all_acceptance_conditions(), not all_acceptance_conditions_, so that
it works even when all_acceptance_conditions_ is not ready.
* src/tgbatest/explicit2.cc, src/tgbatest/explicit2.test: Adjust
test case.
Spin 6 supports formulas such as []<>(a < b) so that atomic properties
need not be specified using #define. Of course we don't want to
implement all the syntax of Spin in our LTL parser because other tools
may have different syntaxes for their atomic propositions. The
lenient mode tells the scanner to return any (...), {...}, or {...}!
block as a single token. The parser will try to recursively parse
this block as a LTL/SERE formula, and if this fails, it will consider
the block to be an atomic proposition. The drawback is that most
syntax errors will no be considered to be atomic propositions. For
instance (a U b U) is a single atomic proposition in lenient mode, and
a syntax error in default mode.
* src/ltlparse/ltlparse.yy, src/ltlparse/ltlscan.ll,
src/ltlparse/parsedecl.hh, src/ltlparse/public.hh: Add a
lenient parsing mode. Simplify the lexer using yy_scan_string.
* src/bin/common_finput.cc: Add a --lenient option.
* src/ltltest/lenient.test: New file.
* src/ltltest/Makefile.am: Add it.
* src/neverparse/neverclaimparse.yy: Parse the guards in lenient mode.
* src/tgbatest/neverclaimread.test: Adjust.
* src/ltlvisit/tostring.cc: When outputing a formula in Spin's syntax,
output (a < b) instead of "a < b".
* src/misc/escape.cc, src/misc/escape.hh (trim): New helper function.
* src/bin/ltlcheck.cc: Add option --json and --csv.
* src/bin/man/ltlcheck.x: Adjust examples.
* src/tgbatest/ltlcheck.test: Do not output any statistic.
* src/tgbatest/ltlcheck2.test: Output both JSON and CSV stats.
* src/tgbaalgos/lbtt.hh, src/tgbaalgos/lbtt.cc (lbtt_parse):
New function.
* src/tgba/tgbaexplicit.hh (get_acceptance_condition): Make it public.
* src/tgbatest/ltl2tgba.cc: Add a -XL option to read LBTT file.
* src/tgbatest/lbttparse.test: New file.
* src/tgbatest/Makefile.am: Add it.
Reported by Étienne Renault.
* src/tgbaalgos/scc.cc (build_map): Update root_.frond().supp for all
transitions leaving the top state, not only those causing a merge.
* src/tgbaalgos/scc.hh (ap_set_of): Clarify documentation.
* src/tgbatest/kv.test: Add a test case.
* src/tgbaalgos/cycles.cc (tag_state): Destroy duplicate states, not
new states!
* src/tgbatest/cycles.test: Add a test case that used to segfault.
Reported by Étienne Renault.
* src/misc/unique_ptr.hh: Create unique_ptr for Spot.
* src/misc/Makefile.am: Register this new file.
* src/tgbatest/ltl2tgba.cc: Replace two calls to delete by the
utilisation of unique_ptr.
* src/tgbaalgos/simulation.cc: Replace two calls to delete by the
utilisation of unique_ptr.
* m4/lbtt.m4: Turn the missing lbtt error into a warning,
and do not configure lbtt wen --without-included-lbtt is specified.
* bench/ltl2tgba/defs.in: Abort if lbtt is missing.
* src/tgbatest/defs.in (need_lbtt): New function to skip
tests that require lbtt.
* src/tgbatest/babiak.test, src/tgbatest/ltl2neverclaim.test,
src/tgbatest/spotlbtt.test: Call need_lbtt.
* src/tgbaalgos/cycles.hh (state_info): Initialize
mark and reach to false.
* src/tgbatest/cycles.test: Use jot if seq is missing,
and a custom loop of jot is missing too.
* src/tgbaalgos/isweakscc.cc, src/tgbaalgos/isweakscc.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/ltl2tgba.cc: Add a -KW option.
* src/tgbatest/cycles.test: Test it on a small example.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: New class to
capture the postprocessing logic.
* src/tgbaalgos/Makefile.am: Add them.
* src/bin/ltl2tgba.cc, src/bin/man/ltl2tgba.x: New files.
* src/bin/Makefile.am, src/bin/man/Makefile.am: Add them.
* src/tgbatest/spotlbtt.test: Prune the list of configurations slightly.
* src/tgbatest/spotlbtt2.test: New file.
* src/tgbatest/Makefile.am: Add it.
* bench/ltl2tgba/algorithms, bench/ltl2tgba/defs.in: Adjust to
use the new binary.
* NEWS: Update.
* src/tgba/tgbaexplicit.hh (num_states): New method.
* src/tgbaalgos/minimize.hh, src/tgbaalgos/minimize.cc
(minimize_obligation): Add a reject_bigger option.
* src/tgbatest/ltl2tgba.cc (-RM): New option.
* src/tgbatest/spotlbtt.test: Test -RM.
* bench/ltl2tgba/algorithms: Include -RM in addition to -Rm, and
replace -RDS by -RIS.
* NEWS: Mention this.
* src/tgbatest/ltl2tgba.cc: Change the order of the call to the
simulation and the cosimulation.
Call scc_filter when cosimulation is called with -R3.
Call scc_filter when simulation is called with -R3.
* src/tgbaalgos/simulation.cc: Create the iterated_simulations.
(direct_simulation) Add an attribute "stat" that represents the
number of states and transitions of the resulting automaton.
* src/tgbaalgos/simulation.hh: Declare the iterated_simulations.
* src/tgbatest/spotlbtt.test: Test the iterated_simulations.
* src/tgbatest/ltl2tgba.cc: Associate the option -RIS to the
iterated_simulations.
* src/tgbaalgos/simulation.cc: Add the cosimulation:
(acc_compl_automaton) Add a template parameter.
(acc_compl_automaton::process_link) Add a swap source destination.
(direct_simulation) Add a template parameter.
(direct_simulation::compute_sig) Add a flag in the signature to
know if the state is initial.
(direct_simulation::build_result) Remove the flag before reading
the signature.
Swap source and destination when building the new automaton.
* src/tgbaalgos/simulation.hh: Declare and document the
Cosimulation.
* src/tgbatest/ltl2tgba.cc: Associate the cosimulation with the -RRS
option.
* src/tgbatest/spotlbtt.test: Add a test on the cosimulation.
* src/ta/tgtaexplicit.cc, src/ta/tgtaexplicit.hh: Use a ta_explicit
attribute instead of inheriting from it.
(get_ta): New method.
* src/taalgos/minimize.cc, src/taalgos/minimize.hh,
src/taalgos/tgba2ta.cc, src/tgbatest/ltl2tgba.cc: Adjust usage.
* wrap/python/spot.i (as_ta): Remove, now that we have get_ta.
* wrap/python/ajax/spot.in: Use get_ta instead of as_ta.