Commit graph

798 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
e2b0b9d989 scc_filter: remove left-over print
Reported by František Blahoudek.

* spot/twaalgos/sccfilter.cc: Remove extra print statement.
* NEWS: Mention it.
2016-11-24 07:31:32 +01:00
Maximilien Colange
fd2f79200f Improve error messages when loading compiled models.
* spot/ltsmin/ltsmin.cc: Improve error messages.
2016-11-23 11:03:30 +01:00
Maximilien Colange
c9aabcddab Add support to load GAL models.
* spot/ltsmin/ltsmin.cc: Handle GAL models.
* tests/Makefile.am: Test the new feature.
* tests/ltsmin/check.test: Also check GAL.
* tests/ltsmin/beem-peterson.4.gal: A new GAL model for tests.
* tests/ltsmin/finite.gal: A new GAL model for tests.
* tests/ltsmin/finite3.test: A new test for GAL.
2016-11-23 11:03:30 +01:00
Etienne Renault
ec83e60bb9 bitvec: remove useless methods
* spot/misc/bitvect.hh, tests/core/bitvect.cc,
tests/core/bitvect.test: here.
2016-11-23 09:39:58 +01:00
Etienne Renault
43ec36cda7 Prefer emplace_back to push_back
* spot/graph/ngraph.hh, spot/ltsmin/ltsmin.cc,
spot/misc/bitvect.hh, spot/misc/intvcomp.cc,
spot/misc/satsolver.cc, spot/priv/weight.cc,
spot/ta/taexplicit.cc, spot/taalgos/minimize.cc,
spot/taalgos/reachiter.cc, spot/tl/exclusive.cc,
spot/tl/formula.cc, spot/tl/formula.hh,
spot/tl/mark.cc, spot/tl/mutation.cc,
spot/tl/relabel.cc, spot/tl/remove_x.cc,
spot/tl/simplify.cc, spot/twa/acc.cc,
spot/twa/acc.hh, spot/twa/formula2bdd.cc,
spot/twa/taatgba.cc, spot/twa/taatgba.hh,
spot/twa/twa.hh, spot/twa/twagraph.cc,
spot/twaalgos/bfssteps.cc, spot/twaalgos/canonicalize.cc,
spot/twaalgos/compsusp.cc, spot/twaalgos/copy.cc,
spot/twaalgos/cycles.cc, spot/twaalgos/degen.cc,
spot/twaalgos/determinize.cc, spot/twaalgos/dtwasat.cc,
spot/twaalgos/emptiness.cc, spot/twaalgos/gv04.cc,
spot/twaalgos/hoa.cc, spot/twaalgos/ltl2taa.cc,
spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/magic.cc,
spot/twaalgos/mask.hh, spot/twaalgos/minimize.cc,
spot/twaalgos/powerset.cc, spot/twaalgos/product.cc,
spot/twaalgos/randomgraph.cc, spot/twaalgos/reachiter.cc,
spot/twaalgos/relabel.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/sccfilter.cc, spot/twaalgos/se05.cc,
spot/twaalgos/simulation.cc, spot/twaalgos/stutter.cc,
spot/twaalgos/tau03opt.cc, spot/twaalgos/totgba.cc,
spot/twaalgos/word.cc, tests/core/bitvect.cc: here.
2016-11-23 09:39:58 +01:00
Alexandre Duret-Lutz
c225747749 twa: introduce intersects() and friends
* spot/twa/twa.hh, spot/twa/twa.cc (intersects, intersecting_run,
intersecting_word): New functions.
* NEWS: Mention them.
* doc/org/tut51.org, tests/python/bugdet.py: Use them.
2016-11-13 11:23:12 +01:00
Alexandre Duret-Lutz
bdad288c70 * spot/twa/twa.hh: Typos. 2016-11-13 09:36:06 +01:00
Alexandre Duret-Lutz
dce83a649b improve doc for purge_unreachable_states and purge_dead_states
* spot/twa/twagraph.hh: Here.
2016-11-11 15:38:25 +01:00
Alexandre Duret-Lutz
85f6e0e158 scc_filter: preserve state names and highlighted states
Suggested by Juraj Major.

