1. 06 Jan, 2017 8 commits
    • Alexandre GBAGUIDI AISSE's avatar
      spot: Add 'langmap' option with dichotomy (it helps to choose min val) · 67e3a4f2
      Alexandre GBAGUIDI AISSE authored
      * python/spot/__init__.py: Handle 'dicho' option in 'sat_minimize'.
      * spot/priv/satcommon.cc: Implement get_number_of_distinct_vals.
      * spot/priv/satcommon.hh: Declare get_number_of_distinct_vals.
      * spot/twaalgos/dtbasat.cc: Use get_number_of_distinct_vals.
      * spot/twaalgos/dtbasat.hh: Change dichotomy function's prototype.
      * spot/twaalgos/dtwasat.cc: Use get_number_of_distinct_vals.
      * spot/twaalgos/dtwasat.hh: Change dichotomy function's prototype.
      Handle options.
      * spot/twaalgos/postproc.cc: Handle options.
      * spot/twaalgos/postproc.hh: Add dicho_langmap_ var for options.
      * tests/core/satmin2.test: Add tests for dichotomy.
      * tests/core/satmin.test: Add tests for dichotomy.
      * tests/python/satmin.py: Replace 'dichotomy' with 'dicho' option.
      67e3a4f2
    • Alexandre GBAGUIDI AISSE's avatar
      twaalgos: Implement language_map algo · 8a0eed6c
      Alexandre GBAGUIDI AISSE authored
      * python/spot/impl.i: Add python bindings.
      * spot/twaalgos/langmap.cc: Implement algo.
      * spot/twaalgos/langmap.hh: Declare algo.
      * spot/twaalgos/Makefile.am: Add new files.
      * tests/python/langmap.py: Add tests.
      * NEWS: Update.
      8a0eed6c
    • Alexandre GBAGUIDI AISSE's avatar
      spot: Implement dt*a_sat_minimize_assume(...) methods · 9a204b77
      Alexandre GBAGUIDI AISSE authored
      * python/spot/__init__.py: Add 'assume' option.
      * spot/misc/satsolver.cc: Add function to handle assumptions.
      * spot/misc/satsolver.hh: Declare assumption function.
      * spot/twaalgos/dtbasat.cc: Implement dtba_sat_minimize_assume.
      * spot/twaalgos/dtbasat.hh: Declare it.
      * spot/twaalgos/dtwasat.cc: Implement dtwa_sat_minimize_assume and
      handle options.
      * spot/twaalgos/dtwasat.hh: Declare it.
      * spot/twaalgos/postproc.cc: Handle options.
      * spot/twaalgos/postproc.hh: Use param_ var for incr and assume.
      * tests/core/satmin.test: Add tests for the new function.
      * tests/core/satmin2.test: Add tests for the new function.
      * tests/python/satmin.py: Add tests for the new function.
      9a204b77
    • Alexandre GBAGUIDI AISSE's avatar
      twaalgos: Implement dt*a_sat_minimize_incr(...) functions · ee17c2de
      Alexandre GBAGUIDI AISSE authored
      * python/spot/__init__.py: Add 'incr' boolean argument.
      * spot/twaalgos/dtbasat.cc: Implement dtba_sat_minimize_incr(...).
      * spot/twaalgos/dtbasat.hh: Declare it.
      * spot/twaalgos/dtwasat.cc: Implement dtwa_sat_minimize_incr(...) and
      deal with options.
      * spot/twaalgos/dtwasat.hh: Declare it.
      * spot/twaalgos/postproc.cc: Add option --sat-minimize=incr.
      * spot/twaalgos/postproc.hh: Add incr parameter.
      * tests/core/satmin.test: Add tests for incremental version.
      Update expected result.
      * tests/core/satmin2.test: Add tests for incremental version.
      * tests/python/satmin.py: Add tests for incremental version.
      ee17c2de
    • Alexandre GBAGUIDI AISSE's avatar
      twaalgos: Improve data storage in SAT-minimization · 9acd7370
      Alexandre GBAGUIDI AISSE authored
      * spot/misc/satsolver.hh: Make solver return vector<bool> instead of
      vector<int>.
      * spot/misc/satsolver.cc: Update code.
      * spot/priv/Makefile.am: Add satcommon.*
      * spot/priv/satcommon.hh: Declare helper class and factorize some
      duplicate code of dt*asat.cc
      * spot/priv/satcommon.cc: Implement helper class and factorize some
      duplicate code of dt*asat.cc
      * spot/twaalgos/dtbasat.cc: Declare helper, implement some functions
      in dict struct and update code.
      * spot/twaalgos/dtwasat.cc: Declare helper, implement some functions
      in dict struct and update code.
      * tests/core/readsat.cc: Update tests.
      * tests/core/satmin.test: Typo.
      * tests/core/satmin2.test: Update an expected result.
      9acd7370
    • Alexandre GBAGUIDI AISSE's avatar
      twaalgos: Help sat_build to ignore unuseful transitions · 79f4c8e0
      Alexandre GBAGUIDI AISSE authored
      * spot/twaalgos/dtbasat.cc: Fix static sat_build.
      * spot/twaalgos/dtwasat.cc: Fix static sat_build.
      79f4c8e0
    • Alexandre GBAGUIDI AISSE's avatar
      spot: Add Picosat to Spot library & Update satsolver class · 32f040fa
      Alexandre GBAGUIDI AISSE authored
      * Makefile.am: Add picosat to subdirs.
      * configure.ac: Add picosat/Makefile to AC_CONFIG_FILES.
      * README: Add picosat/ in the list of directories.
      * debian/copyright: Add picosat licence and details.
      * picosat/Makefile.am: Implement Makefile.am in picosat directory.
      * spot/Makefile.am: Tell the compiler to add libpico.la into libspot.la.
      * picosat/LICENSE: Add picosat licence.
      * picosat/NEWS: Add picosat NEWS.
      * picosat/VERSION: Add picosat VERSION.
      * picosat/picosat.c: Add picosat c file.
      * picosat/picosat.h: Add picosat header file.
      * spot/misc/satsolver.cc: Update functions.
      * spot/misc/satsolver.hh: Add documentation, clean code, change
      some functions visibility and separate templates functions.
      * spot/twaalgos/dtbasat.cc: Update dtba_to_sat function.
      * spot/twaalgos/dtwasat.cc: Update dtwa_to_sat function.
      32f040fa
    • Alexandre GBAGUIDI AISSE's avatar
      spot: Abstract cnf writing in SAT-based minimisation · 596bdec9
      Alexandre GBAGUIDI AISSE authored
      * spot/misc/satsolver.hh: Declare all functions needed.
      * spot/misc/satsolver.cc: Implement them.
      * spot/twaalgos/dtbasat.cc: Abstract writing.
      * spot/twaalgos/dtwasat.cc: Abstract writing.
      596bdec9
  2. 30 Dec, 2016 3 commits
    • Alexandre Duret-Lutz's avatar
      twa: add prop_set::improve_det · 684c9c47
      Alexandre Duret-Lutz authored
      Algorithms that remove transitions can turn a non-deterministic
      automaton into a deterministic one, so we need to be able to specify
      that determinism can be improved (as opposed to preserved).
      
      * spot/twa/twa.hh (twa::prop_set::improve_det): New attribute.
      (twa::prop_keep, twa::prop_copy): Honor it.
      * spot/tl/exclusive.cc, spot/twaalgos/alternation.cc,
      spot/twaalgos/complete.cc, spot/twaalgos/degen.cc,
      spot/twaalgos/determinize.cc, spot/twaalgos/mask.cc,
      spot/twaalgos/minimize.cc, spot/twaalgos/remfin.cc,
      spot/twaalgos/remprop.cc, spot/twaalgos/sbacc.cc,
      spot/twaalgos/sccfilter.cc, spot/twaalgos/simulation.cc,
      spot/twaalgos/strength.cc, spot/twaalgos/stutter.cc,
      spot/twaalgos/totgba.cc: Adjust calls to prop_keep() and
      prop_copy().
      684c9c47
    • Alexandre Duret-Lutz's avatar
      simulation: does not preserve !unambiguous, !semi-deterministic · ada81853
      Alexandre Duret-Lutz authored
      * spot/twaalgos/simulation.cc: Reset those to maybe.
      * tests/core/semidet.test: Add some tests.
      ada81853
    • Alexandre Duret-Lutz's avatar
      bedd96a7
  3. 29 Dec, 2016 9 commits
    • Alexandre Duret-Lutz's avatar
      support for semi-deterministic property · 4b013878
      Alexandre Duret-Lutz authored
      * spot/twa/twa.hh (prop_semi_deterministic): New methods.
      * spot/parseaut/parseaut.yy, spot/twaalgos/hoa.cc: Add support for the
      semi-deterministic property.
      * doc/org/concepts.org, doc/org/hoa.org: Document it.
      * spot/twaalgos/isdet.cc,
      spot/twaalgos/isdet.hh (is_semi_deterministic): New function.
      * bin/autfilt.cc: Add --is-semi-deterministic.
      * bin/common_aoutput.cc: Add --check=semi-deterministic.
      * tests/core/semidet.test: New file.
      * tests/Makefile.am: Add it.
      * tests/core/parseaut.test, tests/core/readsave.test: Adjust.
      4b013878
    • Alexandre Duret-Lutz's avatar
      twa_graph: add a merge_univ_dests() method · 12f6c8cf
      Alexandre Duret-Lutz authored
      and call it after parsing
      
      * spot/twa/twagraph.cc, spot/twa/twagraph.hh
      (twa_graph::merge_univ_dests): New method.
      * spot/parseaut/parseaut.yy: Call it.
      * spot/twaalgos/dot.cc: Improve output, now that
      several edges can use the same universal destination.
      * tests/core/alternating.test, tests/core/complete.test,
      tests/core/parseaut.test, tests/python/_altscc.ipynb,
      tests/python/alternating.py, tests/python/alternation.ipynb: Adjust
      test case.
      * doc/org/tut24.org: Adjust example.
      12f6c8cf
    • Alexandre Duret-Lutz's avatar
      remfin: call remove_alternation if needed · f5b261d8
      Alexandre Duret-Lutz authored
      * spot/twaalgos/remfin.cc: Here.
      * tests/core/alternating.test: Add a test case.
      f5b261d8
    • Alexandre Duret-Lutz's avatar
      complete: add support for alternating autamata · 071d819c
      Alexandre Duret-Lutz authored
      * spot/twaalgos/complete.cc: Do not use the initial
      state as a sink if it is universal.
      * tests/core/complete.test: Add a test case.
      071d819c
    • Alexandre Duret-Lutz's avatar
      postproc: preliminary support for alternating automata · f1b8d5f1
      Alexandre Duret-Lutz authored
      * spot/twaalgos/postproc.cc: Call remove_alternation().
      * tests/core/alternating.test: Additional test.
      f1b8d5f1
    • Alexandre Duret-Lutz's avatar
      twaalgos: add many guards against alternation · 9f6924cc
      Alexandre Duret-Lutz authored
      * spot/twa/twagraph.hh, spot/twaalgos/are_isomorphic.cc,
      spot/twaalgos/canonicalize.cc, spot/twaalgos/couvreurnew.cc,
      spot/twaalgos/cycles.cc, spot/twaalgos/degen.cc,
      spot/twaalgos/determinize.cc, spot/twaalgos/isunamb.cc,
      spot/twaalgos/isweakscc.cc, spot/twaalgos/mask.hh,
      spot/twaalgos/minimize.cc, spot/twaalgos/product.cc,
      spot/twaalgos/randomize.cc, spot/twaalgos/sbacc.cc,
      spot/twaalgos/sccfilter.cc, spot/twaalgos/simulation.cc:
      Throw a runtime_error if the input is alternating.
      9f6924cc
    • Alexandre Duret-Lutz's avatar
      stats: add a variant for twa_graph_ptr · 543e0db9
      Alexandre Duret-Lutz authored
      This is faster than using the abstract interface, and it also supports
      alternating automata.  (This will be tested in the tests for
      ltlcross's support for alternating automata.)
      
      * spot/twaalgos/stats.cc (stats_reachable, sub_stats_reachable):
      Add code specific to twa_graph_ptr.
      543e0db9
    • Alexandre Duret-Lutz's avatar
      remfin: ignore unreachable states in remove_fin_weak() · 64fa6c00
      Alexandre Duret-Lutz authored
      * spot/twaalgos/remfin.cc (remove_fin_weak): Ignore unreachable
      states.  This caused crashes in the test cases for the
      upcoming alternation support in ltlcross.
      64fa6c00
    • Alexandre Duret-Lutz's avatar
      alternation: implement remove_alternation() for weak alt automata · fa06cfa3
      Alexandre Duret-Lutz authored
      This mixes the subset construction (for 1-state rejecting SCCs) and
      the breakpoint construction (for larger rejecting SCCs).  The
      algorithm should probably be rewritten in a cleaner and more efficient
      way, but that should do for a first version.  It should be easy to
      extend it to support Büchi acceptance (since the breakpoint
      construction works for this) when we need it.
      
      * spot/twaalgos/alternation.hh,
      spot/twaalgos/alternation.cc (remove_alternation): New function.
      * tests/python/alternation.ipynb: New file.
      * tests/Makefile.am, doc/org/tut.org: Add it.
      fa06cfa3
  4. 27 Dec, 2016 6 commits
    • Alexandre Duret-Lutz's avatar
      twa: add support for very-weak property · 582d455c
      Alexandre Duret-Lutz authored
      * spot/twa/twa.hh: Implement the property.
      * spot/parseaut/parseaut.yy, spot/twaalgos/hoa.cc: Add input
      and output for it.
      * spot/twaalgos/strength.cc,
      spot/twaalgos/strength.hh (is_very_weak_automaton): New function.
      * tests/core/alternating.test: Add a test for --check=strength
      on an alternating automaton.
      * tests/core/strength.test, tests/core/parseaut.test: Adjust expected
      output.
      * NEWS, doc/org/hoa.org, doc/org/concepts.org: Document it.
      582d455c
    • Alexandre Duret-Lutz's avatar
      sccinfo: adjust to work with alternating automata · a4ce9994
      Alexandre Duret-Lutz authored
      * spot/twaalgos/sccinfo.cc: Consider universal edges as if they were
      existential edges.
      * spot/twaalgos/sccinfo.hh: Document that.
      * spot/twaalgos/dot.cc: Allow option 's' again, for easy testing.
      * tests/core/alternating.test: Adjust tests.
      * tests/python/_altscc.ipynb: New file (more tests).
      * tests/Makefile.am: Add it.
      a4ce9994
    • Alexandre Duret-Lutz's avatar
      alternation: add a states_and algorithm · 27ab631c
      Alexandre Duret-Lutz authored
      This should will come handy to implement the convertion from LTL to
      alternating automata, and to handle automata with multiple initial
      states.
      
      * spot/twaalgos/alternation.hh, spot/twaalgos/alternation.cc: New files.
      * spot/twaalgos/Makefile.am: Add them.
      * python/spot/impl.i: Add bindings.
      * tests/python/alternating.py: Test states_and.
      27ab631c
    • Alexandre Duret-Lutz's avatar
      twa_graph: add support for universal initial states · 48c812a5
      Alexandre Duret-Lutz authored
      The only missing point is that the HOA parser cannot deal with multiple
      universal initial states, as seen in parseaut.test.
      
      * spot/graph/graph.hh (new_univ_dests): New function, extracted from...
      (new_univ_edge): ... this one.
      * spot/twa/twagraph.hh (set_univ_init_state): Implement using
      new_univ_dests.
      * spot/twaalgos/dot.cc, spot/twaalgos/hoa.cc, python/spot/impl.i:
      Add support for universal initial states.
      * spot/parseaut/parseaut.yy: Add preliminary support for
      universal initial states.  Multiple universal initial states
      are still not supported.
      * tests/core/alternating.test, tests/core/parseaut.test,
      tests/python/alternating.py: Adjust tests and exercise this new feature.
      48c812a5
    • Alexandre Duret-Lutz's avatar
      dot: add support for alternating automata · d5c9c345
      Alexandre Duret-Lutz authored
      * spot/twaalgos/dot.cc: Handle universal destinations.
      Ignore option 's' for alternating automata.
      * tests/core/alternating.test: New file.
      * tests/Makefile.am: Add it.
      d5c9c345
    • Alexandre Duret-Lutz's avatar
      print_hoa: add support for universal branches · 56df459c
      Alexandre Duret-Lutz authored
      * spot/twaalgos/hoa.cc: Implement it.
      * tests/python/alternating.py: Test it.
      56df459c
  5. 24 Dec, 2016 1 commit
  6. 16 Dec, 2016 1 commit
  7. 13 Dec, 2016 1 commit
    • Maximilien Colange's avatar
      Add a new, parameterized, version of the Couvreur emptiness check. · 1a08eca8
      Maximilien Colange authored
      This version has optimization for explicit twa, and also for weak and
      terminal (depending on whether an accepting run is requested) automata.
      
      * spot/twaalgos/couvreurnew.hh, spot/twaalgos/couvreurnew.cc,
        spot/twaalgos/Makefile.am: New files for the new algorithm.
      * spot/twaalgos/emptiness.cc, tests/core/randtgba.cc:
        Register new algorithm.
      1a08eca8
  8. 02 Dec, 2016 2 commits
    • Alexandre Duret-Lutz's avatar
      install back the safety check of includes.test · 7824005d
      Alexandre Duret-Lutz authored
      Compilation of each header file alone, as a safety check, was removed
      when introducing "#pragma once" because we did not have to check for
      possible double inclusion.  However we still need to compile each
      header to make sure they are self-contained.
      
      * tests/sanity/includes.test: Compile each header.
      * tests/run.in: Export various compiler and directory flags.
      * spot/twaalgos/emptiness_stats.hh, spot/misc/mspool.hh,
      spot/misc/fixpool.hh: Include <spot/misc/common.hh>.
      * spot/misc/common.hh: Include <cassert>.
      * NEWS: Mention the fixed headers.
      7824005d
    • Alexandre Duret-Lutz's avatar
      install back the safety check of includes.test · 0ab8dc06
      Alexandre Duret-Lutz authored
      Compilation of each header file alone, as a safety check, was removed
      when introducing "#pragma once" because we did not have to check for
      possible double inclusion.  However we still need to compile each
      header to make sure they are self-contained.
      
      * tests/sanity/includes.test: Compile each header.
      * tests/run.in: Export various compiler and directory flags.
      * spot/twaalgos/emptiness_stats.hh, spot/misc/mspool.hh,
      spot/misc/fixpool.hh: Include <spot/misc/common.hh>.
      * spot/misc/common.hh: Include <cassert>.
      * NEWS: Mention the fixed headers.
      0ab8dc06
  9. 30 Nov, 2016 1 commit
  10. 29 Nov, 2016 1 commit
    • Maximilien Colange's avatar
      Automata with no state are no longer allowed. · b3ee6831
      Maximilien Colange authored
      * NEWS, spot/twa/twa.hh: Document the change.
      * spot/twa/twagraph.hh, spot/kripke/kripkegraph.hh:
        Add an exception in get_init_state_number().
        get_init_state() now calls get_init_state_number().
      * spot/twa/twagraph.cc, spot/twaalgos/simulation.cc,
        spot/twaalgos/powerset.cc, spot/twaalgos/complete.cc,
        spot/twaalgos/sccfilter.cc: Remove now useless tests.
      * spot/twaalgos/hoa.cc: Remove now useless comment.
      * spot/twaalgos/minimize.cc: Never return an automaton with no state.
      b3ee6831
  11. 28 Nov, 2016 2 commits
    • Alexandre Duret-Lutz's avatar
      strength: fix is_terminal() · 341eeb2b
      Alexandre Duret-Lutz authored
      Fix #198.  Reported by Maximilien Colange.
      
      * spot/twaalgos/strength.cc (is_terminal): Test that no accepting
      transition lead to a rejecting SCC.
      * tests/core/strength.test: Add test case.
      * spot/twaalgos/strength.hh, spot/twa/twa.hh, doc/org/concepts.org:
      Adjust documentation.
      * NEWS: Mention the fix.
      341eeb2b
    • Alexandre Duret-Lutz's avatar
      strength: fix is_terminal() · 9bc978a9
      Alexandre Duret-Lutz authored
      Fix #198.  Reported by Maximilien Colange.
      
      * spot/twaalgos/strength.cc (is_terminal): Test that no accepting
      transition lead to a rejecting SCC.
      * tests/core/strength.test: Add test case.
      * spot/twaalgos/strength.hh, spot/twa/twa.hh, doc/org/concepts.org:
      Adjust documentation.
      * NEWS: Mention the fix.
      9bc978a9
  12. 24 Nov, 2016 2 commits
  13. 23 Nov, 2016 1 commit
    • Etienne Renault's avatar
      Prefer emplace_back to push_back · 43ec36cd
      Etienne Renault authored
      * spot/graph/ngraph.hh, spot/ltsmin/ltsmin.cc,
      spot/misc/bitvect.hh, spot/misc/intvcomp.cc,
      spot/misc/satsolver.cc, spot/priv/weight.cc,
      spot/ta/taexplicit.cc, spot/taalgos/minimize.cc,
      spot/taalgos/reachiter.cc, spot/tl/exclusive.cc,
      spot/tl/formula.cc, spot/tl/formula.hh,
      spot/tl/mark.cc, spot/tl/mutation.cc,
      spot/tl/relabel.cc, spot/tl/remove_x.cc,
      spot/tl/simplify.cc, spot/twa/acc.cc,
      spot/twa/acc.hh, spot/twa/formula2bdd.cc,
      spot/twa/taatgba.cc, spot/twa/taatgba.hh,
      spot/twa/twa.hh, spot/twa/twagraph.cc,
      spot/twaalgos/bfssteps.cc, spot/twaalgos/canonicalize.cc,
      spot/twaalgos/compsusp.cc, spot/twaalgos/copy.cc,
      spot/twaalgos/cycles.cc, spot/twaalgos/degen.cc,
      spot/twaalgos/determinize.cc, spot/twaalgos/dtwasat.cc,
      spot/twaalgos/emptiness.cc, spot/twaalgos/gv04.cc,
      spot/twaalgos/hoa.cc, spot/twaalgos/ltl2taa.cc,
      spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/magic.cc,
      spot/twaalgos/mask.hh, spot/twaalgos/minimize.cc,
      spot/twaalgos/powerset.cc, spot/twaalgos/product.cc,
      spot/twaalgos/randomgraph.cc, spot/twaalgos/reachiter.cc,
      spot/twaalgos/relabel.cc, spot/twaalgos/remfin.cc,
      spot/twaalgos/sccfilter.cc, spot/twaalgos/se05.cc,
      spot/twaalgos/simulation.cc, spot/twaalgos/stutter.cc,
      spot/twaalgos/tau03opt.cc, spot/twaalgos/totgba.cc,
      spot/twaalgos/word.cc, tests/core/bitvect.cc: here.
      43ec36cd
  14. 11 Nov, 2016 2 commits
    • Alexandre Duret-Lutz's avatar
      scc_filter: preserve state names and highlighted states · 85f6e0e1
      Alexandre Duret-Lutz authored
      Suggested by Juraj Major.
      
      * spot/twaalgos/sccfilter.cc: Here.
      * tests/python/sccfilter.py: New file.
      * tests/Makefile.am: Add it.
      * NEWS: Mention the news.
      85f6e0e1
    • Alexandre Duret-Lutz's avatar
      remfin: fix handling of weak automata · a70589fe
      Alexandre Duret-Lutz authored
      * spot/twaalgos/remfin.cc: Do not add a sink states to deterministic
      weak automata, and actually apply the "weak" Fin-removal to any weak
      automaton.
      * tests/core/explprod.test: Add a test case for the previous patch,
      but that used to fail because of this bug.
      * NEWS: Mention the bug.
      a70589fe