Commit graph

297 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
762dd4555d parseaut: misc cleanups
* spot/parseaut/parseaut.yy: Remove extra ;.
* spot/parseaut/scanaut.ll: Use nullptr instead of 0.
2017-05-10 17:24:35 +02:00
Alexandre Duret-Lutz
aa40482352 ltl2tgba: clear simplification cache between translations
The cache used in formula simplification will keep atomic propositions
defined between several translations, and may impact variable order.
Reported by Maximilien Colange.

* spot/tl/simplify.hh, spot/tl/simplify.cc,
spot/twaalgos/translate.cc, spot/twaalgos/translate.hh (clear_cache):
New method.
* bin/ltl2tgba.cc, bin/ltl2tgta.cc: Call it.
* spot/twaalgos/stats.cc: Do not keep a point to the formula after
printing statistics.
* tests/core/ltl2tgba.test: Add a test case.
* tests/core/readsave.test: Adjust one formula.
* NEWS: Mention the issue.
2017-05-10 17:03:05 +02:00
Alexandre Duret-Lutz
8968bf6c4e simplify: fix related to event_univ handling
Fixes #260.  Reported by František Blahoudek.

The simplification F(f)|q = F(f|q), where q designates an event_univ
formula, was not always applied because of a couple of issue: (1) the
mospliter was ignoring event_univ unless favor_event_univ was set, (2)
when processing formulas from res_EventUniv they were not put back
into res_F or res_G to be subject to the F/G rules.

* spot/tl/simplify.cc: Improve handling of the above points.
* tests/core/reduccmp.test: Adjust and add test case.
* tests/core/ltl2tgba2.test, tests/python/atva16-fig2a.ipynb: Adjust.
2017-05-08 13:32:55 +02:00
Alexandre Duret-Lutz
cd87be1595 fix libspot.pc and libspotltsmin.pc generation
Report from Jeroen Meijer.

* spot/Makefile.am (libspot.pc): Depends on Makefile.  Use a
temporary.  Declare in CLEANFILES instead of DISTCLEANFILES.
* spot/ltsmin/Makefile.am (libspotltsmin.pc): Likewise.
2017-05-04 15:36:40 +02:00
Alexandre Duret-Lutz
f02ca87f07 sbacc: fix a serious bug
Reported by Thibaud Michaud

* spot/twaalgos/sbacc.cc: Do not label rejecting SCCs with the empty
mark, as it might be accepting.
* tests/core/sbacc.test: Add test cases.
* NEWS: Mention the bug.
2017-04-19 20:55:42 +02:00
Alexandre Duret-Lutz
88bc78f9e2 * spot/twaalgos/remfin.cc: Typos in comments. 2017-04-08 17:24:10 +02:00
Alexandre Duret-Lutz
1daffe12f0 remfin: fix a corner case for rabin_to_buchi_maybe
when fin_alone sets where presents (i.e., not really Rabin condition),
the rabin_to_buchi_maybe() could fail to notice DBA-typeness.

* spot/twaalgos/remfin.cc: Don't set scc_ba_type to false when
fin_alone is present.
* tests/core/remfin.test: Add a test case.
2017-04-07 11:14:06 +02:00
Alexandre Duret-Lutz
1ed6e518dd various typos
* bench/dtgbasat/gen.py, spot/twaalgos/complement.hh: Fix
looser->loser and lossing->losing.
* tests/sanity/style.test: Catch 'an uni[^n]'.
* spot/ta/ta.hh, spot/taalgos/tgba2ta.cc, spot/taalgos/tgba2ta.hh,
spot/twa/twagraph.cc, spot/twaalgos/complement.hh,
spot/twaalgos/sccinfo.cc: Fix various occurences of this pattern.
2017-03-31 21:44:49 +02:00
Alexandre Duret-Lutz
6623af67e6 twa_graph: fix purge_unreachable_states on alternating automata
The algorithm had two problems: it was removing only useless
destination from universal destination (instead of removing the entire
edge), and it was not properly iterating over the entire reachable
automaton.

* spot/twa/twagraph.cc: Fix it.
* spot/twa/twagraph.hh: Adjust documentation.
* tests/core/alternating.test: Add more tests.
* tests/python/twagraph.py: Adjust.
* NEWS: Mention the bug.
2017-03-29 10:34:41 +02:00
Alexandre Duret-Lutz
73bb562bf5 complement: reset the terminal property
Reported by Thomas Medioni.

