Commit graph

2422 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
fb7b7a944a autfilt: add a --exclusive-ap option
* src/ltlvisit/exclusive.cc, src/ltlvisit/exclusive.hh: Implement
constrain() for automata.
* src/bin/autfilt.cc: Add --exclusive-ap option.
* src/tgba/bdddict.cc, src/tgba/bdddict.hh: Add a
has_registered_proposition() method.
* src/tgbatest/exclusive.test: New file.
* src/tgbatest/Makefile.am: Add it.
2015-03-23 18:14:46 +01:00
Alexandre Duret-Lutz
544c533ed3 ltlfilt: add a --exclusive-ap option
* src/ltlvisit/exclusive.cc, src/ltlvisit/exclusive.hh: New files.
* src/ltlvisit/Makefile.am: Add them.
* src/bin/ltlfilt.cc: Implement the --exclusive-ap option.
* NEWS: Mention it.
* src/ltltest/exclusive.test: New file.
* src/ltltest/Makefile.am: Add it.
2015-03-23 17:31:13 +01:00
Etienne Renault
57cd9f2d2c Replace guards by pragma once.
* iface/ltsmin/ltsmin.hh, src/bin/common_aoutput.hh,
src/bin/common_conv.hh, src/bin/common_cout.hh,
src/bin/common_file.hh, src/bin/common_finput.hh,
src/bin/common_output.hh, src/bin/common_post.hh,
src/bin/common_r.hh, src/bin/common_range.hh,
src/bin/common_setup.hh, src/bin/common_sys.hh,
src/bin/common_trans.hh, src/dstarparse/parsedecl.hh,
src/dstarparse/public.hh, src/graph/graph.hh,
src/graph/ngraph.hh, src/hoaparse/parsedecl.hh,
src/hoaparse/public.hh, src/kripke/fairkripke.hh,
src/kripke/fwd.hh, src/kripke/kripke.hh,
src/kripke/kripkeexplicit.hh, src/kripke/kripkeprint.hh,
src/kripkeparse/parsedecl.hh, src/kripkeparse/public.hh,
src/ltlast/allnodes.hh, src/ltlast/atomic_prop.hh,
src/ltlast/binop.hh, src/ltlast/bunop.hh,
src/ltlast/constant.hh, src/ltlast/formula.hh,
src/ltlast/multop.hh, src/ltlast/predecl.hh,
src/ltlast/unop.hh, src/ltlast/visitor.hh,
src/ltlenv/declenv.hh, src/ltlenv/defaultenv.hh,
src/ltlenv/environment.hh, src/ltlparse/parsedecl.hh,
src/ltlparse/public.hh, src/ltlvisit/apcollect.hh,
src/ltlvisit/clone.hh, src/ltlvisit/contain.hh,
src/ltlvisit/dotty.hh, src/ltlvisit/dump.hh,
src/ltlvisit/lbt.hh, src/ltlvisit/length.hh,
src/ltlvisit/lunabbrev.hh, src/ltlvisit/mark.hh,
src/ltlvisit/mutation.hh, src/ltlvisit/nenoform.hh,
src/ltlvisit/postfix.hh, src/ltlvisit/randomltl.hh,
src/ltlvisit/relabel.hh, src/ltlvisit/remove_x.hh,
src/ltlvisit/simpfg.hh, src/ltlvisit/simplify.hh,
src/ltlvisit/snf.hh, src/ltlvisit/tostring.hh,
src/ltlvisit/tunabbrev.hh, src/ltlvisit/wmunabbrev.hh,
src/misc/bareword.hh, src/misc/bddlt.hh, src/misc/bitvect.hh,
src/misc/casts.hh, src/misc/common.hh, src/misc/escape.hh,
src/misc/fixpool.hh, src/misc/formater.hh, src/misc/hash.hh,
src/misc/hashfunc.hh, src/misc/intvcmp2.hh,
src/misc/intvcomp.hh, src/misc/location.hh, src/misc/ltstr.hh,
src/misc/memusage.hh, src/misc/minato.hh, src/misc/mspool.hh,
src/misc/optionmap.hh, src/misc/position.hh, src/misc/random.hh,
src/misc/satsolver.hh, src/misc/timer.hh, src/misc/tmpfile.hh,
src/misc/version.hh, src/priv/accmap.hh, src/priv/bddalloc.hh,
src/priv/freelist.hh, src/ta/ta.hh, src/ta/taexplicit.hh,
src/ta/taproduct.hh, src/ta/tgta.hh, src/ta/tgtaexplicit.hh,
src/ta/tgtaproduct.hh, src/taalgos/dotty.hh,
src/taalgos/emptinessta.hh, src/taalgos/minimize.hh,
src/taalgos/reachiter.hh, src/taalgos/statessetbuilder.hh,
src/taalgos/stats.hh, src/taalgos/tgba2ta.hh,
src/tgba/acc.hh, src/tgba/bdddict.hh,
src/tgba/bddprint.hh, src/tgba/formula2bdd.hh, src/tgba/fwd.hh,
src/tgba/taatgba.hh, src/tgba/tgba.hh, src/tgba/tgbagraph.hh,
src/tgba/tgbamask.hh, src/tgba/tgbaproduct.hh, src/tgba/tgbaproxy.hh,
src/tgba/tgbasafracomplement.hh, src/tgbaalgos/are_isomorphic.hh,
src/tgbaalgos/bfssteps.hh, src/tgbaalgos/canonicalize.hh,
src/tgbaalgos/cleanacc.hh, src/tgbaalgos/complete.hh,
src/tgbaalgos/compsusp.hh, src/tgbaalgos/cycles.hh,
src/tgbaalgos/degen.hh, src/tgbaalgos/dotty.hh,
src/tgbaalgos/dtbasat.hh, src/tgbaalgos/dtgbacomp.hh,
src/tgbaalgos/dtgbasat.hh, src/tgbaalgos/dupexp.hh,
src/tgbaalgos/emptiness.hh, src/tgbaalgos/emptiness_stats.hh,
src/tgbaalgos/gtec/ce.hh, src/tgbaalgos/gtec/gtec.hh,
src/tgbaalgos/gtec/sccstack.hh, src/tgbaalgos/gtec/status.hh,
src/tgbaalgos/gv04.hh, src/tgbaalgos/hoa.hh, src/tgbaalgos/isdet.hh,
src/tgbaalgos/isweakscc.hh, src/tgbaalgos/lbtt.hh,
src/tgbaalgos/ltl2taa.hh, src/tgbaalgos/ltl2tgba_fm.hh,
src/tgbaalgos/magic.hh, src/tgbaalgos/mask.hh,
src/tgbaalgos/minimize.hh, src/tgbaalgos/neverclaim.hh,
src/tgbaalgos/postproc.hh, src/tgbaalgos/powerset.hh,
src/tgbaalgos/product.hh, src/tgbaalgos/projrun.hh,
src/tgbaalgos/randomgraph.hh, src/tgbaalgos/randomize.hh,
src/tgbaalgos/reachiter.hh, src/tgbaalgos/reducerun.hh,
src/tgbaalgos/relabel.hh, src/tgbaalgos/remfin.hh,
src/tgbaalgos/replayrun.hh, src/tgbaalgos/safety.hh,
src/tgbaalgos/sbacc.hh, src/tgbaalgos/scc.hh,
src/tgbaalgos/sccfilter.hh, src/tgbaalgos/sccinfo.hh,
src/tgbaalgos/se05.hh, src/tgbaalgos/simulation.hh,
src/tgbaalgos/stats.hh, src/tgbaalgos/stripacc.hh,
src/tgbaalgos/stutter.hh, src/tgbaalgos/tau03.hh,
src/tgbaalgos/tau03opt.hh, src/tgbaalgos/translate.hh,
src/tgbaalgos/weight.hh, src/tgbaalgos/word.hh,
src/sanity/includes.test, src/tgbaalgos/ndfs_result.hxx: here.
2015-03-23 10:19:55 +01:00
Alexandre Duret-Lutz
c26457b02b tgba: add a release_named_properties() method
Fixes #67.

