Commit graph

682 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
dd948bc1a7 hoa: validate trans-acc and state-acc
and also set prop_state_based_acc() on input

* src/hoaparse/hoaparse.yy: Here.
* src/tgbatest/hoaparse.test: Add tests.
2015-01-20 10:55:30 +01:00
Alexandre Duret-Lutz
c6110a884c hoa: fix parsing of label-expr with parentheses
Report from Tomáš Babiak.

* src/hoaparse/hoaparse.yy: Here.
* src/tgbatest/hoaparse.test: Add example from a development version
of ltl3ba.
2015-01-20 08:31:48 +01:00
Alexandre Duret-Lutz
64469f3dbd simulation: take a tgba_digraph as input
Issue #45.

* src/tgbaalgos/simulation.cc, src/tgbaalgos/simulation.hh: Take
a tgba_digraph is input.
* src/tgbatest/ltl2tgba.cc: Adjust.
2015-01-19 18:17:44 +01:00
Alexandre Duret-Lutz
0159027395 simulation: get rid of the "don't care" simulation reductions
Those where never really publicized because they were slow and we failed
to fix what we hopped to fix with them.  They where never used by
default.  Getting rid of them will make it easier to cleanup the
simulation code.

* src/tgbaalgos/simulation.cc, src/tgbaalgos/simulation.hh: Remove
the simulation code.
* src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh,
src/tgbatest/ltl2tgba.cc: Do not call it.
* src/bin/spot-x.cc: Update doc.
* src/tgbatest/sim.test: Delete this file.
* src/tgbatest/Makefile.am: Adjust.
* src/tgbatest/spotlbtt.test, bench/ltl2tgba/tools.sim:
Remove uses to don't care simulation.
2015-01-19 18:17:44 +01:00
Alexandre Duret-Lutz
a79db4eefe psl: add support for the [:*i..j] operator
This operator is to ':' what [*i..j] is to ';'.

Part of issue #51.

* doc/tl/tl.tex: Document syntax, semantic, and trivial
simplifications.
* doc/tl/spotltl.sty: Add macros for new operators.
* src/ltlast/bunop.cc, src/ltlast/bunop.hh: Implement it.
* src/ltlast/multop.cc: Add some trivial simplifications.
* src/ltlparse/ltlparse.yy, src/ltlparse/ltlscan.ll: Parse it.
* src/ltltest/equals.test, src/ltltest/latex.test,
src/tgbatest/ltl2tgba.test: Add more tests.
* src/ltlvisit/randomltl.cc: Output this operator in
random PSL formulas.
* src/ltltest/rand.test: Adjust.
* src/tgbaalgos/ltl2tgba_fm.cc: Add translation rules.
* src/ltlvisit/tostring.cc: Add pretty printing code.
* src/ltlvisit/simplify.cc, src/ltlvisit/snf.cc: Adjust
switches.
* NEWS: Mention the new operator.
2015-01-19 14:39:41 +01:00
Alexandre Duret-Lutz
731561cdac scc: get rid of scc_stats
* src/tgbaalgos/scc.cc, src/tgbaalgos/scc.hh: Here.
* src/tgbatest/ltl2tgba.cc: Remove option -k.
* src/tgbatest/sccsimpl.test: Move the only -k test...
* src/tgbatest/scc.test:... here.
2015-01-18 21:51:09 +01:00
Alexandre Duret-Lutz
5b74160abb test: simplify scc.test
Fixes #49.

* src/tgbatest/scc.test: Rewrite using ltl2tgba --stats.
2015-01-18 21:26:35 +01:00
Alexandre Duret-Lutz
8fd594f5d0 ltlfilt: add a --max-count/-n option
This fixes #44.

* src/bin/ltlfilt.cc: Implement -n/--max-count.
* doc/org/ltlfilt.org, src/tgbatest/randpsl.test: Use it
* NEWS: Document it.
2015-01-14 19:59:23 +01:00
Alexandre Duret-Lutz
f3f4305150 use ltl2tgba -Ds instead of ltl2tgba -sD in the test suite
Because -s can now take arguments.

* src/tgbatest/ltl2dstar2.test: Here.
2015-01-13 17:13:58 +01:00
Alexandre Duret-Lutz
6f7f9ef8bc isdet: rewrite using the tgba_digraph interface
* src/tgbaalgos/isdet.cc, src/tgbaalgos/isdet.hh: Rewrite
using the tgba_digraph interface.
* src/tgbatest/ltl2tgba.cc: Adjust call.
2015-01-11 13:58:52 +01:00
Alexandre Duret-Lutz
6a2aad6259 never: add an option to output in Spin's 6.2.4 style
Fixes #46.

