Commit graph

2138 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
6e8170e386 degen: do not mark initial trivial SCCs as accepting
Doing so is not wrong, but it's superfluous, and the extra accepting
state will cause additional work in emptiness checks based on NDFS.
Report from Jan Strejček.

* src/tgbaalgos/degen.cc: Here.
* src/tgbatest/degenid.test: Add a test case.
2015-04-01 15:26:05 +02:00
Alexandre Duret-Lutz
a18327d488 stutter: improve closure
if a transition with the same label already exist, reuse it

* src/tgbaalgos/stutter.cc: Here.
* src/tgbatest/stutter.test: Add a test case.
2015-03-31 19:18:41 +02:00
Alexandre Duret-Lutz
2f42c1c9bf randaut: add option --acc-type=random
Fixes #71.

* src/bin/randaut.cc: Implement option --acc-type.
* src/tgbaalgos/randomgraph.cc,
src/tgbaalgos/randomgraph.hh (random_acceptance): New function.
* src/tgbatest/randaut.test, wrap/python/tests/randaut.ipynb: Test it.
2015-03-31 13:50:56 +02:00
Alexandre Duret-Lutz
df981a0676 rename cleanup_acceptance() as cleanup_acceptance_here()
And add a cleanup_acceptance() version that copies.

* src/tgbaalgos/cleanacc.cc, src/tgbaalgos/cleanacc.hh: Rename
and add the second version.
* src/bin/autfilt.cc, src/bin/ltlcross.cc,
src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/remfin.cc: Use
cleanup_acceptance_here.
2015-03-31 10:44:53 +02:00
Alexandre Duret-Lutz
c5ecd09fb6 bin: Update default options of ltl3dra
* src/bin/common_trans.cc: Update to expect HOA by default.
* doc/org/ltlcross.org, doc/org/ltldo.org: Adjust.
2015-03-30 21:57:04 +02:00
Alexandre Duret-Lutz
961d005b84 python: read automata from pipes
* src/hoaparse/hoaparse.yy, src/hoaparse/hoascan.ll,
src/hoaparse/parsedecl.hh, src/hoaparse/public.hh:
Add a way to read automata from a file descriptor.
* wrap/python/spot.py: Add machinery to read from
pipes.
* wrap/python/tests/piperead.ipynb: New file.
* wrap/python/tests/Makefile.am: Add it.
* wrap/python/tests/run.in: Setup PATH.
2015-03-30 21:57:04 +02:00
Alexandre Duret-Lutz
af8e7d62de * src/tgbatest/defs.in: Unset SPOT_DOTDEFAULT and SPOT_DOTEXTRA. 2015-03-30 12:24:31 +02:00
Alexandre Duret-Lutz
75328f1a21 autfilt: add a --simplify-exclusive-ap option
* src/bin/autfilt.cc: Add option.
* src/ltlvisit/exclusive.cc, src/ltlvisit/exclusive.hh: implement it.
* src/tgbatest/exclusive.test: Test it.
* src/misc/minato.cc, src/misc/minato.hh: Add an interface to
simplify a Boolean function with don't care.
2015-03-30 12:01:32 +02:00
Alexandre Duret-Lutz
25de479e12 python: add a spot.automata(filename) interface, yielding automata
* src/hoaparse/fmterror.cc, src/hoaparse/public.hh,
src/hoaparse/hoaparse.yy (hoa_stream_parser::parse_strict): New method
that raises an exception whenever a syntax error is encountered.
* src/ltlparse/public.hh (parse_error): Move ...
* src/misc/common.hh: ... here.
* wrap/python/spot_impl.i: Wrap the hoa output.
* wrap/python/spot.py: Implement spot.automata.
* wrap/python/tests/automata-io.ipynb: New test.
* wrap/python/tests/Makefile.am: Add it.
2015-03-27 17:27:12 +01:00
Alexandre Duret-Lutz
483212d275 Make --keep-states more useful by actually removing states.
Fixes #70.

We don't modify the behavior of mask_keep_states(), because it is
actually useful in some algorithm to remove states without renumbering
all the other states.

* src/bin/autfilt.cc: Call purge_dead_states().
* src/tgbatest/maskkeep.test: Adjust.
2015-03-25 21:34:01 +01:00
Alexandre Duret-Lutz
23bcbb5b37 complete: Fix completion of automata using Fin-acceptance
* src/tgba/acc.cc, src/tgba/acc.hh: Add a way to extract
an unstatisfiable mark, and fix the eval() function for
Fin acceptance.
* src/tgbaalgos/complete.cc: Label the sink state using
an unsatisfiable mark.  Do not assume generalized Büchi.
* src/tgbatest/complete.test: New test.
* src/tgbatest/Makefile.am: Add it.
2015-03-25 20:49:12 +01:00
Alexandre Duret-Lutz
7353e47f0c cleanacc: better cleanup
Sometimes, simplifying the acceptance condition (because it refers to
sets that do not appear in the automaton) cause more sets to be removed
from the acceptance condition, and therefore warrant another pass to
remove those sets from the automaton.

* src/tgbaalgos/cleanacc.cc: Here.
* src/tgbatest/hoaparse.test: Add a test case.
2015-03-25 20:02:59 +01:00
Alexandre Duret-Lutz
4553ac06cf autfilt: add a --remove-ap option
* src/tgbaalgos/remprop.cc, src/tgbaalgos/remprop.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/remprop.test: New test.
* src/tgbatest/Makefile.am: Add it.
* src/bin/autfilt.cc: Implement the option.
* doc/org/autfilt.org: Document it.
2015-03-24 18:58:24 +01:00
Alexandre Duret-Lutz
e592832a3e maskacc: reverse the way the acceptance condition is stripped
It makes more sense to assume that the removed set cannot be visited.

* src/tgbaalgos/mask.cc: Flip a Boolean.
* src/tgbatest/maskacc.test: Adjust test case.
* doc/org/autfilt.org: Add an example.
2015-03-24 16:33:33 +01:00
Alexandre Duret-Lutz
020bbd4473 remove_fin: remove useless states
* src/tgba/tgbagraph.cc (purge_dead_states): Using a DFS to compute a
topological order, allowing to remove useless using a second
pass (instead of iterating the passes until there is nothing to remove).
* src/tgbaalgos/remfin.cc: Call purge_dead_states().
* src/tgbatest/remfin.test, src/tgbatest/det.test: Adjust expected
output.
* doc/org/autfilt.org: Update example.
2015-03-24 15:11:17 +01:00
Alexandre Duret-Lutz
ead2ca0158 dot: better support of state-based acceptance
* src/tgbaalgos/dotty.cc: Here.
* src/tgbaalgos/sbacc.cc: Make the produced automata as state-based.
* src/tgbatest/readsave.test: Add a test.
2015-03-23 21:10:27 +01:00
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