* src/tgba/tgba.cc, src/tgba/tgba.hh: Here.
* src/tgbaalgos/complete.cc, src/tgbaalgos/stripacc.cc: Use it.
2015-03-22 14:07:24 +01:00
Alexandre Duret-Lutz
125fa983ab Do not store getenv() pointers in static variables.
... or the pointer might be invalidated if the environments
changes.  Fixes #63.

* src/taalgos/dotty.cc, src/tgbaalgos/dotty.cc,
src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc:
Copy the environment in strings instead.
* wrap/python/tests/automata.ipynb: Adjust comment.
2015-03-20 22:37:57 +01:00
Alexandre Duret-Lutz
519f5e3cee hoa: fix an assert() when initial states are not declared
* src/hoaparse/hoaparse.yy: Make sure initial states are
declared.
* src/tgbatest/hoaparse.test: Test it.
2015-03-20 18:01:14 +01:00
Alexandre Duret-Lutz
b803a0ee4d get rid of prop_single_acc_set() and set_single_acc_set()
Fixes #64.

* src/tgba/tgba.hh: Here.
* src/tgbaalgos/complete.cc, src/tgbaalgos/degen.cc,
src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/mask.cc,
src/tgbaalgos/minimize.cc, src/tgbaalgos/remfin.cc,
src/tgbaalgos/sccfilter.cc, src/tgbaalgos/simulation.cc,
src/tgbaalgos/stutter.cc: Adjust.
2015-03-18 21:50:37 +01:00
Alexandre Duret-Lutz
d2f11e4075 move set_generalized_buchi and set_buchi to tgba
* src/tgba/tgbagraph.hh (set_generalized_buchi, set_buchi): Move...
* src/tgba/tgba.hh: ... here.
2015-03-18 20:52:58 +01:00
Alexandre Duret-Lutz
47d9a2d57c rename set_single_acceptance_set() to set_buchi()
Fixes #66.