* src/tgbaalgos/neverclaim.cc: Add option '6'.
* src/bin/common_aoutput.cc, src/bin/dstar2tgba.cc: Make it
possible to use the option.
* NEWS, doc/org/oaut.org: Document it.
* src/tgbatest/ltlcross2.test: Test it.
2015-01-09 22:52:46 +01:00
Alexandre Duret-Lutz
4f6f71fe39 neverclaim: rewrite the output using the tgba_digraph interface
* src/tgbaalgos/neverclaim.cc, src/tgbaalgos/neverclaim.hh: Here.
Also take a string to supply options.
* src/tgbatest/ltl2tgba.cc: Adjust call.
2015-01-09 18:27:49 +01:00
Alexandre Duret-Lutz
579e8fc0a9 add missing utf-8 header to many source files
* src/sanity/style.test: Test for the missing header.
* iface/ltsmin/check.test, src/kripketest/kripke.test,
src/kripketest/parse_print_test.cc, src/ltlparse/fmterror.cc,
src/ltltest/consterm.test, src/ltltest/kind.test,
src/ltltest/length.test, src/ltltest/ltlfilt.test,
src/ltltest/reduc.cc, src/ltltest/reduc.test,
src/ltltest/reduc0.test, src/ltltest/reducpsl.test,
src/ltltest/remove_x.test, src/ltltest/unabbrevwm.test,
src/ltltest/utf8.test, src/ltltest/uwrm.test, src/ltlvisit/dump.cc,
src/ltlvisit/remove_x.cc, src/misc/casts.hh, src/misc/fixpool.hh,
src/misc/hashfunc.hh, src/misc/ltstr.hh, src/sanity/readme.test,
src/taalgos/tgba2ta.cc, src/tgbaalgos/bfssteps.cc,
src/tgbaalgos/stats.cc, src/tgbatest/acc.test,
src/tgbatest/bitvect.test, src/tgbatest/complementation.test,
src/tgbatest/cycles.test, src/tgbatest/degendet.test,
src/tgbatest/dfs.test, src/tgbatest/dupexp.test,
src/tgbatest/emptchkr.test, src/tgbatest/intvcomp.test,
src/tgbatest/ltl2ta.test, src/tgbatest/ltl2ta2.test,
src/tgbatest/ltlprod.test, src/tgbatest/maskacc.test,
src/tgbatest/obligation.test, src/tgbatest/randpsl.test,
src/tgbatest/readsat.cc, src/tgbatest/readsat.test,
src/tgbatest/scc.test, src/tgbatest/sccsimpl.test,
src/tgbatest/taatgba.test, src/tgbatest/tgbaread.test,
src/tgbatest/tripprod.test, src/tgbatest/uniq.test,
src/tgbatest/wdba.test: Add it.
2015-01-09 08:23:49 +01:00
Alexandre Duret-Lutz
94577d6519 product: rename the one-the-fly version as otf_product
This avoid compiler errors about ambiguous calls and make sure we are
calling the intended algorithms everywhere (this wasn't the case).

* src/tgba/tgbaproduct.hh (product, product_at): Rename as...
(otf_product, otf_product_at): ... this.
* iface/ltsmin/modelcheck.cc, src/bin/autfilt.cc, src/bin/ltlfilt.cc,
src/tgbaalgos/minimize.cc, src/tgbaalgos/powerset.cc,
src/tgbatest/ltl2tgba.cc, src/tgbatest/checkpsl.cc,
src/tgbatest/complementation.cc, src/tgbatest/ltlprod.cc: Adjust
callers.
2015-01-09 08:23:49 +01:00
Alexandre Duret-Lutz
7c34c1ae79 stutterize: fix sl2() to keep the correct properties
Combined with 87c2b29, this fixes #7.

* src/tgbaalgos/stutterize.cc: Call keep_props().
* src/tgbaalgos/closure.cc: Just specify the encoding.
* src/bin/autfilt.cc: Add a --instut=2 option.
* src/tgbatest/stutter.test: More test.
2015-01-05 21:52:12 +01:00
Alexandre Duret-Lutz
0b8b65f96f hoaparse: validate use of deterministic and complete
* src/hoaparse/hoaparse.yy: validate deterministic and
complete when parsing HOA.  Also set the deterministic
property on the TGBA.
* src/tgbatest/hoaparse.test: Test errors.
2015-01-05 21:46:21 +01:00
Alexandre Duret-Lutz
578e390d8d hoaparse: validate use of explicit-labels and implicit-labels
* src/hoaparse/hoaparse.yy: Here.
* src/tgbatest/hoaparse.test: Test it.
2015-01-05 21:45:55 +01:00
Alexandre Duret-Lutz
34b798e115 hoaparse: validate use of state-labels and trans-labels
* src/hoaparse/hoaparse.yy: Fix a map with properties, and use it to
report error when state-label or trans-label are misused.
* src/tgbatest/hoaparse.test: Test that.
2015-01-05 13:33:59 +01:00
Alexandre Duret-Lutz
0895f11503 hoa: use the tgba_digraph interface to save automata
* src/tgbaalgos/hoa.cc: Here.
* src/tgbatest/det.test, src/tgbatest/hoaparse.test,
src/tgbatest/monitor.test, doc/org/oaut.org: Adjust.
2015-01-04 23:39:47 +01:00
Alexandre Duret-Lutz
892fb11f04 neverclaim: do not pass the formula
* src/tgbaalgos/neverclaim.cc, src/tgbaalgos/neverclaim.hh: Do not
pass the formula.  Use the automaton name instead.
* src/tgbatest/ltl2tgba.cc: Adjust.
2015-01-04 18:01:24 +01:00
Alexandre Duret-Lutz
490c97d797 hoa: simplify the interface of hoa_reachable()
* src/tgbaalgos/hoa.cc, src/tgbaalgos/hoa.hh: Only
keep one function public, and do not pass the formula.
* src/tgbatest/ltl2tgba.cc: Adjust.
2015-01-04 18:00:32 +01:00
Alexandre Duret-Lutz
403179087e dotty: fix combination of 's' with 'n'
* src/tgbaalgos/dotty.cc: Add empty label to each cluster
if both 's' and 'n' are used.
* src/tgbatest/neverclaimread.test: Test it.
2015-01-04 16:04:07 +01:00
Alexandre Duret-Lutz
c6a5de3e23 dstar2tgba: add support for --name and --stats=%m
* src/bin/dstar2tgba.cc: Here.
* src/tgbatest/dstar.test: Test them.
2015-01-04 12:55:26 +01:00
Alexandre Duret-Lutz
2e356aed1d dotty: fix output of name and detection of state-based acceptance
* src/tgbaalgos/dotty.cc: Do not output name by default.  Display
accepting states by default no acceptance set are used.
Avoid copying the automaton when possible.
* src/tgbatest/dstar.test: Exercise --dot=t.
2015-01-04 12:38:07 +01:00
Alexandre Duret-Lutz
4d4c5d807b ltl2tgba, randaut: better error reporting
* src/bin/ltl2tgba.cc, src/bin/randaut.cc: Catch exceptions
in main loop.
* src/tgbatest/ltl2tgba.test, src/tgbatest/randaut.test: Test
errors with unknown --dot argument.
2015-01-04 11:24:31 +01:00
Alexandre Duret-Lutz
3b7b52027c More files to ignore. 2015-01-03 19:01:44 +01:00
Alexandre Duret-Lutz
b048f65dd8 bin: --dot=s display SCCs
* src/tgbaalgos/dotty.cc: Add option 's' to display SCCs.
* src/bin/dstar2tgba.cc, src/bin/common_aoutput.cc: Document it.
* src/tgbatest/neverclaimread.test: Test it.
2015-01-03 17:08:14 +01:00
Alexandre Duret-Lutz
72737dfefc bin: factor output options of autfilt and randaut
* src/bin/autfilt.cc: Move output options handling...
* src/bin/common_aoutput.cc, src/bin/common_aoutput.hh:... here.
* src/bin/randaut.cc: Use them.
* src/tgbatest/randaut.test: Test --name and --stats for randaut.
2015-01-03 17:08:14 +01:00
Alexandre Duret-Lutz
21dcc73deb randaut: fix --uniq
* src/bin/autfilt.cc: Also accept '-u' for '--uniq'.
* src/bin/randaut.cc: Likewise, plus fix the unicity check.
* src/tgbatest/uniq.test: Really test it.
2015-01-03 17:08:14 +01:00
Alexandre Duret-Lutz
87c2b291ed tgba_digraph: force selection of properties kept on copy
* src/tgba/tgba.hh: Declare a prop_set to specify the types.
* src/tgba/tgbagraph.hh: Use prop_set for all copy constructors.
* iface/ltsmin/ltsmin.cc, src/bin/autfilt.cc, src/bin/randaut.cc,
src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/closure.cc,
src/tgbaalgos/complete.cc, src/tgbaalgos/degen.cc,
src/tgbaalgos/dotty.cc, src/tgbaalgos/dtgbacomp.cc,
src/tgbaalgos/dupexp.cc, src/tgbaalgos/dupexp.hh,
src/tgbaalgos/sccfilter.cc, src/tgbaalgos/simulation.cc,
src/tgbaalgos/stutterize.cc, src/tgbatest/checkpsl.cc,
src/tgbatest/emptchk.cc, src/tgbatest/ltl2tgba.cc,
wrap/python/spot.i,src/graphtest/tgbagraph.test: Adjust all uses.
2015-01-03 17:08:01 +01:00
Alexandre Duret-Lutz
77cb836e47 dotty: Specialize for tgba_digraph_ptr
* src/tgbaalgos/dotty.cc: Specialize for tgba_digraph_ptr.
* src/tgba/tgbagraph.hh, src/tgbaalgos/dupexp.cc: Copy properties by
default when cloning an automaton.
* src/tgbatest/det.test, src/tgbatest/dstar.test,
src/tgbatest/ltl2tgba.test, src/tgbatest/monitor.test,
src/tgbatest/neverclaimread.test, src/tgbatest/tgbaread.test: Adjust
tests.
2015-01-03 16:49:14 +01:00
Alexandre Duret-Lutz
0f178288c6 dotty: switch to horizontal output and add options
* src/tgbaalgos/dotty.cc, src/tgbaalgos/dotty.hh: Add an options
parameter.
* src/bin/randaut.cc, src/bin/autfilt.cc, src/bin/dstar2tgba.cc,
src/bin/ltl2tgba.cc, wrap/python/ajax/spot.in: Use it.
* src/tgbatest/det.test, src/tgbatest/dstar.test,
src/tgbatest/ltl2tgba.cc, src/tgbatest/monitor.test,
src/tgbatest/neverclaimread.test, src/tgbatest/tgbaread.test,
src/graphtest/tgbagraph.test: Adjust
because automata are now output horizontally.
* NEWS: Mention the change.
2015-01-03 16:49:13 +01:00
Alexandre Duret-Lutz
84620175e6 * src/tgbatest/Makefile.am: Run and distribute uniq.test. 2014-12-17 16:53:08 +01:00
Thibaud Michaud
a989d41b3f option --uniq in autfilt and randaut
* src/bin/autfilt.cc: add option --uniq.
* src/bin/randaut.cc: add option --uniq.
* src/tgbatest/uniq.test: Test it.
2014-12-17 16:05:14 +01:00
Thibaud Michaud
176878554e Wrap are_isomorphic inside a class and optimize when deterministic
* src/bin/autfilt.cc: Use isomorphism_checker.
* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/are_isomorphic.hh: Wrap
are_isomorphic inside a class to keep the canonic version of the first
automaton between two calls, and use a more efficient algorithm in case
both automata are deterministic.
* src/tgbatest/isomorph.test: Add tests for deterministic automata.
2014-12-17 14:15:02 +01:00
Thibaud Michaud
1995602df5 Adding function to canonicalize an automaton.
* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/are_isomorphic.hh,
src/bin/autfilt.cc: are_isomorphic now uses canonicalize. It returns a
bool, because the mapping cannot be deduced easily from the
canonicalized automaton.
* src/graph/graph.hh: Add equality operator to trans_storage_t
for easy comparison of transition vectors.
* src/tgba/tgbagraph.hh: Add equality operator to tgba_graph_trans_data
and to tgba_digraph.
* src/tgbaalgos/canonicalize.cc, src/tgbaalgos/canonicalize.hh:
New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/isomorph.test: Test them.
2014-12-17 14:12:59 +01:00
Alexandre Duret-Lutz
b83d6d7f29 autfilt: %w shows an accepting word
* src/bin/autfilt.cc: Support %w.
* src/tgbatest/readsave.test: Test it.
2014-12-17 10:26:46 +01:00
Alexandre Duret-Lutz
a626a32dbc autfilt: --instut, --destut, --is-empty
* src/bin/autfilt.cc: Add these new options.
* src/tgbaalgos/stutterize.cc, src/tgbaalgos/stutterize.hh: Make it
possible to call sl() and sl2() without passing the set of atomic
propositions.
* src/tgbatest/stutter.test: New file.
* src/tgbatest/Makefile.am: Add it.
2014-12-17 10:26:46 +01:00
Alexandre Duret-Lutz
8e9c431706 merge transitions: also merge transitions with same conditions
* src/tgba/tgbagraph.cc (merge_transition): Do it.
* src/tgbatest/readsave.test: Test it.
* src/bin/autfilt.cc: Fix statistics about the original
automaton when using --stats or --name.
2014-12-17 10:26:46 +01:00
Alexandre Duret-Lutz
b8a38915e5 autfilt: --edges --acc-sets
* src/bin/autfilt.cc: Add these new options.
* src/tgbatest/readsave.test: Test them.
2014-12-16 15:57:44 +01:00
Alexandre Duret-Lutz
56caacbf78 autfilt: support -n,--max-count
* src/bin/autfilt.cc: Implement this new option.
* src/tgbatest/readsave.test: Test it.
2014-12-16 11:45:26 +01:00
Alexandre Duret-Lutz
40c457b626 autfilt: add support for --name, %M, and %m
* src/bin/autfilt.cc: Here.
* src/tgbaalgos/stats.cc: Do not segfault if format is nullptr.
* src/tgbatest/readsave.test: Exercise --name, %M, and %m.
2014-12-16 11:25:43 +01:00
Alexandre Duret-Lutz
0d710f969b autfilt: --count
* src/bin/autfilt.cc: Add a --count option.
* src/tgbatest/randaut.test: Test autfilt's --count and --states.
2014-12-15 12:06:34 +01:00
Alexandre Duret-Lutz
1a022c8093 hoaparse: improve reporting of errors in LBTT guards
* src/hoaparse/hoaparse.yy: forward the error messages
from lbt_parse().
* src/hoaparse/hoascan.ll: Minor cleanups.
* src/tgbatest/lbttparse.test: Test it.
2014-12-11 22:36:47 +01:00
Alexandre Duret-Lutz
9cee6e6fa1 autfilt: add options --is-deterministic --is-complete and -v
* src/bin/autfilt.cc: Here.
* src/tgbatest/hoaparse.test: More tests.
2014-12-11 19:26:19 +01:00
Alexandre Duret-Lutz
9c672ac49b autfilt: support --stats=%L to display the automaton location
* src/bin/autfilt.cc: Add support for %L.
* src/tgbatest/hoaparse.test: Test it.
2014-12-11 15:45:14 +01:00
Alexandre Duret-Lutz
1e84bb1ee7 autfilt: add a --quiet option
* src/bin/autfilt.cc: Add option.
* src/tgbatest/det.test: Test it.
2014-12-11 15:15:23 +01:00
Alexandre Duret-Lutz
6eb2b06fa7 hoaparse: also accept LBTT input
This is probably the worse grammar I wrote: the LBTT format is designed
to be scanned with scanf, and very inconvenient to parse with
bison/flex.  Here the scanner basically has to emulate a parser to
classify the different INTs as tokens with different types.

* src/hoaparse/hoaparse.yy, src/hoaparse/hoascan.ll: Add rules for LBTT.
* src/hoaparse/parsedecl.hh: Add a way to reset the parser between each
automata.
* src/tgbatest/hoaparse.test, src/tgbatest/lbttparse.test: Add more
tests.
2014-12-10 20:56:07 +01:00
Alexandre Duret-Lutz
e4158c21ee tgbaparse, lbttparse: do not pass an environment for acceptance sets
* src/priv/accmap.hh, src/tgbaalgos/lbtt.cc, src/tgbaalgos/lbtt.hh,
src/tgbaparse/public.hh, src/tgbaparse/tgbaparse.yy,
src/tgbatest/ltl2tgba.cc, src/tgbatest/tgbaread.cc: Do not pass any
environment parameter to parse acceptance sets.  This is not used
anymore since we moved to int-labeled acceptance sets.
2014-12-10 20:49:17 +01:00
Alexandre Duret-Lutz
ff4dca48a5 autfilt: some cleanup around --are-isomorphic
* src/bin/autfilt.cc: Do not use -I for --are-isomorphic.
Fix --help.
* src/tgbatest/isomorph.test: Adjust to use --are-isomorphic, and speed
it up 5-fold.
2014-12-10 17:02:50 +01:00