Fixes issue #232.
* spot/parseaut/parseaut.yy, spot/parseaut/public.hh,
spot/parseaut/scanaut.ll: Add support for #line.
* tests/core/parseaut.test: Test it.
* NEWS: Mention it.
Because the loops iterate in the opposite order, multiple
test cases need to be adjusted.
* spot/taalgos/tgba2ta.cc, spot/twaalgos/alternation.cc,
spot/twaalgos/dualize.cc, spot/twaalgos/ltl2tgba_fm.cc,
spot/twaalgos/simulation.cc, spot/twaalgos/stutter.cc,
spot/twaalgos/toweak.cc: Replace loops based on
bdd_satonest(x,y,bddtrue) by loops based on minterms_of(x,y).
* tests/core/degenscc.test, tests/core/dualize.test,
tests/core/genltl.test, tests/core/readsave.test,
tests/python/alternation.ipynb, tests/python/automata.ipynb,
tests/python/decompose.ipynb, tests/python/decompose_scc.py,
tests/python/dualize.py, tests/python/sccinfo.py,
tests/python/simstate.py, tests/python/testingaut.ipynb,
tests/python/word.ipynb: Adjust expected test cases. The
only regression is in genltl.test, but the worsened case
should eventually be fixed as discussed in issue #425 anyway.
This replaces loops of the form
while (all != bddfalse) {
bdd one = bdd_satoneset(all, sup, bddfalse);
all -= one;
// ... use one ...
}
by the more efficient
for (bdd one: minterms_of(all, sub))
// ... use one ...
This patch only focues on loops where the third
argument of bdd_satoneset is bddfalse.
* spot/twaalgos/cobuchi.cc, spot/twaalgos/complement.cc,
spot/twaalgos/determinize.cc, spot/twaalgos/dtbasat.cc,
spot/twaalgos/dtwasat.cc, spot/twaalgos/hoa.cc,
spot/twaalgos/powerset.cc: Improve bdd_satoneset()-based loops.
*
* spot/twaalgos/postproc.hh, spot/twaalgos/postproc.cc: Add the new simulation
in do_simul().
* bin/man/spot-x.x, bin/spot-x.cc: Add documentation for
SPOT_SIMULATION_REDUCTION environnement variable and the simul-method
fine tunning option.
* NEWS: Mention the changes.
* spot/twaalgos/simulation.hh, spot/twaalgos/simulation.cc: Add
reduce_direct_sim(), reduce_direct_cosim() and
reduce_direct_iterated() wich reduce an automaton using simulation.
This functions wrap the class direct_sim wich compute simulation
with a new method.
* doc/spot.bib: Add ref.
* tests/python/simstate.py: Add tests for the new simulation.
This proceeds from a discussion with Michaël Cadilhac.
http://lists.lrde.epita.fr/pipermail/spot/2021q1/000356.html
* bin/autfilt.cc (--kill-states): New option.
* NEWS: Mention those.
* spot/twa/twagraph.hh, spot/twa/twagraph.cc: Add a kill_state()
method.
* tests/core/maskkeep.test: Test it.
Reported by Michaël Cadilhac.
* spot/graph/graph.hh, spot/twa/twagraph.hh: Take the renaming vector
by reference, not rvalue reference. Document that
twa_graph::defrag_states may modify the vector. Keep a deprecated
version of the old prototype just in case. While there, also hide
this method from Swig.
* spot/twa/twagraph.cc: Simplify all calls to defrag_states().
* NEWS: Mention the change.
Based on report by Michaël Cadilhac.
* spot/graph/graph.hh, spot/twa/twagraph.hh (defrag_state): Clarify
that only unreachable states are meant to be removed.
* spot/twa/twagraph.hh (merge_edges): Typo in comment. Fixes#454.
* THANKS: Add Michaël.
* spot/twa/twagraph.cc (dump_storage_as_dot): Prefer \n over a plain
new line to work around GraphViz issue 1931, which was causing
twagraph-internals.ipynb to fail in our test suite.
* spot/tl/formula.cc: Correctly set eventual and universal properties
for ->, <->, and xor. This wasn't really relevant before, but there
are now situation where those are not rewritten.
* tests/core/kind.test: Adjust expected output.
* tests/core/ltl2tgba2.test: New test case, reported by Florian
Renkin.
* NEWS: Mention the bug.
When gf-guarentee works and produce a deterministic automaton, use it
right away without comparing it with the automaton produced by the
regular translation. This used to be the case for all -D scenarios
except -G -D.
Reported by Florian Renkin.
* spot/twaalgos/translate.cc: Use the result of
gf_guarantee_to_ba_maybe() or fg_safety_to_dca_maybe() whenever -D is
used.
* spot/twaalgos/postproc.cc: Call remove_unused_ap() in finalize(), to
iron out some slight output differences.
* tests/core/ltl2tgba2.test, tests/python/toparity.py: Lower expected
results in the test cases.
* tests/python/automata.ipynb, tests/core/prodor.test: Adjust to new
order.
Reported by Florian Renkin.
* spot/graph/graph.hh, spot/twa/twagraph.hh (merge_edge): Document
that it is expected that state i can only be renamed as j if j≤i.
This improves the determinism in a few cases.
* spot/twa/twagraph.cc (merge_edges): Encapsulate the two
passes into lambdas so that they are very easy to swap.
* spot/twa/twagraph.hh (merge_edges): Adjust documentation.
* tests/python/mergedge.py: Add test case.
* tests/core/alternating.test, tests/python/alternation.ipynb:
Determinism was improved.
* tests/core/parity2.test, tests/core/readsave.test,
tests/core/sbacc.test, tests/python/_product_susp.ipynb,
tests/python/atva16-fig2a.ipynb, tests/python/decompose.ipynb,
tests/python/highlighting.ipynb, tests/python/satmin.ipynb,
tests/python/simstate.py: Adjust expected order of edges.
* NEWS: Mention the change.
Fixes#449.
* spot/twaalgos/gfguarantee.cc (do_g_f_terminal_inplace): Save
edge additions to perform them after the loop. Otherwise,
reallocating the edge buffer might break the iteration.
Upgrading gnulib turned to be too difficult, so this only includes
updates to m4 files necessary to please Autoconf 2.70.
For issue #447.
* m4/extensions.m4, m4/malloc.m4, m4/std-gnu11.m4: Cherry-pick
from today's gnulib version.
Part of #447.
* configure.ac, m4/debug.m4, m4/devel.m4, m4/gccoptim.m4,
m4/ndebug.m4: Replace AC_ERROR and AC_HELP_STRING by
by AC_MSG_ERROR and AS_HELP_STRING.
Part of issue #447.
Autoconf 2.69 was released in 2012, so it now widely available. The
recent release of 2.70 is obsoleting some constructs, so it will be
easier on us if we do not have too many versions to support.
* HACKING, configure.ac: Require Autoconf 2.69.
This fixes#442.
* spot/twaalgos/simulation.cc (iterated_simulations_): Initialize next
so that we can exit after the first iteration if no change was made.
* NEWS: Mention the bug.
This fixes#441, reported by Jérôme Dubois.
* tests/python/mergedge.py: New file.
* tests/Makefile.am: Add it.
* spot/twa/twagraph.cc (merge_edges): Fix initialization of second
loop.
* NEWS: Mention the bug.