* src/dstarparse/dra2ba.cc, src/dstarparse/nra2nba.cc,
src/hoaparse/hoaparse.yy, src/tgba/tgbagraph.hh,
src/tgbaalgos/complete.cc, src/tgbaalgos/degen.cc,
src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbacomp.cc,
src/tgbaalgos/minimize.cc, src/tgbaalgos/postproc.cc: Here.
2015-03-18 20:27:37 +01:00
Alexandre Duret-Lutz
2dbef514bd move copy_acceptance_of and copy_ap_of to tgba.hh
Fixes #65.

* src/tgba/tgbagraph.hh (copy_acceptance_of, copy_ap_of): Move...
* src/tgba/tgba.hh: ... here.
2015-03-18 20:19:49 +01:00
Alexandre Duret-Lutz
a79267b8a3 rename copy_acceptance_conditions_of()
... into copy_acceptance_of().  For #65.

* src/tgba/tgbagraph.hh, src/tgbaalgos/dupexp.cc,
src/tgbaalgos/emptiness.cc, src/tgbaalgos/mask.cc,
src/tgbaalgos/powerset.cc, src/tgbaalgos/sbacc.cc,
src/tgbaalgos/simulation.cc, src/tgbaalgos/stutter.cc: Here.
2015-03-18 20:07:57 +01:00
Alexandre Duret-Lutz
231b3e1809 * src/tgba/tgbagraph.hh: Remove orphaned prototype. 2015-03-18 18:48:09 +01:00
Alexandre Duret-Lutz
72eed9b2e2 sat: add missing prop_state_based_acc() call
Fixes #62.

* src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc: Add call to
prop_state_based_acc() when building an automaton with state-based
acceptance.
* src/tgbatest/satmin2.test: New test.
* doc/org/satmin.org: Update.
2015-03-17 19:28:34 +01:00
Alexandre Duret-Lutz
6712fa3c65 man: fix section number of spot-x.7
* src/bin/man/Makefile.am: Make sure the header of spot-x.7 refers to
section 7, not 1.  This error was caught by lintian on the Debian
packages.
2015-03-17 19:28:34 +01:00
Alexandre Duret-Lutz
838bfb2ae3 dotty: colored acceptance sets
This implement several new options for --dot in order to
allow emptiness sets to be output as colored ⓿ or ❶...
Also add a SPOT_DOTDEFAULT environment variable.

