1. 02 Apr, 2015 1 commit
    • Alexandre Duret-Lutz's avatar
      python: better bindings for testing automata · 16204e8e
      Alexandre Duret-Lutz authored
      * src/taalgos/dotty.cc, src/taalgos/dotty.hh: Add an interface
      similar to that of tgba/dotty.hh, even if we have to ignore
      most options.
      * src/taalgos/tgba2ta.cc, src/taalgos/tgba2ta.hh: Add an option
      to display the intermediate automaton with explicit stuttering
      transitions, for the purpose of making demonstrations.
      * src/tgba/tgbagraph.hh: Tweak the file so that SWIG can
      read it.
      * wrap/python/spot.py: Add wrappers for testing automata.
      * wrap/python/spot_impl.i: Fix support for
      atomic_prop_collect_as_bdd, and include a few more files.
      * wrap/python/tests/testingaut.ipynb: New file.
      * wrap/python/tests/Makefile.am: Add it.
      16204e8e
  2. 01 Apr, 2015 2 commits
    • Alexandre Duret-Lutz's avatar
      degen: add a lowinit option · 7bb183b9
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/degen.cc, src/tgbaalgos/degen.hh: New argument
      to disable the "jump to the accepting level if the entering
      state as an accepting self-loop" optimization.
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: Check
      the degen-lowinit option and pass it on to degeneralize().
      * src/bin/spot-x.cc: Document it.
      * src/tgbatest/degenlskip.test: Add some tests.
      * src/tgbatest/ltl2ta.test: Update value.  We output less
      accepting states now.
      7bb183b9
    • Alexandre Duret-Lutz's avatar
      degen: do not mark initial trivial SCCs as accepting · 6e8170e3
      Alexandre Duret-Lutz authored
      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.
      6e8170e3
  3. 31 Mar, 2015 3 commits
    • Alexandre Duret-Lutz's avatar
      stutter: improve closure · a18327d4
      Alexandre Duret-Lutz authored
      if a transition with the same label already exist, reuse it
      
      * src/tgbaalgos/stutter.cc: Here.
      * src/tgbatest/stutter.test: Add a test case.
      a18327d4
    • Alexandre Duret-Lutz's avatar
      randaut: add option --acc-type=random · 2f42c1c9
      Alexandre Duret-Lutz authored
      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.
      2f42c1c9
    • Alexandre Duret-Lutz's avatar
      rename cleanup_acceptance() as cleanup_acceptance_here() · df981a06
      Alexandre Duret-Lutz authored
      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.
      df981a06
  4. 30 Mar, 2015 4 commits
  5. 27 Mar, 2015 1 commit
    • Alexandre Duret-Lutz's avatar
      python: add a spot.automata(filename) interface, yielding automata · 25de479e
      Alexandre Duret-Lutz authored
      * 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.
      25de479e
  6. 25 Mar, 2015 3 commits
    • Alexandre Duret-Lutz's avatar
      Make --keep-states more useful by actually removing states. · 483212d2
      Alexandre Duret-Lutz authored
      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.
      483212d2
    • Alexandre Duret-Lutz's avatar
      complete: Fix completion of automata using Fin-acceptance · 23bcbb5b
      Alexandre Duret-Lutz authored
      * 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.
      23bcbb5b
    • Alexandre Duret-Lutz's avatar
      cleanacc: better cleanup · 7353e47f
      Alexandre Duret-Lutz authored
      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.
      7353e47f
  7. 24 Mar, 2015 3 commits
    • Alexandre Duret-Lutz's avatar
      autfilt: add a --remove-ap option · 4553ac06
      Alexandre Duret-Lutz authored
      * 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.
      4553ac06
    • Alexandre Duret-Lutz's avatar
      maskacc: reverse the way the acceptance condition is stripped · e592832a
      Alexandre Duret-Lutz authored
      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.
      e592832a
    • Alexandre Duret-Lutz's avatar
      remove_fin: remove useless states · 020bbd44
      Alexandre Duret-Lutz authored
      * 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.
      020bbd44
  8. 23 Mar, 2015 4 commits
    • Alexandre Duret-Lutz's avatar
      dot: better support of state-based acceptance · ead2ca01
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dotty.cc: Here.
      * src/tgbaalgos/sbacc.cc: Make the produced automata as state-based.
      * src/tgbatest/readsave.test: Add a test.
      ead2ca01
    • Alexandre Duret-Lutz's avatar
      autfilt: add a --exclusive-ap option · fb7b7a94
      Alexandre Duret-Lutz authored
      * 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.
      fb7b7a94
    • Alexandre Duret-Lutz's avatar
      ltlfilt: add a --exclusive-ap option · 544c533e
      Alexandre Duret-Lutz authored
      * 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.
      544c533e
    • Etienne Renault's avatar
      Replace guards by pragma once. · 57cd9f2d
      Etienne Renault authored
      * 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.
      57cd9f2d
  9. 22 Mar, 2015 1 commit
  10. 20 Mar, 2015 2 commits
  11. 18 Mar, 2015 6 commits
  12. 17 Mar, 2015 3 commits
    • Alexandre Duret-Lutz's avatar
      sat: add missing prop_state_based_acc() call · 72eed9b2
      Alexandre Duret-Lutz authored
      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.
      72eed9b2
    • Alexandre Duret-Lutz's avatar
      man: fix section number of spot-x.7 · 6712fa3c
      Alexandre Duret-Lutz authored
      * 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.
      6712fa3c
    • Alexandre Duret-Lutz's avatar
      dotty: colored acceptance sets · 838bfb2a
      Alexandre Duret-Lutz authored
      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.
      838bfb2a
  13. 16 Mar, 2015 1 commit
  14. 11 Mar, 2015 1 commit
    • Alexandre Duret-Lutz's avatar
      python: improve handling of formulas · 2362b9ab
      Alexandre Duret-Lutz authored
      * 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.
      2362b9ab
  15. 08 Mar, 2015 2 commits
    • Alexandre Duret-Lutz's avatar
      randltl: some code cleanup · 4ffb0cb9
      Alexandre Duret-Lutz authored
      * 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.
      4ffb0cb9
    • Thibaud Michaud's avatar
      Adding python functions to mirror the functionalities found in src/bin · 3bf3d2c8
      Thibaud Michaud authored
      * 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.
      3bf3d2c8
  16. 05 Mar, 2015 2 commits
    • Alexandre Duret-Lutz's avatar
      acc: add a to_cnf() function · a0ac8dc5
      Alexandre Duret-Lutz authored
      * 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.
      a0ac8dc5
    • Alexandre Duret-Lutz's avatar
      acc: fix is_dnf() · b71e6add
      Alexandre Duret-Lutz authored
      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.
      b71e6add
  17. 04 Mar, 2015 1 commit
    • Alexandre Duret-Lutz's avatar
      acc: implement to_dnf() using BDDs · 518de8d5
      Alexandre Duret-Lutz authored
      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.
      518de8d5