* spot/twaalgos/sccfilter.cc: Here.
* tests/python/sccfilter.py: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the news.
2016-11-11 15:21:17 +01:00
Alexandre Duret-Lutz
dd706d7847 twa: do not set prop_state_acc in set_acceptance
Reported by Juraj Major.

* spot/twa/twa.hh: check num_sets() in prop_state_acc() so we do not
have to set it in set_acceptance(), causing trouble if set_acceptance()
is called multiple times.
* tests/python/setacc.py: New test case.
* tests/Makefile.am: Add it.
* THANKS: Add Juraj.
* NEWS: Mention the bug.
2016-11-11 15:20:56 +01:00
Alexandre Duret-Lutz
a70589fe13 remfin: fix handling of weak automata
* spot/twaalgos/remfin.cc: Do not add a sink states to deterministic
weak automata, and actually apply the "weak" Fin-removal to any weak
automaton.
* tests/core/explprod.test: Add a test case for the previous patch,
but that used to fail because of this bug.
* NEWS: Mention the bug.
2016-11-11 14:10:24 +01:00
Alexandre Duret-Lutz
49266dee7f parseaut: do not close fd or stdin
* spot/parseaut/public.hh, spot/parseaut/scanaut.ll: When parsing
automata read from some given FD, do not close the file descriptor, as
the caller is likely to already close it, and closing FDs twice is very
bad.  This seems to have be the root of some issue we had with recent
jupyter versions, were 0MQ would crash with "Bad file descriptor"
messages.  Also do not close stdin while we are at it.
* NEWS: Mention the bug.
2016-11-11 14:10:03 +01:00
Alexandre Duret-Lutz
2e6297c26a ltl2tgba_fm: simplify three bdd operations
* spot/twaalgos/ltl2tgba_fm.cc: Replace bdd_exists(a & b, c) by
bdd_appex(a, b, bddop_and, c).
2016-11-09 10:29:00 +01:00
Alexandre GBAGUIDI AISSE
6ed380709d spot: Add %R, %[..]R common option.
For #189.

* NEWS: Update.
* bin/autfilt.cc: Replace stopwatch with process_timer.
* bin/dstar2tgba.cc: Replace stopwatch with process_timer.
* bin/ltl2tgba.cc: Replace stopwatch with process_timer.
* bin/ltlcross.cc: Replace stopwatch with process_timer.
* bin/ltldo.cc: Replace stopwatch with process_timer.
* bin/randaut.cc: Replace stopwatch with process_timer.
* bin/common_aoutput.hh: Implement process_timer, integrate it.
* bin/common_aoutput.cc: Integrate process_timer and implement new
print method.
* spot/misc/timer.hh: Modify timer class and timeinfo struct
i.e. add cutime (children_utime) and cstime (children_stime).
* spot/misc/timer.cc: Help code to behave as before all this.
* spot/twaalgos/dtbasat.cc: Help print_log to behave as before
all this.
* spot/twaalgos/dtwasat.cc: Help print_log to behave as before
all this.
* spot/misc/formater.hh: Add operator<< for spot::timer.
2016-11-08 18:57:50 +01:00
Alexandre Duret-Lutz
0b7b03c7d2 parsetl: flush the errors
This fixes an issue in the on-line translator, where error message would
not be output in the correct <div>.

* spot/parsetl/fmterror.cc (format_parse_errors): Flush the stream.
2016-11-05 22:59:02 +01:00
Alexandre Duret-Lutz
2e69e04583 from_ltlf: new LTL transformation.
Fixes #187.