* NEWS, src/bin/man/spot-x.x, src/bin/common_aoutput.cc,
src/bin/dstar2tgba.cc: Document the new options.
* doc/org/.dir-locals.el, doc/org/init.el.in: Setup
SPOT_DOTEXTRA and SPOT_DOTDEFAULT for all documents.
* doc/org/autfilt.org, doc/org/dstar2tgba.org, doc/org/ltl2tgba.org,
doc/org/ltldo.org, doc/org/oaut.org, doc/org/randaut.org,
doc/org/satmin.org: Adjust to this new setup.
* src/misc/escape.cc, src/misc/escape.hh (escape_html): New function.
* src/tgba/acc.cc, src/tgba/acc.hh (to_text, to_html): New method.
* src/tgbaalgos/dotty.cc: Implement the new options.
* src/tgbatest/readsave.test, wrap/python/tests/automata.ipynb: More
tests.
* wrap/python/spot.py: Make sure the default argument for
dotty_reachable is None, so that SPOT_DOTDEFAULT is honored.
2015-03-17 19:28:34 +01:00
Alexandre Duret-Lutz
7caf2b83d6 dot: allow extra configuration via environment
* src/tgbaalgos/dotty.cc, src/taalgos/dotty.cc: Honnor the SPOT_DOTEXTRA
environement variable.
* src/tgbatest/readsave.test, wrap/python/tests/automata.ipynb: Test it.
* NEWS, src/bin/man/spot-x.x: Document it.
2015-03-16 18:40:31 +01:00
Alexandre Duret-Lutz
2362b9ab68 python: improve handling of formulas
* src/misc/escape.hh, src/misc/escape.cc (escape_latex): New function.
* src/ltlvisit/tostring.cc: Escape atomic proposition in LaTeX output.
* wrap/python/spot.py: Make it easy to output formulas in different
syntaxes.  Also allow the AST to be shown.
* wrap/python/spot_impl.i: Catch std::runtime_error.
* wrap/python/tests/formulas.ipynb: New file.
* wrap/python/tests/Makefile.am: Add it.
2015-03-11 21:09:12 +01:00
Alexandre Duret-Lutz
4ffb0cb98d randltl: some code cleanup
* src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh: Throw
invalid_argument exceptions consistently (not std::string), and use
forwarding constructors to avoid the construct() method.
* src/bin/randltl.cc: Catch the above exceptions.  Destroy
the opts variable right after its use, so that we don't need
explicit destructor calls.
* src/ltltest/rand.test: Add a test.
2015-03-08 13:50:12 +01:00
Thibaud Michaud
3bf3d2c8a1 Adding python functions to mirror the functionalities found in src/bin
* wrap/python/spot.i: Rename to...
* wrap/python/spot_impl.i: ...this, and import spot_impl from spot.py so
that it is not needed to recompile everything when modifying python
code.
* wrap/python/spot.py: Adding python functions to mirror the
functionalities found in src/bin.
* src/bin/common_r.cc: Move simplification level...
* src/ltlvisit/simplify.hh: ... here as a constructor of
ltl_simplifier_options, to make it available in wrap/python.
* src/bin/ltlfilt.cc: Set simplification level using the new
ltl_simplifier_options constructor.
* src/bin/randltl.cc: Move most of the code...
* src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh: ... here, as a
class named randltlgenerator.
* wrap/python/tests/bddnqueen.py, wrap/python/tests/minato.py: Avoid
calling bdd_init twice by moving 'import spot' after bdd initialization.
* wrap/python/Makefile.am: Rename spot to spot_impl
* wrap/python/tests/Makefile.am: Add ipnbdoctest.py.
* wrap/python/.gitignore: Rename spot.py to spot_impl.py
* src/ltlvisit/tostring.cc: \ttrue and \ffalse should be \top and \bot.
* wrap/python/tests/ipnbdoctest.py: Run code cells of a python notebook
and compare the output to the actual content of the notebook.
* wrap/python/tests/randltl.ipynb: Document and test randltl.
* wrap/python/tests/run.in: Call ipnbdoctest.py to run ipython
notebooks.
2015-03-08 00:07:25 +01:00
Alexandre Duret-Lutz
a0ac8dc512 acc: add a to_cnf() function
* src/tgba/acc.cc, src/tgba/acc.hh (to_cnf, is_cnf): New functions.
* src/bin/autfilt.cc: Add a --cnf-acceptance option.
* src/tgbatest/acc2.test: Test it.
2015-03-05 09:18:46 +01:00
Alexandre Duret-Lutz
b71e6addd2 acc: fix is_dnf()
A Fin() terms with multiple sets should not appear under an And.

