Commit graph

283 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
d62d848208 ltsmin: catch exceptions by reference
* spot/ltsmin/ltsmin.cc, tests/ltsmin/modelcheck.cc: Here.
2017-06-20 17:30:49 +02:00
Alexandre Duret-Lutz
20a4959ff6 stats: fix slow %s and inappropriate %S output
Fixes #269.

* spot/twaalgos/stats.cc: Use twa_statistics instead of
twa_sub_statistics when %t is not used.
* bin/common_aoutput.cc: Likewise, also fix %S to use twa_statistics
instead of num_states(), and document that %s,%t,%e all return
statistics about the reachable part of the automaton.
* tests/core/format.test: Add more tests.
* NEWS: Document the issue.
2017-06-19 17:52:41 +02:00
Alexandre Duret-Lutz
97e903b13d libtool: surrender to Debian's castrated libtool
The libtool version distributed by Debian is patched to *not* propagate
dependencies (i.e., if libA depends on libB, then linking against libA
will not automatically link against libB, it has to be explicit),
contrary to what the Libtool manual document.  So now we explicitly
link against both libA and libB in such case.

* configure.ac: Remove the workaround that does not work for
MinGW.
* doc/org/compile.org: Mention the issue.
* bin/Makefile.am, tests/Makefile.am, spot/ltsmin/Makefile.am,
doc/org/g++wrap.in: Make the dependencies explicit.
2017-06-11 23:15:20 +02:00
Etienne Renault
440380c5ca ikwiad: fix accepting run printing
* tests/core/ikwiad.cc: here.
2017-06-11 23:12:03 +02:00
Alexandre Duret-Lutz
526e19d4b6 * tests/core/ltlcross4.test: Ignore space diff in pandas' output. 2017-06-03 11:03:58 +02:00
Alexandre Duret-Lutz
526b299de8 work around change in pandas 0.20
* tests/core/ltlcross4.test: Replace describe() by agg() to work
around a backward incompatible change in pandas 0.20.
2017-06-03 10:04:14 +02:00
Alexandre Duret-Lutz
ae0e84ac9e simulation: do not depend on bdd numbers for ordering classes
Fixes #262 again.  Reported by Maximilien Colange.

* spot/twaalgos/simulation.cc: Use state numbers to order classes, not
their signatures.  The problem was that even if two simulation of the
same automaton assign the same signature, the BDD identifier used for
that signature might be different, and therefore the ordering obtained
by using BDDs as keys in a map can be different.  A side-effect of
this change is that the order of states in automata produced by
simulation-based reduction may change; many tests had to be updated.
* tests/core/ltl2tgba.test: Add a new test case based on Maximilien's
report.
* tests/core/complement.test, tests/core/det.test,
tests/core/parseaut.test, tests/core/prodor.test,
tests/python/atva16-fig2a.ipynb, tests/python/automata.ipynb,
tests/python/decompose.ipynb, tests/python/highlighting.ipynb,
tests/python/piperead.ipynb, tests/python/testingaut.ipynb,
tests/python/word.ipynb: Update test cases for new order of states.
2017-06-03 10:03:59 +02:00
Alexandre Duret-Lutz
7b6cfd448c dot: fix printing of alternating automata
Related to #208.

* spot/twaalgos/dot.cc: Fix missing definitions of universal nodes,
and inclusion of universal nodes inside of SCC when none of the
destination comes back to the SCC.
* tests/python/_altscc.ipynb: Adjust and add more test cases.
* tests/core/alternating.test, tests/core/neverclaimread.test,
tests/core/readsave.test, tests/core/sccdot.test,
tests/python/decompose.ipynb: Adjust test cases.
* NEWS: Mention the bug.
2017-06-02 11:38:43 +02:00
Alexandre Duret-Lutz
f6607f1a2c bin: release all subformulas between runs
Fixes #262, reported by Maximilien Colange.

* bin/common_output.cc, bin/common_aoutput.cc, bin/common_aoutput.hh:
Clear the set of atomic propositions if --stats=%[...]x was used.
* spot/twa/bdddict.cc: Release any formula associated to a BDD when it
is unregistered, do not wait for the dictionary's destruction.  This
was the main culprit for #262.
* tests/core/ltl2tgba.test: Add test cases.
* NEWS: Mention the bug.
2017-05-18 18:25:55 +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
04640af135 bin: remove temporary files even on errors
Fixes #259.

* bin/common_setup.cc: Register a cleanup_tmpfiles() via atexit.
* tests/core/ltldo.test: Add a test case.
* NEWS: Mention the bug.
2017-05-04 15:37:39 +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
08c153d3bb genltl: add support for --p-patterns
Fixes #246.

* bin/genltl.cc: Implement it.
* bin/man/genltl.x, doc/org/genltl.org, NEWS: Document it.
* tests/core/ltl2tgba2.test: Test it.
2017-04-07 11:30:31 +02:00
Alexandre Duret-Lutz
4b7a6238b4 genltl: add --hkrss-patterns
Fixes #245.