* spot/twaalgos/complement.cc: Here.
* tests/core/complement.test: Add a test case.
* NEWS: Mention it.
2017-03-28 07:28:52 +02:00
Alexandre Duret-Lutz
bf31ff12ad parsetl: improve coverage
* spot/parsetl/parsetl.yy: Adjust one diagnostic.
* spot/parsetl/scantl.ll: Fix recovering of missing closing brace
in lenient mode.
* tests/python/ltlparse.py: Add tests.
* NEWS: Mention the lenient mode bug.
2017-03-22 22:48:16 +01:00
Alexandre Duret-Lutz
d6d987bd96 emptiness checks: replace assert-preconditions by exceptions
* spot/twaalgos/couvreurnew.cc, spot/twaalgos/gv04.cc,
spot/twaalgos/magic.cc, spot/twaalgos/se05.cc, spot/twaalgos/tau03.cc,
spot/twaalgos/tau03opt.cc: Throw if precondition on acceptance
condition is not satisfied.
* tests/python/misc-ec.py: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the change.
2017-03-10 15:41:57 +01:00
Alexandre Duret-Lutz
4a160cb644 * spot/twaalgos/remfin.cc: Typos in comment. 2017-03-08 18:10:28 +01:00
Alexandre Duret-Lutz
d1d3ee38e6 python: add bindings for bdd_to_formula()
Follow-up to an email from Ayrat Khalimov.

* python/spot/impl.i: Include twa/formula2bdd.hh.
* python/spot/__init__.py: Make the dictionnary
optional.
* spot/twa/formula2bdd.cc: Throw an exception instead of asserting.
* tests/python/bdditer.py: New file.
* tests/Makefile.am: Add it.
* NEWS: Update.
2017-03-08 16:44:30 +01:00
Alexandre Duret-Lutz
cd4c326f7b twa_graph: more test coverage
The goal is to improve coverage stats, but I discovered two issues
while doing so.

* tests/python/twagraph.py: New test case.
* tests/Makefile.am: Add it.
* spot/twa/twagraph.hh: Add fix typos in error messages.
* python/spot/impl.i: Fix broken wrappers for state_from_number and
state_acc_sets.
2017-03-07 23:16:07 +01:00
Alexandre Duret-Lutz
61924aec37 postproc/translate: more doc and references
Fixes #239.

* spot/twaalgos/postproc.hh, spot/twaalgos/translate.hh: Here.
2017-03-07 15:39:17 +01:00
Alexandre Duret-Lutz
650bb7ed03 twa_graph: fix set_univ_init_state() with initializer_list
Reported by Thomas Medioni.

* spot/twa/twagraph.hh (set_univ_init_state): Remove the bogus
template parameter.
* tests/core/twagraph.cc, tests/core/tgbagraph.test: Test the method.
* NEWS: Mention the bug.
2017-03-07 15:39:17 +01:00
Alexandre Duret-Lutz
0621e0e9c5 monitor: fix -MD/-M difference in property output
Fixes #241.

* spot/twaalgos/postproc.cc: Use the deterministic monitor if it
has as many states as the non-deterministic one.
* spot/twaalgos/minimize.cc (minimize_monitor): Quickly check
for terminal automata.
* spot/twaalgos/stripacc.cc: Set the weak property.
* spot/twaalgos/stripacc.hh: Improve documentation.
* tests/core/monitor.test, tests/core/sbacc.test: Update.
* NEWS: Mention the issue.
2017-03-03 22:57:55 +01:00
Alexandre Duret-Lutz
9defdad2bc postproc: fix monitor code
Fixes #240.

* spot/twaalgos/postproc.cc: Do not call do_simul on the output of
minimize_monitor(), and do not skip complete() when PREF_==Any.
* tests/core/monitor.test: Add a test case.
* NEWS: Mention the bug.
* doc/org/ltl2tgba.org: Document complete monitors.
2017-03-03 22:57:08 +01:00
Alexandre Duret-Lutz
57ea6d9634 sbacc: fix a typo and remove some useless code
* spot/twaalgos/sbacc.cc: Do not assign to one_in twice, and
fix the value of init_acc.
* tests/core/sbacc.test: Add a test case.
* NEWS: Mention the bug.
2017-03-03 22:57:08 +01:00
Alexandre Duret-Lutz
0f7008d98c * spot/priv/satcommon.cc: Fix include. 2017-02-28 16:58:20 +01:00
Arthur Remaud
f7bbfd2812 autfilt: Better display of cluster when universal edge loops in it
Fixes #208