* src/tgba/acc.cc (is_dnf): Fix it.
* src/tgbatest/acc.cc, src/tgbatest/acc.test: Augment test case.
2015-03-05 09:18:38 +01:00
Alexandre Duret-Lutz
518de8d5eb acc: implement to_dnf() using BDDs
This way we have for instance
  (Inf(1) | Fin(2)) & (Fin(1) | Inf(3)) & Inf(0)
converted into just
  (Fin(1) & Fin(2) & Inf(0)) | (Inf(0)&Inf(1)&Inf(3))
while previously we would produce 4 terms:
  (Fin(2) & Fin(1) & Inf(0)) | (Fin(2) & (Inf(0)&Inf(3)))
  | (Fin(1) & (Inf(0)&Inf(1))) | (Inf(0)&Inf(1)&Inf(3))

* src/tgba/acc.cc (to_dnf): Recode it.
* src/tgbatest/acc2.test: Adjust.
2015-03-04 22:54:50 +01:00
Alexandre Duret-Lutz
ebe4ffc507 sccinfo: introduce is_rejecting()
Because scc_info does not perform a full emptiness check, it is not
always able to tell whether an SCC is accepting if the acceptance
condition use Fin primitives.  This introduce is_rejecting_scc() in
addition to to is_accepting_scc().  Only one of them may be true, but
they can both be false if scc_info has no idea whether the SCC is
accepting.

* src/tgbaalgos/sccinfo.cc, src/tgbaalgos/sccinfo.hh: Implement
is_rejecting_scc().
* src/bin/ltlcross.cc, src/tgba/acc.cc, src/tgba/acc.hh,
src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/isweakscc.cc,
src/tgbaalgos/remfin.cc, src/tgbaalgos/safety.cc,
src/tgbaalgos/sccfilter.cc: Use it.
* src/tgbaalgos/dotty.cc: Use is_rejecting_scc() and is_accepting_scc()
to color SCCs.
* doc/org/oaut.org: Document the colors used.
* src/tgbatest/neverclaimread.test, src/tgbatest/readsave.test: Adjust
tests.
* src/tgbatest/sccdot.test: New test case.
* src/tgbatest/Makefile.am: Add it.
2015-03-03 20:32:29 +01:00
Alexandre Duret-Lutz
8658441839 bin: use enums instead of #define for option codes
* src/bin/autfilt.cc, src/bin/common_aoutput.cc,
src/bin/common_finput.cc, src/bin/common_output.cc,
src/bin/common_post.cc, src/bin/common_setup.cc,
src/bin/common_trans.cc, src/bin/dstar2tgba.cc, src/bin/genltl.cc,
src/bin/ltl2tgba.cc, src/bin/ltl2tgta.cc, src/bin/ltlcross.cc,
src/bin/ltlfilt.cc, src/bin/ltlgrind.cc, src/bin/randaut.cc,
src/bin/randltl.cc: Here.
2015-03-02 16:55:56 +01:00
Alexandre Duret-Lutz
a530498fbd Fix a bug seen with link-time optimizations enabled.
* src/tgbaalgos/simulation.cc (direct_simulation): Do not store the
original_ automaton as a reference. Otherwise with LTO (+ probably NRVO)
we get a situation where the result automaton (that will be stored in
original_) copies the properties of itself.
2015-03-01 11:20:35 +01:00
Alexandre Duret-Lutz
9454584074 stutter.test: Fix for failure seen on arch linux.
* src/ltltest/stutter.test: Reverse the logic for the test for time, in
case the shell has a builtin version.
2015-03-01 10:48:37 +01:00
Alexandre Duret-Lutz
6bacbe1e92 * src/ltltest/stutter.test: Run time only if present. 2015-03-01 00:15:58 +01:00
Alexandre Duret-Lutz
1f0bb428b0 add a stutter-invariant property to automata
... and show it in the HOA output.  Fixes #60.

