1. 02 Jun, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      simulation: do not depend on bdd numbers for ordering classes · 9ab4b840
      Alexandre Duret-Lutz authored
      Fixes #262 again.  Reported by Maximilien Colange.
      
      * spot/twaalgos/simulation.cc: Use state numbers to order classes, not
      their signatures.  The problem was that even if two simulation of the
      same automaton assign the same signature, the BDD identifier used for
      that signature might be different, and therefore the ordering obtained
      by using BDDs as keys in a map can be different.  A side-effect of
      this change is that the order of states in automata produced by
      simulation-based reduction may change; many tests had to be updated.
      * tests/core/ltl2tgba.test: Add a new test case based on Maximilien's
      report.
      * tests/core/complement.test, tests/core/det.test,
      tests/core/parseaut.test, tests/core/prodor.test, tests/core/scc.test,
      tests/python/atva16-fig2a.ipynb, tests/python/automata.ipynb,
      tests/python/decompose.ipynb, tests/python/decompose_scc.py,
      tests/python/highlighting.ipynb, tests/python/piperead.ipynb,
      tests/python/sccinfo.py, tests/python/simstate.py,
      tests/python/testingaut.ipynb, tests/python/word.ipynb: Update
      test case for new order of states.
      9ab4b840
  2. 31 May, 2017 4 commits
    • Alexandre Duret-Lutz's avatar
      dot: fix printing of alternating automata · 97f3efab
      Alexandre Duret-Lutz authored
      Related to #208.
      
      * spot/twaalgos/dot.cc: Fix missing definitions of universal nodes,
      and inclusion of universal nodes inside of SCC when none of the
      destination comes back to the SCC.
      * tests/python/_altscc.ipynb: Adjust and add more test cases.
      * tests/core/alternating.test, tests/core/neverclaimread.test,
      tests/core/readsave.test, tests/core/sccdot.test,
      tests/python/decompose.ipynb: Adjust test cases.
      * NEWS: Mention the bug.
      97f3efab
    • Alexandre Duret-Lutz's avatar
      acc: add a maybe_accepting() method · 78add1d4
      Alexandre Duret-Lutz authored
      * spot/twa/acc.cc, spot/twa/acc.hh: Implement the new method, and
      use it to implement inf_accepting().
      * tests/python/accparse2.py: Add some tests.
      78add1d4
    • Maximilien Colange's avatar
      Degeneralization keeps track of levels. · f7d14ab5
      Maximilien Colange authored
      * NEWS: Document this.
      * spot/twa/twagraph.cc: `copy_state_names_from` handles this new info.
      * spot/twaalgos/degen.hh, spot/twaalgos/degen.cc: Implement it.
      * tests/python/origstate.py, tests/python/simstate.py: Update tests to
        reflect the change.
      f7d14ab5
    • Maximilien Colange's avatar
      Simulation keeps track of simulated states in the input automaton. · 7b5ab545
      Maximilien Colange authored
      * NEWS: Document the change.
      * spot/twaalgos/simulation.cc: Implement the change.
      * spot/twa/twagraph.cc: `copy_state_names_from` uses simulated states
        info if present.
      * spot/twaalgos/determinize.cc: Pretty-print in determinization follows
        simulated states, avoiding possible confusion.
      * tests/Makefile.am, tests/python/simstate.py: Add a test.
      7b5ab545
  3. 29 May, 2017 1 commit
    • Thomas Medioni's avatar
      rs_like: fix bug to accept Fin | Fin , Inf & Inf · 4da6a5cd
      Thomas Medioni authored
      co-Büchi is now recognized as Streett-like, Büchi as Rabin-like.
      Also recognized Inf & Inf & Inf... as Streett-like and
      Fin | Fin | Fin... as Rabin-like.
      
      * spot/twa/acc.cc: Fix the bug
      * tests/python/rs_like.py: Add some test case
      4da6a5cd
  4. 09 May, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      scc_info: introduce edges_of() and inner_edges_of() · 8e19d3f4
      Alexandre Duret-Lutz authored
      This is motivated by some upcoming patch by Heňo.
      
      * spot/twaalgos/sccinfo.hh (edges_of, inner_edges_of): New methods.
      * spot/twaalgos/sccinfo.cc, spot/twaalgos/strength.cc: Use them.
      * spot/twa/twagraph.hh (edge_number): Add an overload.
      * python/spot/impl.i: Bind the new methods.
      * tests/python/sccinfo.py: Add tests.
      * NEWS: Mention the changes.
      8e19d3f4
  5. 08 May, 2017 2 commits
    • Alexandre Duret-Lutz's avatar
      simplify: fix related to event_univ handling · 8968bf6c
      Alexandre Duret-Lutz authored
      Fixes #260.  Reported by František Blahoudek.
      
      The simplification F(f)|q = F(f|q), where q designates an event_univ
      formula, was not always applied because of a couple of issue: (1) the
      mospliter was ignoring event_univ unless favor_event_univ was set, (2)
      when processing formulas from res_EventUniv they were not put back
      into res_F or res_G to be subject to the F/G rules.
      
      * spot/tl/simplify.cc: Improve handling of the above points.
      * tests/core/reduccmp.test: Adjust and add test case.
      * tests/core/ltl2tgba2.test, tests/python/atva16-fig2a.ipynb: Adjust.
      8968bf6c
    • Alexandre Duret-Lutz's avatar
      simplify: fix related to event_univ handling · 84595883
      Alexandre Duret-Lutz authored
      Fixes #260.  Reported by František Blahoudek.
      
      The simplification F(f)|q = F(f|q), where q designates an event_univ
      formula, was not always applied because of a couple of issue: (1) the
      mospliter was ignoring event_univ unless favor_event_univ was set, (2)
      when processing formulas from res_EventUniv they were not put back
      into res_F or res_G to be subject to the F/G rules.
      
      * spot/tl/simplify.cc: Improve handling of the above points.
      * tests/core/reduccmp.test: Adjust and add test case.
      * tests/core/ltl2tgba2.test, tests/python/atva16-fig2a.ipynb: Adjust.
      84595883
  6. 05 May, 2017 3 commits
    • Alexandre Duret-Lutz's avatar
      introduce spot::split_edges() · 19aae6f9
      Alexandre Duret-Lutz authored
      Fixes #255.
      
      * spot/twaalgos/split.cc, spot/twaalgos/split.hh,
      tests/core/split.test: New files.
      * spot/twaalgos/Makefile.am, tests/Makefile.am: Add them.
      * bin/autfilt.cc (--split-edges): New option.
      * python/spot/impl.i: Process split.hh.
      * tests/python/alternating.py: Test split_edges() on
      an alternating automaton.
      19aae6f9
    • Alexandre Duret-Lutz's avatar
      twa_graph: honor state-names & product-states in format_state() · e1c14eb9
      Alexandre Duret-Lutz authored
      * spot/twa/twagraph.cc, spot/twa/twagraph.hh (format_state): Honor
      the state-names and product-states properties.
      * tests/python/highlighting.ipynb: Adjust.
      e1c14eb9
    • Alexandre Duret-Lutz's avatar
      twa_graph: introduce copy_state_names_from() · 46d8aaaa
      Alexandre Duret-Lutz authored
      * spot/twa/twagraph.cc, spot/twa/twagraph.hh: Here.  Also
      make sure "original-states" survives defrag_states().
      * NEWS: Mention it.
      * tests/python/origstate.py: New file.
      * tests/Makefile.am: Add it.
      46d8aaaa
  7. 01 May, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      minimize_dfa: use the twa_graph interface · 172bee49
      Alexandre Duret-Lutz authored
      Fixes #233, although more cleanup would be welcome.
      
      * spot/twaalgos/minimize.cc: Replace the uses of twa methods by
      twa_graph methods, and simplify some data structures.
      * tests/core/acc_word.test, tests/core/readsave.test,
      tests/python/automata.ipynb: Adjust changed output due
      to different data structures.
      172bee49
  8. 28 Apr, 2017 5 commits
    • Alexandre Duret-Lutz's avatar
      gen: set more properties in automata · ae78e1d2
      Alexandre Duret-Lutz authored
      * spot/gen/automata.cc: Set more properties.
      * tests/python/gen.py: Check that they are set.
      ae78e1d2
    • Alexandre Duret-Lutz's avatar
      gen: introduce a new automaton family · ec51f976
      Alexandre Duret-Lutz authored
      * spot/gen/automata.cc, spot/gen/automata.hh: Define AUT_L_NBA.
      * bin/genaut.cc (--l-nba): New option.
      * bin/man/genaut.x, doc/org/genaut.org, NEWS: Document it.
      * tests/python/gen.py, tests/core/genaut.test: Test it.
      ec51f976
    • Alexandre Duret-Lutz's avatar
      gen: pass the bdd_dict to aut_pattern() · 649793df
      Alexandre Duret-Lutz authored
      * spot/gen/automata.hh (aut_pattern): Add the dict argument.
      * spot/gen/automata.cc, python/spot/gen.i: Adjust.
      * tests/python/gen.py: Make sure two automata built without
      specifying any dictionary share the same one.
      649793df
    • Alexandre Duret-Lutz's avatar
      gen: hide ks_cobuchi(), introduce aut_pattern() · 11ca2803
      Alexandre Duret-Lutz authored
      * spot/gen/automata.hh, spot/gen/automata.cc: Hide ks_cobuchi() behind
      introduce aut_pattern(), as we have already done for the formulas.
      * bin/genaut.cc: Simplify using this interface.
      * python/spot/gen.i: Introduce aut_patterns().
      * tests/python/gen.ipynb, tests/python/gen.py: Adjust.
      11ca2803
    • Alexandre Duret-Lutz's avatar
      gen: prefix ltl_pattern identifiers with LTL_ · ca7f72bb
      Alexandre Duret-Lutz authored
      This helps with autocompletion in IPython, and it will prevent us from
      mixing LTL patterns with automata patterns (once we have more than one
      automata generator).
      
      * spot/gen/formulas.hh: Here.
      * spot/gen/formulas.cc, bin/genltl.cc, tests/python/gen.ipynb,
      tests/python/gen.py: Adjust.
      ca7f72bb
  9. 26 Apr, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      gen: rename genltl() to ltl_pattern() and introduce ltl_patterns() · 540b9713
      Alexandre Duret-Lutz authored
      * spot/gen/formulas.hh, spot/gen/formulas.cc (genltl): Rename as...
      (ltl_pattern): This.
      (ltl_pattern_max): New function.
      * bin/genltl.cc: Adjust names, and simplify using ltl_pattern_max().
      * python/spot/gen.i (ltl_patterns): New function.
      * tests/python/gen.py: Test it.
      * tests/python/gen.ipynb: New file to document the spot.gen package.
      * tests/Makefile.am, doc/org/tut.org: Add gen.ipynb.
      540b9713
  10. 25 Apr, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      genltl: move all formula generation code to spot/gen/ · 8939e0dd
      Alexandre Duret-Lutz authored
      Fixes #254.
      
      * spot/gen/formulas.cc, spot/gen/formulas.hh: New files.
      * spot/gen/Makefile.am: Add them.
      * spot/Makefile.am: Fix build order.
      * bin/genltl.cc: Move most code to the above files and adjust.
      * bin/Makefile.am: Link genltl with libspotgen.
      * doc/org/arch.tex: Adjust picture to show that genltl uses
      libspotgen.
      * python/spot/gen.i: Include formulas.hh.
      * tests/python/gen.py: Make sure genltl() and ltl_pattern_name()
      can be called.
      8939e0dd
  11. 24 Apr, 2017 1 commit
  12. 23 Apr, 2017 1 commit
  13. 21 Apr, 2017 1 commit
    • Thomas Medioni's avatar
      Implements is_streett_like() and streett_like_pairs(), is_rabin_like... · b428ed31
      Thomas Medioni authored
      Adds the method spot::acc_cond::is_streett_like() that behaves like
      spot::acc_cond::is_streett() except that it works on a wider range
      of acceptance conditions, called Streett-like. Also adds
      spot::acc_cond::streett_like_pairs() that returns a boolean assessing
      whether the acceptance condition is Streett-like and also returns all
      the Streett_like pairs.
      Defines the new struct type spot::acc_cond::rs_pair.
      Similarily, Adds the methods spot::acc_cond::is_rabin_like() and
      spot::acc_cond::rabin_like_pairs().
      
      * NEWS: Mention this modification
      * python/spot/impl.i: Declares the new struct to SWIG, and defines
      the streett_like_pairs() vector as an output parameter, which makes
      the python code return a tuple (boolean, vector) rather than a
      pass-by-reference vector.
      * spot/twa/acc.cc, spot/twa/acc.hh: Declares an implements the new
      methods and the new nested struct.
      * tests/Makefile.am: Add new tests to the suite
      * tests/python/rs_like.py: Tests the new methods and
      the SWIG bindings.
      b428ed31
  14. 20 Apr, 2017 1 commit
    • Thomas Medioni's avatar
      mark_t: sets() no longer returns a vector · cc3bdfcd
      Thomas Medioni authored
      spot::mark_t::sets() was modified so that it now returns an iterable
      object rather than an std::vector<unsigned>.
      
      * NEWS: Mention the modification.
      * python/spot/impl.i: Declares mark_container as iterable to SWIG.
      * spot/parseaut/parseaut.yy: Adapts to the modification.
      * spot/twa/acc.hh: Implement the modification.
      * tests/python/acc_cond.ipynb: Adapts to the modification.
      cc3bdfcd
  15. 07 Apr, 2017 2 commits
    • Thomas Medioni's avatar
      dtwa_complement: deprecated, use dualize() instead. · 152b5d0d
      Thomas Medioni authored
      * NEWS: Mention of the deprecation
      * bench/stutter/stutter_invariance_randomgraph.cc,
        bin/autfilt.cc, bin/ltlcross.cc, spot/twaalgos/langmap.cc,
        spot/twaalgos/minimize.cc, spot/twaalgos/powerset.cc,
        spot/twaalgos/stutter.cc, tests/core/ikwiad.cc,
        tests/python/bugdet.py, tests/python/remfin.py,
        tests/python/sum.py: Refactor calls to dtwa_complement() with calls
        to dualize().
      * doc/org/upgrade2.org: Change mention of dtwa_complement with dualize.
      * spot/twaalgos/complement.hh: Add deprecation notice.
      * python/spot/impl.i: Add deprecation notice for the python bindings.
      152b5d0d
    • Thomas Medioni's avatar
      implement dualize to complement automatons · c9d8d41f
      Thomas Medioni authored
      * NEWS: Mention the implementation
      * python/spot/impl.i: Add dualize() to python interface.
      * spot/twaalgos/Makefile.am: Add dualize.cc,hh to the build
      * spot/twaalgos/dualize.cc: Implement dualize() that takes an automaton
        and returns its dual
      * spot/twaalgos/dualize.hh: Implement dualize()
      * tests/Makefile.am: Add dualize tests to the test suite
      * tests/python/dualize.py: Test cases for dualize
      c9d8d41f
  16. 31 Mar, 2017 1 commit
  17. 29 Mar, 2017 3 commits
    • Alexandre Duret-Lutz's avatar
      python: update some incorrect or obsolete code · f6b73523
      Alexandre Duret-Lutz authored
      * tests/python/ipnbdoctest.py: Use importlib instead of imp.
      * tests/python/ltlparse.py: Fix invalid escape sequence.
      f6b73523
    • Alexandre Duret-Lutz's avatar
      twa_graph: fix purge_unreachable_states on alternating automata · 6623af67
      Alexandre Duret-Lutz authored
      The algorithm had two problems: it was removing only useless
      destination from universal destination (instead of removing the entire
      edge), and it was not properly iterating over the entire reachable
      automaton.
      
      * spot/twa/twagraph.cc: Fix it.
      * spot/twa/twagraph.hh: Adjust documentation.
      * tests/core/alternating.test: Add more tests.
      * tests/python/twagraph.py: Adjust.
      * NEWS: Mention the bug.
      6623af67
    • Alexandre Duret-Lutz's avatar
      twa_graph: fix purge_unreachable_states on alternating automata · f6a238ef
      Alexandre Duret-Lutz authored
      The algorithm had two problems: it was removing only useless
      destination from universal destination (instead of removing the entire
      edge), and it was not properly iterating over the entire reachable
      automaton.
      
      * spot/twa/twagraph.cc: Fix it.
      * spot/twa/twagraph.hh: Adjust documentation.
      * tests/core/alternating.test: Add more tests.
      * tests/python/twagraph.py: Adjust.
      * NEWS: Mention the bug.
      f6a238ef
  18. 27 Mar, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      rename is_deterministic to is_universal · 4a5d7a39
      Alexandre Duret-Lutz authored
      For #212.
      
      * spot/twa/twa.hh: Rename prop_deterministic() as prop_universal(),
      and keep the old name as deprecated.
      * spot/twaalgos/isdet.cc, spot/twaalgos/isdet.hh: Rename
      is_deterministic() as is_universal(), and add a new function
      for is_deterministic().
      * doc/org/concepts.org, doc/org/hoa.org, doc/org/tut21.org,
      spot/tl/hierarchy.cc, spot/twa/twagraph.cc,
      spot/twaalgos/are_isomorphic.cc, spot/twaalgos/determinize.cc,
      spot/twaalgos/dtbasat.cc, spot/twaalgos/dtwasat.cc,
      spot/twaalgos/hoa.cc, spot/twaalgos/minimize.cc,
      spot/twaalgos/postproc.cc, spot/twaalgos/product.cc,
      spot/twaalgos/randomgraph.cc, spot/twaalgos/remfin.cc,
      spot/twaalgos/simulation.cc, spot/twaalgos/totgba.cc,
      spot/twaalgos/word.cc, tests/python/product.ipynb,
      tests/python/remfin.py: Adjust.
      * NEWS: Mention the change.
      4a5d7a39
  19. 22 Mar, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      parsetl: improve coverage · bf31ff12
      Alexandre Duret-Lutz authored
      * spot/parsetl/parsetl.yy: Adjust one diagnostic.
      * spot/parsetl/scantl.ll: Fix recovering of missing closing brace
      in lenient mode.
      * tests/python/ltlparse.py: Add tests.
      * NEWS: Mention the lenient mode bug.
      bf31ff12
  20. 20 Mar, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      twa: add support for prop_complete() · 0de5f50d
      Alexandre Duret-Lutz authored
      * spot/twa/twa.hh: Add support.  Make two constructors for prop_set in
      order to diagnose constructions with 5 arguments.
      * spot/parseaut/parseaut.yy: Adjust diagnostics for complete and
      deterministic.
      * spot/tl/exclusive.cc, spot/twa/twagraph.cc,
      spot/twaalgos/alternation.cc, spot/twaalgos/complete.cc,
      spot/twaalgos/complete.hh, spot/twaalgos/degen.cc,
      spot/twaalgos/determinize.cc, spot/twaalgos/hoa.cc,
      spot/twaalgos/isdet.cc, spot/twaalgos/mask.cc,
      spot/twaalgos/minimize.cc, spot/twaalgos/product.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,
      tests/core/parseaut.test, tests/python/product.ipynb: Adjust.
      * NEWS, doc/org/concepts.org, doc/org/hoa.org,
      doc/org/tut21.org: Document it.
      0de5f50d
  21. 15 Mar, 2017 1 commit
    • Alexandre Duret-Lutz's avatar
      parsetl: improve coverage · 3d3baf44
      Alexandre Duret-Lutz authored
      * spot/parsetl/parsetl.yy: Adjust one diagnostic.
      * spot/parsetl/scantl.ll: Fix recovering of missing closing brace
      in lenient mode.
      * tests/python/declenv.py: Move some tests...
      * tests/python/ltlparse.py: ... here, and add many more.
      * NEWS: Mention the lenient mode bug.
      3d3baf44
  22. 10 Mar, 2017 2 commits
    • Alexandre Duret-Lutz's avatar
      emptiness checks: replace assert-preconditions by exceptions · d6d987bd
      Alexandre Duret-Lutz authored
      * spot/twaalgos/couvreurnew.cc, spot/twaalgos/gv04.cc,
      spot/twaalgos/magic.cc, spot/twaalgos/se05.cc, spot/twaalgos/tau03.cc,
      spot/twaalgos/tau03opt.cc: Throw if precondition on acceptance
      condition is not satisfied.
      * tests/python/misc-ec.py: New file.
      * tests/Makefile.am: Add it.
      * NEWS: Mention the change.
      d6d987bd
    • Alexandre Duret-Lutz's avatar
      emptiness checks: replace assert-preconditions by exceptions · 2e3fc0d4
      Alexandre Duret-Lutz authored
      * spot/twaalgos/couvreurnew.cc, spot/twaalgos/gv04.cc,
      spot/twaalgos/magic.cc, spot/twaalgos/se05.cc, spot/twaalgos/tau03.cc,
      spot/twaalgos/tau03opt.cc: Throw if precondition on acceptance
      condition is not satisfied.
      * tests/python/misc-ec.py: New file.
      * tests/Makefile.am: Add it.
      * NEWS: Mention the change.
      2e3fc0d4
  23. 09 Mar, 2017 2 commits
    • Alexandre Duret-Lutz's avatar
      python: add python bindings for declarative_environment · b81d7e58
      Alexandre Duret-Lutz authored
      * python/spot/impl.i: Here.
      * tests/python/declenv.py: New file.
      * tests/Makefile.am: Add it.
      b81d7e58
    • Thomas Medioni's avatar
      Implement sum(..) and sum_and(..). · 194c1992
      Thomas Medioni authored
      Fixes #231.
      
      * NEWS: Mention of implementation of sum, sum_and.
      * bin/autfilt.cc: Add --sum, --sum-or and --sum-and options.
      * python/spot/impl.i: Add bindings for sum, sum_and.
      * spot/twaalgos/Makefile.am: Add sum.cc, sum.hh.
      * spot/twaalgos/sum.cc: Implement sum, sum_and.
      * spot/twaalgos/sum.hh: Declaration of sum, sum_and.
      * tests/Makefile.am: Add sum tests.
      * tests/core/explsum.test: Test the sum of two automatons,
        false or false, unsatisfied mark propagation, handling of univ.
        transitions.
      * tests/python/sum.py: Check that two automatons that does not
        share their bdd dict are not accepted, then run tests over the
        sum of randomly generated LTL formulas.
      194c1992
  24. 08 Mar, 2017 2 commits
    • Alexandre Duret-Lutz's avatar
      typos: dictionnary -> dictionary · cd89983c
      Alexandre Duret-Lutz authored
      * doc/org/upgrade2.org, tests/python/prodexpt.py,
      tests/python/product.ipynb, NEWS: Fix typos.
      * tests/sanity/style.test: Add a check for this.
      cd89983c
    • Alexandre Duret-Lutz's avatar
      python: add bindings for bdd_to_formula() · d1d3ee38
      Alexandre Duret-Lutz authored
      Follow-up to an email from Ayrat Khalimov.
      
      * python/spot/impl.i: Include twa/formula2bdd.hh.
      * python/spot/__init__.py: Make the dictionnary
      optional.
      * spot/twa/formula2bdd.cc: Throw an exception instead of asserting.
      * tests/python/bdditer.py: New file.
      * tests/Makefile.am: Add it.
      * NEWS: Update.
      d1d3ee38