* spot/tl/ltlf.cc, spot/tl/ltlf.hh: New files.
* spot/tl/Makefile.am: Add them.
* bin/ltlfilt.cc: Add a new option.
* bin/man/ltlfilt.x: Add bibliographic reference.
* tests/core/ltlfilt.test: Add more tests.
* tests/python/ltlf.py: New file.
* tests/Makefile.am: Add it.
* python/spot/impl.i: Python bindings.
* NEWS: Mention it.
2016-11-05 22:59:02 +01:00
Alexandre Duret-Lutz
3f64e9723f determinize: call bdd_implies less often
* spot/twaalgos/determinize.cc (safra_state::merge_redundant_states):
Test is_connected before called bdd_implies.
2016-11-01 09:29:55 +01:00
Alexandre Duret-Lutz
d919b78c89 simulation: do not purge unreachable states when recording implications
This fixes the incorrect output of tgba_determinize() reported yesterday
by Reuben Rowe.

* spot/twaalgos/simulation.cc: Do not purge unreachable states when
recording implications.
* tests/python/bugdet.py: New test case.
* tests/Makefile.am: Add it.
* THANKS: Add Reuben.
* NEWS: Mention the bug.
2016-11-01 09:29:55 +01:00
Alexandre Duret-Lutz
adc40fdcb6 ltlsmin: revert part of 630e90b9
* spot/ltsmin/ltsmin.cc (compile_model): It does need to modify its
first argument.
2016-10-30 08:13:37 +01:00
Alexandre Duret-Lutz
40ed12050b parsetl: fix crash in debug-mode
Fixes #193, reported by Etienne Renault.

* spot/parsetl/parsetl.yy: Clone printed formulas.
* tests/core/parse.test: Add test case.
* NEWS: Mention the issue.
2016-10-29 13:13:09 +02:00
Alexandre Duret-Lutz
a5fb5784f6 print: fix str_sere() and str_utf8_sere(), as found by PVS-Studio
These were not actually printing in "SERE" mode due to a copy/paste
error.  PVS-Studio seems really good at finding those.  For #192.

* spot/tl/print.cc: Fix it.
* NEWS: Mention the bug.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
24d19a6703 bitvect: do not leak on realloc failure, flagged by PVS-Studio
For #192.

* spot/misc/bitvect.hh: Here.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
288f6ead9f randomltl: fix initialization of the simplifier, caught by PVS-Studio
For #192.

* spot/tl/randomltl.cc: Here.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
c31ba658bf optionmap: remove superfluous code
This was noticed while looking at a false-positive in the report for
PVS-Studio, in #192.

* spot/misc/optionmap.cc: Do not remove the option from unused_ twice..
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
65955b44d9 rearrange some code to trigger less warning from PVS-Studio
For #192.

* spot/tl/formula.cc: Avoid calling twice the same function.
* spot/twaalgos/gtec/gtec.cc: Do not shadow a member variable.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
835b5ee1cf improve some conditions, as hinted by PVS-Studio
For #192.

* spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/are_isomorphic.cc,
spot/taalgos/tgba2ta.cc: Here.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
40b8bab890 remove some dead code discovered while studying PVS-Studio's report
For #192.

* spot/misc/timer.hh, spot/twa/bdddict.cc, spot/twa/bdddict.hh,
spot/twaalgos/sbacc.cc: Here.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
279bfa00bd fix some implicit promotion from bool, as suggested by PVS-Studio
For #192.

* spot/parseaut/parseaut.yy, spot/parseaut/scanaut.ll,
spot/tl/randomltl.cc, spot/twa/acc.cc, spot/twaalgos/postproc.hh: Here.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
630e90b9cc ltsmin: fix constness of arguments as suggested by PVS-Studio
For #192.

* spot/ltsmin/ltsmin.cc (compile_model): Here.  As remove some unused
variable.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
26e94b774f taproduct: fix incorrect assert() flagged by PVS-Studio
For #192.