* NEWS: Informations about the modifications
* spot/twaalgos/dot.cc (print): Gestion of cluster for
universal transitions
* tests/core/alternating.test: tests added
* tests/core/neverclaimread.test: tests changed for
new dot format
* tests/core/readsave.test: tests changed
* tests/core/sccdot.test: tests changed
* tests/python/_altscc.ipynb: tests changed
* tests/python/decompose.ipynb: tests changed
2017-02-16 18:53:18 +01:00
Arthur Remaud
34859568cd autfilt: add option (y) to --dot to split universal transitions
Fixes #207

* NEWS: Informations about the option 'y' for --dot added
* bin/common_aoutput.cc: Documentation for the option 'y'
for --dot added
* spot/twaalgos/dot.cc (print_dst, process_link): Functions
modified for the new option
* tests/core/alternating.test: Tests added
2017-02-16 18:52:37 +01:00
Alexandre Duret-Lutz
fefb375d5f is_alternating() -> !is_existential()
Part of #212.

* spot/misc/common.hh (SPOT_DEPRECATED): Improve support current
compilers and options flags.
* spot/twa/twagraph.hh, spot/graph/graph.hh (is_alternating): Mark it
as deprecated.
(is_existential): New method.
* bin/autfilt.cc, bin/ltlcross.cc, spot/parseaut/parseaut.yy,
spot/twa/twa.cc, spot/twa/twagraph.cc, spot/twaalgos/alternation.cc,
spot/twaalgos/are_isomorphic.cc, spot/twaalgos/canonicalize.cc,
spot/twaalgos/couvreurnew.cc, spot/twaalgos/cycles.cc,
spot/twaalgos/degen.cc, spot/twaalgos/determinize.cc,
spot/twaalgos/dot.cc, spot/twaalgos/dtbasat.cc,
spot/twaalgos/dtwasat.cc, spot/twaalgos/hoa.cc,
spot/twaalgos/isunamb.cc, spot/twaalgos/isweakscc.cc,
spot/twaalgos/mask.hh, spot/twaalgos/minimize.cc,
spot/twaalgos/postproc.cc, spot/twaalgos/product.cc,
spot/twaalgos/randomize.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/sbacc.cc, spot/twaalgos/sccfilter.cc,
spot/twaalgos/sccinfo.cc, spot/twaalgos/simulation.cc,
spot/twaalgos/strength.cc, tests/core/graph.cc, tests/core/ngraph.cc,
tests/python/alternating.py: Adjust all uses.
* NEWS: Mention the renaming.
2017-02-12 15:56:02 +01:00
Alexandre Duret-Lutz
15c6fd9562 alternation: fix detection of non-weak automata
Fixes #218.

* spot/twaalgos/alternation.cc: Adjust check.
* tests/core/alternating.test: Add test case from #218.
* NEWS: Mention the bug.
2017-02-12 01:37:52 +01:00
Alexandre Duret-Lutz
60bc269fd2 * spot/tl/parse.hh (fix_utf8_locations): Fix documentation. 2017-02-08 10:51:19 +01:00
Alexandre Duret-Lutz
fb59cab09f emptiness: allow twa_run::as_twa to preserve names
* spot/twaalgos/emptiness.cc, spot/twaalgos/emptiness.hh: Here.
* tests/python/ltsmin-dve.ipynb: Add a test.
* NEWS: Mention the change.
2017-02-04 10:02:23 +01:00
Maximilien Colange
3f5470898d Rework the 'down_cast' macro, closing #196.
* spot/misc/casts.hh: New inline functions and compile-time checks.
* spot/kripke/kripkegraph.hh, spot/ta/taexplicit.cc,
  spot/ta/taproduct.cc, spot/ta/tgtaproduct.cc, spot/taalgos/tgba2ta.cc,
  spot/twa/taatgba.hh, spot/twa/taatgba.cc, spot/twa/twagraph.hh,
  spot/twa/twaproduct.cc, spot/twaalgos/emptiness.cc,
  spot/twaalgos/stutter.cc, spot/ltsmin/ltsmin.cc, tests/core/ikwiad.cc,
  tests/core/ngraph.cc: Remove downcast checks from code.
2017-02-02 17:01:40 +01:00
Alexandre Duret-Lutz
d1754123a9 disable [[fallthrough]] until C++17
Fixes #215, reported by Thibaud Michaud.

Also related to GCC bug 79301.