* src/tgba/tgba.hh: Add is_stutter_invariant().
* src/tgbaalgos/hoa.cc: Print stutter-invariant
and inherently-weak.
* src/tgbaalgos/ltl2tgba_fm.cc: Set both.
* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/complete.cc,
src/tgbaalgos/degen.cc, src/tgbaalgos/dtgbacomp.cc,
src/tgbaalgos/mask.cc, src/tgbaalgos/minimize.cc,
src/tgbaalgos/remfin.cc, src/tgbaalgos/sccfilter.cc,
src/tgbaalgos/simulation.cc, src/tgbaalgos/stutter.cc,
src/tgbatest/hoaparse.test, src/tgbatest/ltldo.test,
src/tgbatest/monitor.test, src/tgbatest/randomize.test,
src/tgbatest/remfin.test, src/tgbatest/sbacc.test: Adjust.
2015-02-28 16:44:06 +01:00
Alexandre Duret-Lutz
566118a5be hoa: add option to output implicit labels
Fixes #59.

* src/tgbaalgos/hoa.cc: Add option i.
* src/bin/common_aoutput.cc, src/bin/dstar2tgba.cc,
src/tgbaalgos/hoa.hh: Document it.
* src/tgbatest/hoaparse.test: Test it.
2015-02-28 12:50:33 +01:00
Alexandre Duret-Lutz
5749fe6f7c * src/tgbaalgos/isweakscc.cc (is_inherently_weak_scc): Allow Fin. 2015-02-28 00:06:17 +01:00
Etienne Renault
e05ec12b37 Clang needs explicit copy-initialization for sets.
* src/tgba/acc.cc: here.
2015-02-27 14:50:57 +01:00
Etienne Renault
734bceff8e random: Get rid of uniform_distribution (non-portable).
* src/misc/random.cc, src/misc/random.hh,
src/tgbaalgos/randomgraph.cc, src/tgbatest/randaut.test,
src/tgbatest/randomize.test, src/tgbatest/readsave.test,
src/ltlvisit/simplify.cc, src/tgbaalgos/randomize.cc,
src/graph/graph.hh, src/tgbatest/randpsl.test: here.
2015-02-27 14:17:07 +01:00
Etienne Renault
5610d10ac3 simplify: resolve assertion failed.
* src/ltltest/reduc0.test, src/ltlvisit/simplify.cc: here.
2015-02-27 14:17:07 +01:00
Alexandre Duret-Lutz
58da54e79a * src/tgbaalgos/remfin.cc: Purge unreachable states. 2015-02-26 17:44:47 +01:00
Alexandre Duret-Lutz
af1d05fd13 bin: better documentation for --hoaf=s
* src/bin/common_aoutput.cc, src/bin/dstar2tgba.cc: Here.
2015-02-26 17:30:02 +01:00
Alexandre Duret-Lutz
5b3034b605 dot: add an option to display the acceptance
* src/tgbaalgos/dotty.cc: Display the acceptance if "a" is used.
* src/bin/common_aoutput.cc, src/bin/dstar2tgba.cc,
src/tgbaalgos/dotty.hh: Document it.
* src/tgbatest/readsave.test: Test it.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
095ac93b5b postproc: make sure WDBA have an acceptance set if BA is desired
* src/tgbaalgos/postproc.cc: Here.
* src/tgbatest/ltl2tgba.test: Make sure ltl2tgba -B 0 has one
acceptance set.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
f0b1b9438f Prefix many algorithms with runtime_error for unexpected acceptance
* src/tgba/tgbagraph.cc (merge_transitions): Disable acceptance
merging if Fin acceptance is used.
* src/tgbaalgos/degen.cc, src/tgbaalgos/dtbasat.cc,
src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/isweakscc.cc,
src/tgbaalgos/lbtt.cc, src/tgbaalgos/minimize.cc,
src/tgbaalgos/neverclaim.cc, src/tgbaalgos/safety.cc,
src/tgbaalgos/sccfilter.cc, src/tgbaalgos/simulation.cc: Throw an
exception if an unsupported type of acceptance is received.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
da2ccdb2ed * src/tgbaalgos/hoa.cc: Use is_buchi() and is_true(). 2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
5b2c7b55ed acc: refactor strip() routines
* src/tgba/acc.cc, src/tgba/acc.hh: Move the strip() routine from
acc_cond into acc_cond::mark_t, and the strip() routine from
cleanacc.cc into acc_cond::acc_code.  Introduce helper functions
to create inf()/fin()/t()/f() at the acc_code level.
* src/tgbaalgos/cleanacc.cc: Simplify, using the strip() function
from acc_code.
* src/tgbaalgos/mask.cc (mask_acc_sets): Use the strip() function
from acc_code so that it work on non-Buchi acceptance.
* src/tgbatest/maskacc.test: Add a test for the latter change.
* src/tgbaalgos/sccfilter.cc, src/tgbatest/acc.cc: Adjust the
use mark_t::strip().
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
717c857794 ltlcross: adjust to work with generic acceptance
* src/bin/ltlcross.cc: Remove Fin-acceptance before
doing checks.  More --verbose output.
* src/tgba/acc.cc, src/tgba/acc.hh: Add an eval_sets() function
to find the set of acceptance sets needed to satisfy the condition
in an accepting SCC.
* src/tgbaalgos/gtec/ce.cc: Use eval_sets() when computing
a counter example.
* src/tgbaalgos/gtec/gtec.cc: Raise an exception when called
on an acceptance that contains Fin.
* src/tgbatest/ltl2dstar3.test, src/tgbatest/ltlcrossce2.test:
New files.
* src/tgbatest/Makefile.am: Add them.
* src/tgba/tgba.cc (is_empty): Call remove_fin if needed.
* src/tgbaalgos/product.cc, src/tgbaalgos/dtgbacomp.cc: Adjust
to work with generic acceptance.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
9ccbc34964 remfin: introduce less acceptance sets for interferences
Instead of adding one set per term in the DNF, reuse the
removed Fin(x) sets as Inf(x) sets.