* spot/ta/taproduct.cc: Check the output of down_cast, not its input.
2016-10-29 12:37:35 +02:00
Alexandre Duret-Lutz
d0112a7b8a fix unpaired copy-ctor/op= reported by PVS-Stydio
For #192.

* bin/common_trans.cc, bin/common_trans.hh, spot/twa/acc.hh:
Add an operator= in addition to the copy constructor.
* spot/twaalgos/ltl2tgba_fm.cc: Use the default constructor.
* spot/ta/taproduct.cc, spot/ta/taproduct.hh: Delete an unused copy
constructor.
2016-10-29 12:37:21 +02:00
Etienne Renault
f9991288f7 compression: fix bad encoding
Fixes #190.

* NEWS, spot/misc/intvcomp.cc: here.
2016-10-25 14:55:27 +02:00
Alexandre Duret-Lutz
ce63c30c0b translate: reset the LTL simplifier on set_level().
Fix an issue reported by Tomáš Babiak, who noticed that he could not
manage to have ltl2tgba process `genltl --go-theta=N` efficiently for
larger values of N.

* spot/twaalgos/translate.hh (set_level): Reset any owned LTL simplifier
whenever the optimization level is changed.
* NEWS: Mention the bug.
2016-10-25 13:53:28 +02:00
Alexandre Duret-Lutz
4be7065b81 simulation: speedup on deterministic automata
* spot/twaalgos/simulation.cc: Detect deterministic automata, and skip
the partial-order update.
* NEWS: Mention the speedup.
2016-10-23 19:55:48 +02:00
Alexandre Duret-Lutz
6ca555ed89 determinize: improve the storage of implications
* spot/twaalgos/determinize.cc: Store implications
in a vector, not a map.
* spot/twaalgos/simulation.cc, spot/twaalgos/simulation.hh: Adjust.
2016-10-21 14:26:49 +02:00
Alexandre Duret-Lutz
7ea9454614 * spot/misc/bitvect.hh (is_subset_of): Fix implementation. 2016-10-20 21:00:27 +02:00
Alexandre Duret-Lutz
41866b370c * spot/twaalgos/simulation.cc: Simplify some part. 2016-10-20 09:37:28 +02:00
Alexandre Duret-Lutz
56f768f5a6 remove_fin: improve behavior on unclean acceptance
Related to #188.  This is a third fix that independently
makes `'utfilt --is-unambiguous -q smaller.hoa' instantaneous.

* spot/twaalgos/remfin.cc: Clean the received automaton if
necessary.
* bin/autfilt.cc: No need to call cleanup_acceptance_here() before
remove_fin() anymore.
* tests/core/remfin.test: Add an additional test.
* NEWS: Mention the change.
2016-10-19 11:00:15 +02:00
Alexandre Duret-Lutz
3dc084c4f6 use mask_keep_accessible_states
* bin/autfilt.cc, spot/twaalgos/isweakscc.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/sccinfo.cc: Use mask_keep_accessible_states instead of
mask_keep_states.
2016-10-19 10:51:38 +02:00
Alexandre Duret-Lutz
ad478bd31a sccinfo: improve detection of rejecting 1-self-loop SCCs
As observed in #188, the smaller.hoa automaton is made only of
1-state/1-self-loop SCCs, for which calling remove_fin is a complete
waste of time.  This patch alone (i.e., without the other changes
suggested by #188) improves the run time of

% autofilt -q --is-unambiguous smaller.hoa

from 38s to 0.05s.

* spot/twaalgos/sccinfo.cc: If a single-state SCC has undeterminate SCC
and only one self-loop, then it is necessarily rejecting.
* NEWS: Mention the change.
2016-10-19 10:51:38 +02:00
Alexandre Duret-Lutz
5384a3b89a is_unambiguous: rewrite more efficiently
Avoid calling scc_info::determine_unknown_acceptance on the product, as
suggested in #188.

* spot/twaalgos/isunamb.cc (is_unambiguous): Rewrite.
* tests/core/unambig.test: Add the automaton from #188.
* NEWS: Mention the improved function.
* spot/twaalgos/mask.cc,
spot/twaalgos/mask.hh (mask_keep_accessible_states): New function.
2016-10-19 10:51:38 +02:00
Alexandre Duret-Lutz
70fa739fd1 dot: improve option initialization
* spot/twaalgos/dot.cc: Rearrange options to speed up their
initialization and avoid an "uninitialized read" error from valgrind
when compiling with clang-3.9.  The uninitialized read is still a bit
misterious to me; valgrind was complaining about opt_shape_ who is
actually initialized in the code.  However looking into the assembly
code generated revealed that all consecutive 0/false values were
initialized together, so this patch reorganize the options to encourage
that.  Also the palette was copied over for each call to print_dot(), so
this is now declared statically.
2016-10-14 14:05:23 +02:00
Alexandre Duret-Lutz
ed45be98ea * spot/misc/common.hh (SPOT_FALLTHROUGH): Work around Clang 3.5. 2016-10-10 14:39:44 +02:00
Alexandre Duret-Lutz
a5d6aa2533 introduce SPOT_FALLTHROUGH to cope with -Wimplicit-fallthrough
* NEWS: Mention the fix.
* HACKING: Mention the new macro.
* spot/misc/common.hh (SPOT_FALLTHROUGH): Add the macro.
* bin/randltl.cc, spot/misc/escape.cc, spot/tl/mutation.cc,
spot/tl/print.cc, spot/tl/simplify.hh, spot/tl/snf.cc, spot/twa/acc.cc,
spot/twaalgos/ltl2taa.cc, spot/twaalgos/ltl2tgba_fm.cc,
spot/twaalgos/sepsets.cc, spot/twaalgos/translate.cc: Use it.
2016-10-07 21:29:34 +02:00
Alexandre Duret-Lutz
6528d75339 simplify: rewrite GF(a & GFb) as G(Fa & Fb)
Fixes #185.

* spot/tl/simplify.cc: Implement the new rule.
* NEWS, doc/tl/tl.tex: Document it.
* tests/core/reduccmp.test: Test it.
2016-09-22 17:37:55 +02:00
Alexandre Duret-Lutz
01d84c4d52 formula: fix valgrind error in is_Kleene_star() with clang++
* spot/tl/formula.hh, spot/tl/formula.cc: Rework the
initialization of fnode.
* NEWS: Mention the bug.
2016-09-22 17:36:43 +02:00
Alexandre Duret-Lutz
851502ab93 dtwasat: typo in DEBUG mode
* spot/twaalgos/dtwasat.cc: Update a mark check.
2016-09-06 13:09:31 +02:00
Alexandre Duret-Lutz
cc761870c2 kripkegraph: fix g++ warning
Test the output of down_cast before using it.  This
used to generate a warning when crosscompiling
for mingw with g+++ 6.1.1

* spot/kripke/kripkegraph.hh: Here.
2016-09-04 17:25:24 +02:00
Alexandre Duret-Lutz
571f0112ab bin: add options for --stats=%c
* spot/twaalgos/stats.cc: Implement options.
* bin/common_aoutput.cc, NEWS: Document them.
* tests/core/format.test: Add some quick tests.
2016-08-17 16:35:00 +02:00
Alexandre Duret-Lutz
4f0a630dbc stats: preparatory change of the implementation of %c
This now holds the scc_info while processing the %c sequence, so that
using options we will soon be able to specify which SCC to count.

* spot/twaalgos/stats.hh, spot/twaalgos/stats.cc (printable_scc_info):
New class.
(state_printer): Use it for %c.
* spot/misc/formater.hh: Add move assignment.
* bin/common_aoutput.hh, bin/common_aoutput.cc: Use printable_scc_info
for %C.
* tests/core/format.test: Add a quick test case to make sure nothing
changed.
2016-08-17 14:49:28 +02:00