1. 08 Sep, 2013 4 commits
    • Alexandre Duret-Lutz's avatar
      sat: generalize the code for reading the solution · 90c106f8
      Alexandre Duret-Lutz authored
      * src/misc/satsolver.cc, src/misc/satsolver.hh (satsolver_get_solution):
      New function, that accepts a solution split on multiple 'v ' lines.
      * src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc (get_solution):
      Remove, and adjust existing code to use satsolver_get_solution().
      * src/tgbatest/readsat.cc, src/tgbatest/readsat.test: New files.
      * src/tgbatest/Makefile.am: Add them.
      * src/bin/man/spot-x.x: Mention the SAT competition rules for
      the expected input/output format.
      90c106f8
    • Alexandre Duret-Lutz's avatar
      postproc: Add option to output Complete automata. · 1ab46b08
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: Tweak set_pref()
      to also accept Any|Complete, Small|Complete, or Deterministic|Complete.
      * src/bin/common_post.hh, src/bin/common_post.cc: Add option --complete
      and set comp.
      * src/bin/dstar2tgba.cc, src/bin/ltl2tgba.cc, src/bin/ltl2tgta.cc: Pass
      comp to set_pref().
      * src/tgbaalgos/complete.cc: Preserve state-based acceptance.
      * src/tgbatest/dstar.test, src/tgbatest/ltlcross2.test,
      src/tgbatest/nondet.test: Augment tests.
      * doc/org/dstar2tgba.org, doc/org/ltl2tgba.org, NEWS: Document.
      1ab46b08
    • Alexandre Duret-Lutz's avatar
      rename dba_complement() to dtgba_complement() · 7a7ed8a6
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dbacomp.cc, src/tgbaalgos/dbacomp.hh
      (dba_complement): Rename to...
      * src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/dtgbacomp.hh
      (dtgba_complement): ... this.
      * src/tgbaalgos/minimize.cc, src/tgbaalgos/powerset.cc,
      src/tgbatest/ltl2tgba.cc, src/bin/ltlcross.cc,
      src/tgbaalgos/Makefile.am: Adjust to name change.
      7a7ed8a6
    • Alexandre Duret-Lutz's avatar
      satmin: cleanup interfaces and minimization loops · fdb157bf
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh:
      (dtba_sat_minimize): Split into...
      (dtba_sat_synthetize, dtba_sat_minimize): These.
      (dtba_sat_minimize_dichotomy): New function.
      * src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh
      (dtgba_sat_minimize, dtgba_sat_synthetize): Likewise.
      * src/tgbatest/ltl2tgba.cc: Adjust to new interface.
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh:
      Cleanup option processing for SAT options.
      * src/tgbatest/satmin.test: Adjust.
      * src/bin/spot-x.cc, src/bin/man/spot-x.x, NEWS: Document.
      fdb157bf
  2. 26 Aug, 2013 14 commits
    • Alexandre Duret-Lutz's avatar
      isdet: simplify is_deterministic(), add is_complete(). · 4dd8d802
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/isdet.cc: Simplify determinism check.
      * src/tgbaalgos/isdet.hh, src/tgbaalgos/isdet.cc (is_complete): New
      function.
      * src/tgbaalgos/stats.cc, src/tgbaalgos/stats.hh, src/bin/dstar2tgba.cc
      src/bin/ltl2tgba.cc: Add escape sequence %p to the possible statistics
      to show whether an automaton is complete.
      * src/tgbatest/nondet.test: Add a couple more tests.
      4dd8d802
    • Alexandre Duret-Lutz's avatar
      sat: improve our algorithms · bcd794c6
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh:
      Rename dba_sat_minimize to dtba_sat_minimize.
      Make it possible to produce state-based automata, and do
      not output useless clauses.
      * src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh:
      likewise, but also add the possibility to set the
      target number of states, as in dtba_sat_minimize.
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh:
      Add new options for state-based computations and
      setting acceptance and states number when using
      dtgba_sat_minimize().
      * src/tgbatest/ltl2tgba.cc: Adjust calls to
      dtba_sat_minimize().
      * src/tgbatest/satmin.test: Adjust calls.
      bcd794c6
    • Alexandre Duret-Lutz's avatar
      minimize_obligation: can complement the input TGBA if deterministic · 2dda2c91
      Alexandre Duret-Lutz authored
      This makes dstar2tgba able to produce a minimal WDBA when the input DRA
      represent an obligation property.
      
      * src/tgbaalgos/minimize.cc (minimize_obligation): When the
      formula is not supplied but the input automaton is deterministic,
      complement it to check the result of WDBA minimization.
      * src/tgbatest/ltl2dstar.test, src/tgbatest/ltl2dstar2.test: Improve
      tests.
      2dda2c91
    • Alexandre Duret-Lutz's avatar
      Implement dtgba_sat_minimize(). · 679df4ee
      Alexandre Duret-Lutz authored
      Joint work with Soheib Baarir.
      
      * src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/dtgbasat.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh: Add
      a dtgba-sat-minimize option.
      * src/tgbatest/ltl2tgba.cc: Add option -RG.
      * src/tgbatest/satmin.test: Add more tests.
      679df4ee
    • Alexandre Duret-Lutz's avatar
      Add some test of the SAT-based minimization. · 84dabae3
      Alexandre Duret-Lutz authored
      * src/tgbatest/satmin.test: New file.
      * src/tgbatest/Makefile.am: Add it.
      84dabae3
    • Alexandre Duret-Lutz's avatar
      dtbasat: implement dba_sat_minimize() · d9f3ca71
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtbasat.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * src/tgbatest/ltl2tgba.cc: Add option -RS.
      d9f3ca71
    • Alexandre Duret-Lutz's avatar
      dbacomp: connect only back-links and generalize to tgba · 78e76eb0
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/dbacomp.cc: Here.
      * src/tgbaalgos/dbacomp.hh: Adjust documentation.
      * src/tgbatest/dbacomp.test: New file.
      * src/tgbatest/Makefile.am (TESTS): Add it.
      * src/tgbatest/det.test: Update.
      78e76eb0
    • Alexandre Duret-Lutz's avatar
      tba_determinize: add a cycle_threshold · 63b7cdb6
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh
      (tba_determinize, tba_determinize_check): Add a cycle_threshold
      argument.
      * src/tgbaalgos/postproc.cc: Use it.
      * src/tgbatest/ltl2tgba.cc: Adjust calls.
      63b7cdb6
    • Alexandre Duret-Lutz's avatar
      postproc: use tba_determinize_check() · 0117fc2c
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/postproc.cc: Use tba_determinize_check()
      if option "tba-det" is set.
      * src/tgbaalgos/postproc.hh (tba_determinize_): New attribute.
      * src/tgbatest/det.test: New file.
      * src/tgbatest/Makefile.am (TESTS): Add it.
      0117fc2c
    • Alexandre Duret-Lutz's avatar
      dba_determinize: Add a threshold argument. · 07ab225c
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh
      (dba_determinize, dba_determinize_check): Add a threshold
      argument.
      * src/tgbatest/ltl2tgba.cc (-O, -RQ): Accept a threshold
      argument.
      07ab225c
    • Alexandre Duret-Lutz's avatar
      Implement tba_determinize_check(), following Dax et al. (ATVA'07). · 4ac6468b
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/powerset.cc, src/tgbaalgos/powerset.hh
      (tba_determinize_check): New function.
      * src/tgbatest/ltl2tgba.cc (-O): Use it.
      4ac6468b
    • Alexandre Duret-Lutz's avatar
      Introduce a dba_complement() function. · bd2e78c1
      Alexandre Duret-Lutz authored
      Loosely based on "Complementing Deterministic Büchi Automata in
      Polynomial Time", R. P. Kurshan, 1987, J. Comp. Syst. Sci. 35.
      
      * src/tgbaalgos/dbacomp.cc, src/tgbaalgos/dbacomp.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * src/tgbatest/ltl2tgba.cc (-DC): New option to test it.
      bd2e78c1
    • Alexandre Duret-Lutz's avatar
      Implementent tba_determinize(), based on Dax et al (ATVA'07). · ec5bbf4f
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/powerset.hh,
      src/tgbaalgos/powerset.cc (tba_determinize): New function.
      * src/tgbatest/ltl2tgba.cc (-RQ): New option, for testing.
      ec5bbf4f
    • Alexandre Duret-Lutz's avatar
      reachiter: fix the DFS, and add a version with on_stack() · 29bc087d
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/reachiter.hh, src/tgbaalgos/reachiter.cc: Fix the
      tgba_reachable_iterator_depth_first implementation by not making
      inheriting from tgba_reachable_iterator.  Add a
      tgba_reachable_iterator_depth_first_stack
      * src/tgbatest/sim.test, src/tgbatest/dstar.test: Adjust.
      29bc087d
  3. 23 Aug, 2013 8 commits
    • Alexandre Duret-Lutz's avatar
      dstar2tgba: new command. · d3b81809
      Alexandre Duret-Lutz authored
      * src/bin/dstar2tgba.cc, src/bin/man/dstar2tgba.x: New files.
      * src/bin/Makefile.am, src/bin/man/Makefile.am: Add them.
      * NEWS: Mention it.
      * src/bin/ltl2tgba.cc, src/tgbaalgos/stats.cc, doc/org/ltl2tgba.org:
      Rename the %S sequence as %c, for consistency with dstar2tgba.
      * src/tgbatest/ltl2dstar.test: Add more tests.
      * src/tgbatest/ltl2dstar2.test: New file.
      * src/tgbatest/Makefile.am: Add it.
      d3b81809
    • Alexandre Duret-Lutz's avatar
      dstar: implement dra_to_dba() · 9a7590a6
      Alexandre Duret-Lutz authored
      This is an implementation of Krishnan's ISAAC'94 paper to convert
      deterministic Rabin automata into DBA when possible.
      
      * src/dstarparse/dra2dba.cc: New file.
      * src/dstarparse/dstar2tgba.cc: New file.
      * src/dstarparse/Makefile.am: Add them.
      * src/dstarparse/nra2nba.cc (nra_to_nba): Adjust so
      that dra_to_dba() can call it using a masked automaton.
      * src/dstarparse/public.hh (dra_to_dba, dstar_to_tgba): Declare.
      * src/tgbatest/ltl2tgba.cc: Add an -XDD option.
      * src/tgbatest/dstar.test: More tests.
      9a7590a6
    • Alexandre Duret-Lutz's avatar
      Introduce some masked tgba. · ce0aec60
      Alexandre Duret-Lutz authored
      * src/tgba/tgbamask.cc, src/tgba/tgbamask.hh,
      src/tgba/tgbaproxy.cc, src/tgba/tgbaproxy.hh: New files.
      * src/tgba/Makefile.am: Add them.
      * src/tgbatest/explicit3.cc, src/tgbatest/explicit3.test:
      New files.
      * src/tgbatest/Makefile.am: Add them.
      ce0aec60
    • Alexandre Duret-Lutz's avatar
    • Alexandre Duret-Lutz's avatar
      ltlcross: add support for ltl2dstar's output. · 337aeefc
      Alexandre Duret-Lutz authored
      * src/bin/ltlcross.cc: Add support for %D.
      * src/bin/man/ltlcross.x: Add example.
      * NEWS: Mention it.
      * src/tgbatest/ltl2dstar.test: New file.
      * src/tgbatest/Makefile.am: Add it.
      337aeefc
    • Alexandre Duret-Lutz's avatar
      dstarparse: Preliminary work on a parser for ltl2dstar. · 2da0053c
      Alexandre Duret-Lutz authored
      Supports reading Rabin and Streett automata, and converting them to
      nondeterministic Büchi automata (for Rabin) or TGBA (for Streett).
      
      * src/dstarparse/Makefile.am, src/dstarparse/dstarparse.yy,
      src/dstarparse/dstarscan.ll, src/dstarparse/fmterror.cc,
      src/dstarparse/parsedecl.hh, src/dstarparse/public.hh,
      src/dstarparse/nra2nba.cc, src/dstarparse/nsa2tgba.cc: New files.
      * configure.ac, src/Makefile.am, README: Adjust.
      * src/tgbatest/ltl2tgba.cc: Add options -XD, -XDB.
      * src/tgbatest/dstar.test: New file.
      * src/tgbatest/Makefile.am (TESTS): Add it.
      2da0053c
    • Alexandre Duret-Lutz's avatar
      bitvect: implement a dynamic bit-vector class. · 5a3b1a99
      Alexandre Duret-Lutz authored
      * src/misc/bitvect.cc, src/misc/bitvect.hh: New files.
      * src/misc/Makefile.am: Add them.
      * src/tgbatest/bitvect.cc, src/tgbatest/bitvect.test: New files.
      * src/tgbatest/Makefile.am: Add them.
      5a3b1a99
    • Alexandre Duret-Lutz's avatar
      degen: Improve when initial state is accepting without self-loop. · dfc5ff95
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/degen.cc: Choose the initial level according
      to acceptance condition common to all outgoing transitions.
      * src/tgbatest/degenid.test: Add test case.
      * NEWS: Mention it.
      dfc5ff95
  4. 29 Jul, 2013 2 commits
    • Alexandre Duret-Lutz's avatar
      ltlcross: give an example of accepted word for nonempty cross-products · e7522056
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/word.cc, src/tgbaalgos/word.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * src/tgbatest/ltlcrossce.test: New file.
      * src/tgbatest/Makefile.am: Add it.
      * src/bin/ltlcross.cc: Compute and display an accepted word
      for nonempty cross-products.
      * NEWS, doc/org/ltlcross.org: Document it.
      e7522056
    • Alexandre Duret-Lutz's avatar
      Fix interpretation of {e[*]} and !{e[*]}. · cb7bdf8c
      Alexandre Duret-Lutz authored
      This follows from a discussion with Ernesto Posse.
      
      The semantics for the {...} operator we use in Spot comes from the
      cl(...) operator defined by Dax et al. (ATVA'09).  This is slightly
      different from the the way the PSL spec interprets a SERE used in the
      context of a temporal formula (appendix B.3.1.1.2, item 7).
      
      cl({a;b}[*]) would match any infinite word that starts with a;b, while
      in PSL {a;b}[*] would match any infinite word that alternates a and b.
      
      Spot documents that {SERE} in a temporal formula is interpreted like
      cl(SERE) however it failed to ignore the empty prefix of SERE.  So
      {{a;b}[*]} would match anything, because the empty word is a prefix of
      any word, and is also accepted by {a;b}[*].  Some trivial identities
      and basic rewritings were also wrongly considering these empty
      prefixes as well.
      
      This patch therefore fixes the translation and syntactic
      simplification rules, to really ignore these empty prefixes.
      
      In some future version it should probably be wise to rename this {...}
      operator as cl(...), and use {...} for the semantics given in appendix
      B.3.1.1.2 (item 7) of the PSL specs.
      
      * src/ltlast/unop.cc: Fix trivial identities.  We have
      {[*0]} = 0 and !{[*0]} = 1.
      * src/ltlvisit/simplify.cc: Fix basic rewriting rules.
      {e[*]} = {e} and !{e[*]} = !{e}.
      * doc/tl/tl.tex: Adjust documentation.
      * doc/tl/tl.bib (dax.09.atva): New entry.
      * src/tgbaalgos/ltl2tgba_fm.cc: Do not accept any
      infinite word for {e[*]} just because the empty
      prefix is matched by e[*].
      * src/tgbatest/ltl2tgba.test: Add a test case.
      * NEWS: Mention it.
      * THANKS: Add Ernesto.
      cb7bdf8c
  5. 26 Jul, 2013 1 commit
  6. 20 Jul, 2013 1 commit
    • Alexandre Duret-Lutz's avatar
      neverpase: fix parsing of neverclaim produced by ltl2ba and ltl3ba · 84c9f037
      Alexandre Duret-Lutz authored
      These translator may output guards such as (a) || (b), but with the
      changes in Spot 1.1.3 it would only work with ((a) || (b)).
      
      Furthermore when ltlcross would fail to parse a neverclaim containing
      such a guard, it would fail to parse all later neverclaims, because
      the lexer was not properly reset.
      
      * src/neverparse/neverclaimscan.ll: Scan (a) || (b) as a single
      token.
      (neverclaimyyopen): Reset the lexer.
      * src/tgbatest/neverclaimread.test: Add a test for (a) || (b).
      * NEWS: Update.
      84c9f037
  7. 09 Jul, 2013 1 commit
  8. 19 Jun, 2013 1 commit
    • Alexandre Duret-Lutz's avatar
      Fix "BDD Error" in scc_filter(). · fc5d4e1a
      Alexandre Duret-Lutz authored
      If all the acceptance set of an SCC but the first one were useless, the
      scc_filter() algorithm could abort with a BDD error because of a bug in
      the logic.
      
      * src/tgbaalgos/sccfilter.cc (scc_filter): Fix.
      * src/tgbatest/sccsimpl.test: Add a test case supplied by Étienne
      Renault.
      fc5d4e1a
  9. 12 May, 2013 2 commits
    • Alexandre Duret-Lutz's avatar
      ltlcross: add a --products=N option · 9b82d755
      Alexandre Duret-Lutz authored
      * src/bin/ltlcross.cc: Implement the new option.  Average the product
      statistics on all products.
      * src/tgbatest/basimul.test, src/tgbatest/ltlcross.test,
      src/tgbatest/ltlcross2.test, bench/ltl2tgba/tools: Use the new option.
      * NEWS: Mention it.
      9b82d755
    • Alexandre Duret-Lutz's avatar
      simulation: Fix co-simulation and iterated simulations of BA automata · 0c7c9338
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/simulation.hh, src/tgbaalgos/simulation.cc
      (simulation_sba, cosimulation_sba, iterated_simulations_sba): New
      function.  Also speedup the existing functions by avoiding
      add_acceptince_conditions() and add_conditions().  Finally, use
      scc_filter_states() when dealing with degeneralized automata.
      * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh (do_ba_simul):
      New method.  Use it after degeneralization.
      * src/tgba/tgbaexplicit.hh (get_transition, get_state): New methods.
      * src/tgbatest/basimul.test: New file.
      * src/tgbatest/Makefile.am (TESTS): Add it.
      * NEWS: Introduce the new function and summarize the bug.
      0c7c9338
  10. 09 May, 2013 1 commit
    • Alexandre Duret-Lutz's avatar
      lbtt: improve the LBTT output · eed7e2df
      Alexandre Duret-Lutz authored
      Provide a way to output automata with state-based acceptance.  Also
      print the guards using to_lbt_string() for consistency: as a
      consequence, atomic proposition that do not match p[0-9]+ are now
      double-quoted.
      
      * src/tgbaalgos/lbtt.hh (lbtt_reachable): Add a sba option.
      * src/tgbaalgos/lbtt.cc: Implement it, and use to_lbt_string().
      * src/ltlvisit/lbt.cc (is_pnum): Reject 'p' without number.
      * src/bin/ltl2tgba.cc: Activate the sba option of --ba was given.
      Add an option --lbtt=t to get the old behavior.
      * src/bin/man/ltl2tgba.x: Document the LBTT format we use with
      some links and examples.
      * src/tgbatest/lbttparse.test: More tests.
      * src/tgbatest/ltlcross2.test: Add a check with --lbtt --ba.
      * NEWS: Update.
      eed7e2df
  11. 27 Apr, 2013 5 commits
    • Etienne Renault's avatar
      Fix Warning GCC 4.8 · b4fbbc95
      Etienne Renault authored and Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz committed
      * src/tgbatest/taatgba.cc: Remove unused typedef
      b4fbbc95
    • Alexandre Duret-Lutz's avatar
      Implement a favor_even_univ option in the rewriting rules. · 9caa9ad1
      Alexandre Duret-Lutz authored
      The set of rules enabled by favor_even_univ try to "lift" the
      subformulae that are both eventual and universal, so they appear
      higher in the AST.  This is contrary to what we used to do (and still
      do when the option is unset), were we try to postpone such subformulae
      (by moving them down the AST).  It is still a bit experimental.
      
      * src/ltlvisit/simplify.hh: Add option favor_event_univ.
      * src/ltlvisit/simplify.cc: Implement new rewriting rules.
      * doc/tl/tl.tex: Document them.
      * src/tgbatest/ltl2tgba.cc: Add option -ra to enable them.
      * src/tgbatest/spotlbtt.test: Test the translation with this option.
      * src/ltltest/reduc.cc, src/ltltest/equals.cc: Add option
      to enable the new rules.
      * src/ltltest/eventuniv.test: New file to test them.
      * src/ltltest/Makefile.am: Add it.
      9caa9ad1
    • Alexandre Duret-Lutz's avatar
      translate: use compositional suspension on request · b6d4806d
      Alexandre Duret-Lutz authored
      This has to be turned on using "-x comp-susp" and other
      related options documented in spot-x (7).
      
      * src/tgbaalgos/translate.hh, src/tgbaalgos/translate.cc:
      Add support for calling composition-suspension, with
      optional simulation, WDBA-minimization, and composition.
      * src/bin/spot-x.cc: Document the new options.
      * src/bin/man/spot-x.x: Add some bibliography.
      * src/tgbatest/ltlcross2.test: Test it.
      b6d4806d
    • Alexandre Duret-Lutz's avatar
      scc_filter: Improve selection of missing acceptance sets. · 88cd376d
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/sccfilter.cc: Reuse existing acceptance set as filler
      in SCC sets that need less SCC sets than the other SCCs automaton.
      * src/tgbatest/sccsimpl.test: Add more tests.
      88cd376d
    • Alexandre Duret-Lutz's avatar
      Introduce compositional suspension (SPIN'13) · 53c69235
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/compsusp.cc, src/tgbaalgos/compsusp.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * src/tgbaalgos/sccfilter.cc, src/tgbaalgos/sccfilter.hh: Add option
      for suspended labels removal.
      * src/tgbatest/ltl2tgba.cc, src/tgbatest/spotlbtt.test: Test it.
      53c69235