* src/tgbaalgos/remfin.cc: Here.
* src/tgbatest/remfin.test: Additional test.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
83dfb4a971 remfin: cleanup acceptance
* src/tgbaalgos/remfin.cc: Call cleanup_acceptance().
* src/tgbatest/remfin.test: Adjust.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
d597050f6d Make it easy to complement an acceptance condition
* src/tgba/acc.cc, src/tgba/acc.hh (complement): New method.
* src/bin/autfilt.cc: Add a --complement-acceptance option.
* src/tgbatest/acc2.test: Test it.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
659107a000 Add a cleanup_acceptance() algorithm
* src/tgbaalgos/cleanacc.cc, src/tgbaalgos/cleanacc.hh: New file.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgba/acc.hh, src/tgba/tgba.hh (get_acceptance): Return a
reference.
* src/bin/autfilt.cc: Add a --cleanup-acceptance option.
* src/tgbatest/hoaparse.test: Test it.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
85508a0ea6 Add a remove_fin() algorithm
* src/bin/autfilt.cc: Add remove_fin().
* src/tgba/acc.cc, src/tgba/acc.hh: Add is_dnf() and simplify eval().
* src/tgbaalgos/remfin.cc, src/tgbaalgos/remfin.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/remfin.test: New file.
* src/tgbatest/Makefile.am: Add it.
2015-02-26 17:30:01 +01:00
Alexandre Duret-Lutz
1441c4fe34 acc: add a to_dnf() method
* src/tgba/acc.cc, src/tgba/acc.hh: Implement a to_dnf()
method.
* src/bin/autfilt.cc: Add option --dnf-acceptance.
* src/tgbatest/acc2.test: Test it.
2015-02-24 15:32:15 +01:00
Alexandre Duret-Lutz
de586dd2f0 stats: use %g to print the (generic) acceptance condition
* src/tgbaalgos/stats.cc, src/tgbaalgos/stats.hh: Implement %g.
* src/bin/common_aoutput.cc, src/bin/common_aoutput.hh:
Document it, and also implement %G.
* src/tgbatest/acc2.test: New file.
* src/tgbatest/Makefile.am: Add it.
2015-02-23 17:12:12 +01:00
Alexandre Duret-Lutz
33c496a4bb acc: Add operators == and != for acc_code
and make sure are_isomorphic does not look only at the number of
acceptance sets

* src/tgba/acc.hh: Here.
* src/tgbaalgos/are_isomorphic.cc: Use it to ensure two automata
have the same acceptance condition.
* src/tgbatest/explpro4.test: Test product between Büchi and co-Büchi,
and make sure the isomorphic check look at the acceptance condition.
2015-02-23 17:12:12 +01:00
Alexandre Duret-Lutz
039274b238 sbacc: Make sure it also work for non-TGBA
* src/tgbatest/sbacc.test: Adjust test case.
2015-02-23 17:12:11 +01:00