Commit graph

817 commits

Author SHA1 Message Date
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
604971d651 postproc: use scc_filter_states on SBA
* src/tgbaalgos/postproc.cc: Here.  Otherwise, reading
a neverclaim with autfilt would loose the SBA property
and degeneralize again.
2015-01-09 22:23:55 +01:00
Alexandre Duret-Lutz
b2c2411bcc degen: remove two useless casts
* src/tgbaalgos/degen.cc: Here.
2015-01-09 22:22:28 +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
eadcf95363 powerset: rewrite using the tgba_digraph interface
Fixes #48.

* src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh: Here.
* src/tgbaalgos/minimize.cc: Adjust usage.
2015-01-09 17:13:31 +01:00
Alexandre Duret-Lutz
a539dc9002 style: make sure we do not have SPOT_API in *.cc files
* src/sanity/style.test: Check for it.
* src/dstarparse/nra2nba.cc, src/dstarparse/nsa2tgba.cc,
src/tgbaalgos/randomize.cc, src/tgbaalgos/stutter.cc: Fix all those.
2015-01-09 16:15:58 +01:00
Alexandre Duret-Lutz
e01ab2b236 sccinfo: make it easier to iterate over all SCCs
* src/tgbaalgos/sccinfo.cc, src/tgbaalgos/sccinfo.hh: add
scc_info::begin() and scc_info::end() methods to iterate over the
node_ vector.   Tidy the scc_node structure that that its member
are accessed via methods.
* src/tgbaalgos/safety.cc, src/bin/ltlcross.cc: Simplify using
this interface.
2015-01-09 13:46:13 +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
3a70b57067 projrun: modernize
* src/tgbaalgos/emptiness.hh (step): Add constructors...
* src/tgbaalgos/projrun.cc: ... to simplify this.
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
bb9b204dee stutter: gather all code in one place
* src/tgba/tgbasl.cc, src/tgba/tgbasl.hh, src/tgbaalgos/closure.cc,
src/tgbaalgos/closure.hh, src/tgbaalgos/stutter_invariance.cc,
src/tgbaalgos/stutter_invariance.hh, src/tgbaalgos/stutterize.cc,
src/tgbaalgos/stutterize.hh: Delete these files, and merge their
contents into...
* src/tgbaalgos/stutter.cc, src/tgbaalgos/stutter.hh: ... these two.
* src/tgba/Makefile.am, src/tgbaalgos/Makefile.am: Adjust.
* wrap/python/spot.i: Adjust.
2015-01-08 23:39:45 +01:00
Alexandre Duret-Lutz
ab985afa9e * src/tgbaalgos/weight.hh: Remove useless status. 2015-01-08 21:46:44 +01:00
Alexandre Duret-Lutz
5345cae839 * src/tgbaalgos/emptiness_stats.hh: Modernize. 2015-01-08 21:45:22 +01:00
Alexandre Duret-Lutz
4673427252 remove obsolete comments
* src/tgbaalgos/lbtt.hh, src/tgbaalgos/neverclaim.hh: Remove obsolete
comments.  Reported by Claire Parquier.
2015-01-08 17:01:40 +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
314993b201 hoa: add two asserts
* src/tgbaalgos/hoa.cc: Here.
2015-01-05 21:46:21 +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
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
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
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
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
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
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
541ce543c7 are-isomorphic: speed it up
* src/tgbaalgos/are_isomorphic.cc: inline is_isomorphism() into
are_isomorphic() so that the reference vector is only sorted once,
and both vectors are only allocated once.
2014-12-11 08:32:22 +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
be57ec290a are-isomorphic: small simplifications
* src/tgbaalgos/are_isomorphic.cc (is_isomorphism): Do not copy
trans_storage_t elements as they contain more than what we use.
Remap the states of a1 before the sort, not during the sort.
(are_trivially_different): Also catch the case where the
number of acceptance sets are different.
* src/tgbaalgos/are_isomorphic.hh: Improve doxygen.
2014-12-10 17:59:41 +01:00
Thibaud Michaud
d033633be0 are_isomorphic: do not try to map initial state to a non-initial state
* src/tgbaalgos/are_isomorphic.cc: Here.
2014-12-10 16:36:34 +01:00
Thibaud Michaud
b54fe4c035 autfilt: return with exit code 1 if there is no match
* src/bin/autfilt.cc: Return with exit code 1 if no match found.
* src/tgbaalgos/are_isomorphic.cc,src/tgbatest/degenlskip.test
src/tgbatest/explpro2.test,src/tgbatest/explpro3.test
src/tgbatest/explpro4.test,src/tgbatest/explprod.test
src/tgbatest/neverclaimread.test, src/tgbatest/readsave.test
src/tgbatest/tripprod.test: Use exit status to check for output
emptiness instead of 'test -n'.
* src/tgbatest/isomorph.test: Simplify test.
2014-12-10 16:36:34 +01:00
Thibaud Michaud
1b9354c9b5 are_isomorphic: return the mapping found, not just true or false
* src/bin/autfilt.cc: Here.
* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/are_isomorphic.hh:
Here.
2014-12-10 16:36:34 +01:00
Thibaud Michaud
97fdea9d71 Adding function to test if two büchi automata are isomorphic.
And add the corresponding --isomorphic=FILENAME option to autfilt.

* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/are_isomorphic.hh:
New.
* src/tgbaalgos/Makefile.am: Add it.
* src/bin/autfilt.cc: Add --isomorphic option.
* src/tgbatest/isomorph.test: Test it.
* src/tgbatest/Makefile.am: Add it.
2014-12-10 16:36:34 +01:00
Alexandre Duret-Lutz
61edf7f41d tgba: simplify usage of named properties
* src/tgba/tgba.hh, src/tgba/tgba.cc (set_named_prop): Add a template
version.
(get_named_prop): Hide the old version, and supply a template version
that casts.
* src/bin/ltlcross.cc, src/hoaparse/hoaparse.yy, src/tgbaalgos/hoa.cc,
src/tgbaalgos/product.cc: Adjust usage.
2014-12-09 16:21:45 +01:00
Alexandre Duret-Lutz
5a1e38d90f hoa: store the automaton name as a property
* src/hoaparse/hoaparse.yy: Store the automaton name.
* src/tgbaalgos/hoa.cc: Output it if it exists.
* src/tgbatest/hoaparse.test: Adjust tests.
2014-12-09 16:00:10 +01:00
Alexandre Duret-Lutz
f37ff8407c hoa: mordenize printer slightly
* src/tgbaalgos/hoa.cc: Here.
2014-12-08 23:34:56 +01:00
Alexandre Duret-Lutz
fbbf584bbb graph: let transitions() iterate only on valid transitions
This fixes #6.

* src/graph/graph.hh: Rename the old transitions() as
transition_vector(), and implement a new transitions() that iterates
only on non-dead transitions.
* src/tgba/tgbagraph.hh, src/tgba/tgbagraph.cc, src/graph/ngraph.hh:
Adjust wrappers.
* src/hoaparse/hoaparse.yy, src/tgbaalgos/complete.cc,
src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc,
src/tgbaalgos/randomize.cc, src/tgbaalgos/safety.cc: Adjust calls.
2014-12-08 18:29:45 +01:00
Alexandre Duret-Lutz
6dd2749c25 delete two unused files
* src/tgbaalgos/gtec/explscc.cc, src/tgbaalgos/gtec/explscc.hh: Delete.
* src/tgbaalgos/gtec/Makefile.am: Adjust.
2014-12-06 23:41:50 +01:00
Alexandre Duret-Lutz
a0d9268fda ltl: remove the useless Finish operator
* src/ltlast/unop.cc, src/ltlast/unop.hh src/ltlvisit/lbt.cc,
src/ltlvisit/mark.cc, src/ltlvisit/simplify.cc,
src/ltlvisit/tostring.cc, src/ltlvisit/tunabbrev.cc,
src/tgba/formula2bdd.cc, src/tgbaalgos/ltl2tgba_fm.cc: Remove Finish.
* src/tgbaalgos/ltl2taa.cc: Remove Finish, and simply use an empty
destination to code the sink.
2014-12-04 17:48:42 +01:00
Alexandre Duret-Lutz
c0e9891246 randomize: new function
* src/tgbaalgos/randomize.cc, src/tgbaalgos/randomize.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/graph/graph.hh (rename_states_): New method.
* src/bin/autfilt.cc: Add options --randomize and --seed.
* src/tgbatest/randomize.test: Test them.
* src/tgbatest/Makefile.am: Add randomize.test.
* NEWS: Mention randomize().
2014-12-03 14:23:59 +01:00
Alexandre Duret-Lutz
80ce0e2129 satminimization: do not assume the initial state is 0
* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Here.
2014-12-02 22:58:18 +01:00
Alexandre Duret-Lutz
5d8f16da99 countstates: remove unused file
* src/priv/countstates.cc, src/priv/countstates.hh: Delete.
* src/priv/Makefile.am, src/tgbaalgos/postproc.cc: Adjust.
2014-12-01 17:51:57 +01:00
Alexandre Duret-Lutz
202b960994 accconv, acccompl: remove unused files
* src/priv/acccompl.cc, src/priv/acccompl.hh,
src/priv/accconv.cc, src/priv/accconv.hh: Delete.
* src/priv/Makefile.am: Adjust.
* src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/scc.cc,
src/tgbaalgos/sccinfo.cc, src/tgbaalgos/simulation.cc: Remove unused
includes.
2014-12-01 17:38:22 +01:00
Alexandre Duret-Lutz
c5842c3a0a randaut: new binary
* src/bin/randaut.cc, src/bin/man/randaut.x: New files.
* src/bin/Makefile.am, src/bin/man/Makefile.am: Adjust.
* src/tgbaalgos/randomgraph.hh, src/tgbaalgos/randomgraph.cc:
Add an option to output state-based acceptance, and update
the TGBA properties.
* src/tgbatest/randaut.test: New test.
* src/tgbatest/Makefile.am: Add it.
2014-11-29 16:04:26 +01:00
Thibaud Michaud
6400ec852b Add documentation for is_stutter_invariant.
* src/tgbaalgos/stutter_invariance.hh: Add documentation.
2014-11-29 10:53:49 +01:00
Alexandre Duret-Lutz
0beb148b6a * src/tgbaalgos/closure.cc: Fix invalid read. 2014-11-26 10:38:32 +01:00