* spot/misc/common.hh: Here.
2017-02-01 18:02:40 +01:00
Alexandre Duret-Lutz
fac610ac48 ltsmin: fix function pointer casts for -Wpedantic
* spot/ltsmin/ltsmin.cc: Here.
2017-02-01 18:02:40 +01:00
Alexandre Duret-Lutz
43d57da7f3 ltsmin: do not use 0-length arrays for -Wpedantic
* spot/ltsmin/ltsmin.cc: Here.
2017-02-01 18:02:40 +01:00
Alexandre Duret-Lutz
825c8a8ad9 remove stray semi-colons reported by -Wpedantic
* spot/priv/weight.cc, spot/priv/weight.hh,
spot/twaalgos/determinize.cc, spot/twaalgos/stats.cc: Here.
2017-02-01 18:02:40 +01:00
Alexandre Duret-Lutz
70c70a63a3 do not use non-standard anonymous structs
For #214, as observed by Thibaud Michaud.

* spot/twa/acc.hh: Name the anonymous struct.
* spot/twa/acc.hh, spot/twa/acc.cc, spot/parseaut/parseaut.yy,
spot/twaalgos/dtwasat.cc, spot/twaalgos/remfin.cc,
spot/twaalgos/sepsets.cc, spot/twaalgos/totgba.cc: Adjust all usages.
* NEWS: Mention the renaming.
2017-02-01 18:02:40 +01:00
Alexandre Duret-Lutz
423136a6e0 ltsmin: register dead only if it is an atomic proposition
* spot/ltsmin/ltsmin.cc: Here.  This fixes 5a441e1b.
2017-01-21 18:24:43 +01:00
Alexandre Duret-Lutz
5a441e1b93 fix some incorrect AP registrations
* spot/ltsmin/ltsmin.cc: Do not forget to register dead.
* spot/twa/twaproduct.cc: Use copy_ap_of() instead of
register_all_propositions_of() because the latter does
do update ap().
2017-01-20 14:41:00 +01:00
Alexandre Duret-Lutz
0e2ab5de53 git rid of std::iterator
Fixes #194.

* spot/graph/graph.hh: Here.
2017-01-18 10:30:10 +01:00
Alexandre Duret-Lutz
d80ca1fb47 sat: reject alternating inputs
* spot/twaalgos/dtbasat.cc, spot/twaalgos/dtwasat.cc: Here.
2017-01-18 08:08:08 +01:00
Alexandre Duret-Lutz
0ad62cb97b langmap: adjust to only color non-unique languages
Fixes #203.

* spot/twaalgos/langmap.hh (highlight_languages): Simplify the
interface by only taking the automaton to color.
* spot/twaalgos/langmap.cc (highlight_languages): Only introduce
color for states that have a non-unique language.
* tests/core/highlightstate.test: Update and add more tests.
* tests/python/langmap.py: Keep the tests simple.
* bin/autfilt.cc: Adjust usage and help string.
2017-01-17 21:58:03 +01:00
Alexandre Duret-Lutz
aa457a204d tmpfile: remove deprecated throw specifiers
* spot/misc/tmpfile.cc, spot/misc/tmpfile.hh: Remove throw specifier
to suppress a deprecation warning from g++ 7.
2017-01-16 15:39:05 +01:00
Alexandre Duret-Lutz
ebdb198b64 hierarchy: expose mp_class to python
* bin/common_output.cc: Move some of the printing code...
* spot/tl/hierarchy.cc, spot/tl/hierarchy.hh: ... here, as new
  variants of mp_class...
* python/spot/impl.i: ... that we can now call from Python.
* python/ajax/spotcgi.in: Use those to simplify and extend
the code printing class membership.
2017-01-14 23:43:01 +01:00
Alexandre Duret-Lutz
a0891fde18 install pkg-config configuration files
Suggested by Jeroen Meijer.

* spot/libspot.pc.in, spot/ltsmin/libspotltsmin.pc.in: New file.
* spot/Makefile.am, spot/ltsmin/Makefile.am: Distribute them, and
install their derived version.
* spot/.gitignore: Ignore *.pc files.
* debian/libbddx-dev.install, debian/libspot-dev.install: Ship
those *.pc files.
* NEWS: Mention it.
2017-01-14 17:56:05 +01:00
Alexandre Duret-Lutz
b210db8949 sat_minimize: do not complete in the preproc step
Fixes #204.