* bin/genltl.cc: Add the option.
* bin/man/genltl.x: Add reference.
* tests/core/ltl2tgba2.test: Use these patterns.
* doc/org/genltl.org, NEWS: Document the options.
2017-04-07 11:29:49 +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
f5d53e3a5e python: update some incorrect or obsolete code
* tests/python/ipnbdoctest.py: Use importlib instead of imp.
* tests/python/ltlparse.py: Fix invalid escape sequence.
2017-03-31 21:22:04 +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
cdf699ff23 genltl: fix %F for --r-left and --r-right
Fixes #247.

* bin/genltl.cc: Here.
* tests/core/genltl.test: Make sure %F always return a correct pattern
name..
* NEWS: Mention the bug.
2017-03-22 22:48:16 +01: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
cd89983ca5 typos: dictionnary -> dictionary
* doc/org/upgrade2.org, tests/python/prodexpt.py,
tests/python/product.ipynb, NEWS: Fix typos.
* tests/sanity/style.test: Add a check for this.
2017-03-08 16:44:30 +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
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
dfe02f722e add options to %x to list atomic propositions
* bin/common_aoutput.cc, bin/common_aoutput.hh, bin/common_output.cc,
bin/common_output.hh: Add options to %x to list atomic propositions
with various quoting scheme.  Deprecate --format=%a in favor of the
new --format=%x for consistency with --stats=%x.
* tests/core/format.test, tests/core/remprop.test: Adjust and add more
tests.
* NEWS: Mention these changes.
2017-03-02 14:19:16 +01:00
Alexandre Duret-Lutz
e0d3291881 correct handling of --stats=%P
Fixes #236.

* bin/common_aoutput.cc: Fix it.
* tests/core/format.test: Improve test cases.
* NEWS: Mention the bug.
2017-02-28 16:58:31 +01:00
Alexandre Duret-Lutz
6c218e4828 bin: --stats=%x to count atomic propositions
* bin/common_aoutput.cc, bin/common_aoutput.hh: Implement %x and %X.
* tests/core/remprop.test: Test them.
* NEWS: Mention them.
2017-02-28 16:58:23 +01:00
Alexandre Duret-Lutz
1c96afb1d0 genltl: --kv-phi is in fact --kv-psi
* bin/genltl.cc: Change the name and add the bibtex entry.
* bin/man/genltl.x: Replace LNCS by LNAI.
* tests/core/genltl.test: Also test the %F output.
2017-02-18 10:49:36 +01:00
Vincent Tourneur
fc2831bf24 genltl: Add 3 families of LTL formulas from a paper
Fixes #80.

* bin/genltl.cc: Add --kr-n2, --kr-nlogn and --kr-n.
* bin/man/genltl.x: Add the paper in the documentation.
* tests/core/genltl.test: Test them.
2017-02-16 18:59:34 +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
Etienne Renault
5516209d8c ltsmin: more information for MacOS users
* tests/ltsmin/README: this fixes #230.
2017-02-16 14:10:33 +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
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
Maximilien Colange
07a76e4d93 Do not warn about static_asserts.
* tests/sanity/style.test: Filter out static_assert.
2017-02-02 17:01:12 +01:00
Etienne Renault
63116ff79c Fixes #205.
* tests/core/hierarchy.test: here.
2017-02-01 19:41:54 +01:00
Alexandre Duret-Lutz
a4b575db1c ltldo: add portfolio options
Fixes #206.

* bin/ltldo.cc: Implement --smallest and --greatest.
* tests/core/ltldo2.test: Test them.
* NEWS, doc/org/ltldo.org: Document them.
2017-01-27 20:35:40 +01:00
Maximilien Colange
6acb168a5d Do not specify tests extensions as we use a unique runner.
* tests/Makefile.am: Remove TEST_EXTENSIONS + typos.
2017-01-23 09:40:15 +01:00
Alexandre Duret-Lutz
ff4c4a7231 python: render the M&P hierarchy in SVG
* python/spot/__init__.py (show_mp_hierarchy, mp_hierarchy_svg): New
functions.
* tests/python/formulas.ipynb: Illustrate show_mp_hierarchy.
* python/ajax/spotcgi.in: Use mp_hierarchy_svg.
* python/ajax/css/trans.css: Adjust for possible overflows.
* NEWS: Mention this new feature.
2017-01-18 20:58:20 +01:00
Alexandre Duret-Lutz
5939ca4e85 langmap: Add example in notebook
* tests/python/highlighting.ipynb: Add an example of
highlight_languages().
2017-01-17 22:53:20 +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
c7141bd189 ltlcross: disable products columns in CSV if --products=0
* bin/ltlcross.cc: Fix it.
* tests/core/ltlcross3.test: Test it.
* NEWS: Mention the bug.
2017-01-14 10:43:35 +01:00