* spot/twaalgos/dtwasat.cc (sat_minimize): Here.
* tests/core/satmin2.test: Add a test case.
* NEWS: Mention the bug.
2017-01-14 10:18:16 +01:00
Alexandre Duret-Lutz
3ff2acb397 alternation: better detection of non-weak alternating automata
* spot/twaalgos/alternation.cc: Fix the code to also check the
weakness of single-state SCCs.
* tests/core/alternating.test: Add a test from ltl3hoa.
2017-01-14 10:02:37 +01:00
Alexandre Duret-Lutz
c9918f6407 minimize_wdba: fix handling of input with useless SCCs
* spot/twaalgos/minimize.cc (minimize_wdba): Diminish the color of
terminal SCCs that are incomplete, as if they had a non-accepting
sink as successor.
* spot/twaalgos/strength.hh, spot/twaalgos/strength.cc
(is_terminal_automaton): Add an option to ignore trivial SCC as we did
before, since it matters for deciding membership to the guarantee
class.
(is_safety_mwdba): Rewrite as ...
(is_safety_automaton): ... generalizating to any acceptance, and
ignoring trivial SCCs.
* bin/ltlfilt.cc, python/ajax/spotcgi.in, spot/tl/hierarchy.cc,
tests/core/ikwiad.cc: Adjust usage of is_terminal_automaton and
is_safety_automaton().
* tests/core/hierarchy.test: Add a problematic formula as test-case.
* NEWS: Mention the bug.
2017-01-12 21:02:56 +01:00
Alexandre Duret-Lutz
7d9ce0d6fc tl: mp_class() and --format=%[vw]h
Tools for deciding the class of a formula.

* spot/tl/hierarchy.cc, spot/tl/hierarchy.hh: New files.
* spot/tl/Makefile.am: Add them.
* bin/common_output.cc, bin/common_output.hh: Implement --format=%h.
* tests/core/hierarchy.test: More tests.
* NEWS: Update.
2017-01-10 22:41:11 +01:00
Alexandre Duret-Lutz
de8a248fb2 ltlfilt: add --recurrence and --persistence
* spot/twaalgos/remfin.cc, spot/twaalgos/remfin.hh
(rabin_to_buchi_maybe): Make this function public.
* bin/ltlfilt.cc: Implement the two options.
* tests/core/hierarchy.test: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the new options.
2017-01-10 16:11:11 +01:00
Alexandre Duret-Lutz
12ecb3febf twagraph: fix purge_dead_states on alternating automata
* tests/core/alternating.test: Run some of the test through
valgrind to exhibit the bug.
* spot/twa/twagraph.cc: Fix it.
2017-01-10 10:29:32 +01:00
Alexandre GBAGUIDI AISSE
bd37625e49 misc: Add 'SPOT_XCNF' environment variable
* spot/misc/satsolver.cc: Handle xcnf writing.
* spot/misc/satsolver.hh: Handle xcnf writing.
2017-01-06 19:53:21 +01:00
Alexandre GBAGUIDI AISSE
ef2355a542 twaalgos: Set 'dicho' algo as default for SAT-based minimization
* python/spot/__init__.py: Handle options.
* spot/twaalgos/dtwasat.cc: Handle options.
* spot/twaalgos/postproc.cc: Handle options.
* spot/twaalgos/postproc.hh: Handle options.
* tests/core/satmin.test: Update tests.
Now use 'sat-minimize=4' to use the naive algo.
* tests/core/satmin2.test: Update tests.
Now use --sat-minimize='naive' to use the naive algo.
* tests/python/satmin.py: Update tests.
Now use 'naive=True' to use the naive algo.
2017-01-06 19:53:21 +01:00
Alexandre GBAGUIDI AISSE
67e3a4f28e spot: Add 'langmap' option with dichotomy (it helps to choose min val)
* python/spot/__init__.py: Handle 'dicho' option in 'sat_minimize'.
* spot/priv/satcommon.cc: Implement get_number_of_distinct_vals.
* spot/priv/satcommon.hh: Declare get_number_of_distinct_vals.
* spot/twaalgos/dtbasat.cc: Use get_number_of_distinct_vals.
* spot/twaalgos/dtbasat.hh: Change dichotomy function's prototype.
* spot/twaalgos/dtwasat.cc: Use get_number_of_distinct_vals.
* spot/twaalgos/dtwasat.hh: Change dichotomy function's prototype.
Handle options.
* spot/twaalgos/postproc.cc: Handle options.
* spot/twaalgos/postproc.hh: Add dicho_langmap_ var for options.
* tests/core/satmin2.test: Add tests for dichotomy.
* tests/core/satmin.test: Add tests for dichotomy.
* tests/python/satmin.py: Replace 'dichotomy' with 'dicho' option.
2017-01-06 19:53:21 +01:00