1. 12 Sep, 2012 1 commit
    • Alexandre Duret-Lutz's avatar
      Add count_nondet_states(aut) and is_deterministic(aut). · 04b5e370
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/isdet.cc, src/tgbaalgos/isdet.hh: New files.
      * src/tgbaalgos/Makefile.am: Add them.
      * wrap/python/spot.i: Wrap them.
      * wrap/python/ajax/spot.in: Display count of nondeterministic
      states.
      * src/tgbatest/ltl2tgba.cc (-kt): Likewise.
      * NEWS: Upadte.
      04b5e370
  2. 28 Aug, 2012 1 commit
    • Alexandre Duret-Lutz's avatar
      Add an option to use WDBA only if it reduces the size of the automaton. · 60ec3ace
      Alexandre Duret-Lutz authored
      * src/tgba/tgbaexplicit.hh (num_states): New method.
      * src/tgbaalgos/minimize.hh, src/tgbaalgos/minimize.cc
      (minimize_obligation): Add a reject_bigger option.
      * src/tgbatest/ltl2tgba.cc (-RM): New option.
      * src/tgbatest/spotlbtt.test: Test -RM.
      * bench/ltl2tgba/algorithms: Include -RM in addition to -Rm, and
      replace -RDS by -RIS.
      * NEWS: Mention this.
      60ec3ace
  3. 21 Aug, 2012 4 commits
    • Alexandre Duret-Lutz's avatar
    • Thomas Badie's avatar
      * src/tgbaalgos/simulation.cc: Fix a bug in the simulation. · 0b74f549
      Thomas Badie authored and Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz committed
      0b74f549
    • Thomas Badie's avatar
      Create the iterated simulations. · a0cce105
      Thomas Badie authored and Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz committed
      * src/tgbaalgos/simulation.cc: Create the iterated_simulations.
      (direct_simulation) Add an attribute "stat" that represents the
      number of states and transitions of the resulting automaton.
      * src/tgbaalgos/simulation.hh: Declare the iterated_simulations.
      * src/tgbatest/spotlbtt.test: Test the iterated_simulations.
      * src/tgbatest/ltl2tgba.cc: Associate the option -RIS to the
      iterated_simulations.
      a0cce105
    • Thomas Badie's avatar
      Create the cosimulation. · 387bace9
      Thomas Badie authored and Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz committed
      * src/tgbaalgos/simulation.cc: Add the cosimulation:
      (acc_compl_automaton) Add a template parameter.
      (acc_compl_automaton::process_link) Add a swap source destination.
      (direct_simulation) Add a template parameter.
      (direct_simulation::compute_sig) Add a flag in the signature to
      know if the state is initial.
      (direct_simulation::build_result) Remove the flag before reading
      the signature.
      Swap source and destination when building the new automaton.
      * src/tgbaalgos/simulation.hh: Declare and document the
      Cosimulation.
      * src/tgbatest/ltl2tgba.cc: Associate the cosimulation with the -RRS
      option.
      * src/tgbatest/spotlbtt.test: Add a test on the cosimulation.
      387bace9
  4. 02 Jul, 2012 1 commit
  5. 20 Jun, 2012 1 commit
  6. 19 Jun, 2012 6 commits
  7. 18 Jun, 2012 1 commit
  8. 06 Jun, 2012 1 commit
  9. 22 May, 2012 1 commit
  10. 20 May, 2012 3 commits
  11. 14 May, 2012 2 commits
    • Alexandre Duret-Lutz's avatar
      FM: collect implied formulae in & arguments; do not to translate them · c5b294c7
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc (implied_subforfmulae): New function.
      (ltl_trad_visitor::visit(const binop*)): Use it.  This is an attempt
      to correct the unoptimal translation of 'Fa & GFa' left by previous
      patch.  It still fails to optimize 'Fa & GF(a&b)', but this is not a
      regression compared to previous version.
      c5b294c7
    • Alexandre Duret-Lutz's avatar
      Faster translation of GFa. · 1b143067
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc: Add a "recurring" mode for the
      translation of the child of G.  This generalizes Couvreur's original
      trick to translate GFa as (a|Prom(a))&X(GFa) without generating an
      intermediate GF(a)&F(a) state that would have to be merged with GF(a)
      latter.  This implementation will also speedup formulas such a G((a U
      b) & (c M d)).  With this patch, translating GF(p1) & GF(p2) &
      ... GF(p20) into a TGBA takes 57s instead of 128s on my computer.
      However it alsos causes some formulas to be translated into larger
      automata that are not immediately reduced (the simulation-reduction is
      needed).  For instance Fa & GFa now has a different signature than
      GFa, so translating 'Fa & GFa' generates two states where is used to
      generate only one.
      1b143067
  12. 12 May, 2012 1 commit
    • Alexandre Duret-Lutz's avatar
      Fix translation of !{r}. · e2f70e72
      Alexandre Duret-Lutz authored
      We need a marked version of !{r} to perform breakpoint unroling.
      
      * src/ltlast/unop.cc, src/ltlast/unop.hh: Declare a NegClosureMarked
      operator.
      * src/ltlvisit/mark.hh, src/ltlvisit/mark.cc,
      src/tgbaalgos/ltl2tgba_fm.cc: Adjust to deal with NegClosureMarked
      and NegClosure as apropriate.
      * src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc,
      src/ltlvisit/tunabbrev.cc, src/tgbaalgos/eltl2tgba_lacim.cc,
      src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_lacim.cc,
      src/tgba/formula2bdd.cc: Deal with NegClosureMarked in the same way as
      we deal with NegClosure.
      * src/tgbatest/ltl2tgba.test: More tests.
      * src/ltltest/kind.test: Adjust.
      * doc/tl/tl.tex: Mention the marked negated closure.
      e2f70e72
  13. 11 May, 2012 1 commit
  14. 07 May, 2012 1 commit
  15. 02 May, 2012 2 commits
    • Alexandre Duret-Lutz's avatar
      Downcase a couple of misnamed class names. · db4693b3
      Alexandre Duret-Lutz authored
      * src/misc/acccompl.hh, src/misc/acccompl.cc (AccCompl): Rename to
      acc_compl.
      * src/tgbaalgos/simulation.cc (AccComplAutomaton, Simulation): Rename
      to acc_compl_automaton and direct_simulation.  At the same time,
      reindent the whole file.
      * src/sanity/style.test: Detect capitalized class names.
      * src/kripke/kripkeexplicit.hh (KripkePrint): Remove useless
      predeclaration.
      * src/tgbaalgos/simulation.hh: Typo in comment.
      db4693b3
    • Alexandre Duret-Lutz's avatar
      Use 'const formula*' instead of 'formula*' everywhere. · bf62d439
      Alexandre Duret-Lutz authored
      The distinction makes no sense since Spot 0.5, where we switched from
      mutable furmulae to immutable formulae.  The difference between
      const_visitor and visitor made no sense either.  They have been merged
      into one: visitor.
      
      * iface/dve2/dve2check.cc, iface/gspn/ltlgspn.cc,
      src/eltlparse/eltlparse.yy, src/eltlparse/public.hh,
      src/evtgbatest/ltl2evtgba.cc, src/kripkeparse/kripkeparse.yy,
      src/ltlast/atomic_prop.cc, src/ltlast/atomic_prop.hh,
      src/ltlast/automatop.cc, src/ltlast/automatop.hh, src/ltlast/binop.cc,
      src/ltlast/binop.hh, src/ltlast/bunop.cc, src/ltlast/bunop.hh,
      src/ltlast/constant.cc, src/ltlast/constant.hh, src/ltlast/formula.cc,
      src/ltlast/formula.hh, src/ltlast/formula_tree.cc,
      src/ltlast/formula_tree.hh, src/ltlast/multop.cc,
      src/ltlast/multop.hh, src/ltlast/predecl.hh, src/ltlast/refformula.cc,
      src/ltlast/refformula.hh, src/ltlast/unop.cc, src/ltlast/unop.hh,
      src/ltlast/visitor.hh, src/ltlenv/declenv.cc, src/ltlenv/declenv.hh,
      src/ltlenv/defaultenv.cc, src/ltlenv/defaultenv.hh,
      src/ltlenv/environment.hh, src/ltlparse/ltlfile.cc,
      src/ltlparse/ltlfile.hh, src/ltlparse/ltlparse.yy,
      src/ltlparse/public.hh, src/ltltest/consterm.cc,
      src/ltltest/equals.cc, src/ltltest/genltl.cc, src/ltltest/kind.cc,
      src/ltltest/length.cc, src/ltltest/randltl.cc, src/ltltest/readltl.cc,
      src/ltltest/reduc.cc, src/ltltest/syntimpl.cc,
      src/ltltest/tostring.cc, src/ltlvisit/apcollect.cc,
      src/ltlvisit/apcollect.hh, src/ltlvisit/clone.cc,
      src/ltlvisit/clone.hh, src/ltlvisit/contain.cc,
      src/ltlvisit/contain.hh, src/ltlvisit/dotty.cc,
      src/ltlvisit/length.cc, src/ltlvisit/lunabbrev.cc,
      src/ltlvisit/lunabbrev.hh, src/ltlvisit/mark.cc, src/ltlvisit/mark.hh,
      src/ltlvisit/nenoform.cc, src/ltlvisit/nenoform.hh,
      src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh,
      src/ltlvisit/randomltl.cc, src/ltlvisit/randomltl.hh,
      src/ltlvisit/reduce.cc, src/ltlvisit/reduce.hh,
      src/ltlvisit/simpfg.cc, src/ltlvisit/simpfg.hh,
      src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh,
      src/ltlvisit/snf.cc, src/ltlvisit/snf.hh, src/ltlvisit/tostring.cc,
      src/ltlvisit/tunabbrev.cc, src/ltlvisit/tunabbrev.hh,
      src/ltlvisit/wmunabbrev.cc, src/ltlvisit/wmunabbrev.hh,
      src/neverparse/neverclaimparse.yy, src/sabatest/sabacomplementtgba.cc,
      src/tgba/bdddict.cc, src/tgba/formula2bdd.cc, src/tgba/taatgba.cc,
      src/tgba/taatgba.hh, src/tgbaalgos/eltl2tgba_lacim.cc,
      src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_fm.cc,
      src/tgbaalgos/ltl2tgba_lacim.cc, src/tgbaalgos/minimize.cc,
      src/tgbaalgos/randomgraph.cc, src/tgbaparse/tgbaparse.yy,
      src/tgbatest/complementation.cc, src/tgbatest/ltl2tgba.cc,
      src/tgbatest/ltlprod.cc, src/tgbatest/mixprod.cc,
      src/tgbatest/randtgba.cc: Massive adjustment!
      * src/tgbatest/reductgba.cc: Delete.
      bf62d439
  16. 30 Apr, 2012 4 commits
  17. 28 Apr, 2012 9 commits
    • Alexandre Duret-Lutz's avatar
      Introduce AndRat and OrRat operator. · 691119c1
      Alexandre Duret-Lutz authored
      It was a mistake to try to overload And/Or LTL operator for these when
      trivial simplification are performed.  The reason is so simple it is
      embarassing: And(f,1)=f is a trivial identity that should not be
      applied with AndRat.  E.g. AndRat(a;b, 1) is equal to 0, not a;b.
      
      * src/ltlast/multop.hh, src/ltlast/multop.cc: Add the AndRat and OrRat
      operators.
      * src/ltlparse/ltlparse.yy: Build them.
      * src/ltlvisit/mark.cc, src/ltlvisit/simplify.cc,
      src/ltlvisit/tostring.cc, src/tgba/formula2bdd.cc,
      src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/ltl2taa.cc,
      src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc:
      Adjust all switches.
      691119c1
    • Alexandre Duret-Lutz's avatar
      Fix translation of AndNLM and Fusion operators. · f7c64060
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc: Here.
      The check is done by next patch.
      f7c64060
    • Alexandre Duret-Lutz's avatar
      Get rid of bunop::Equal and bunop::Goto. · abaf1027
      Alexandre Duret-Lutz authored
      * src/ltlast/bunop.hh, src/ltlast/bunop.cc, src/ltlvisit/randomltl.cc,
      src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc,
      src/tgbaalgos/ltl2tgba_fm.cc: Remove all traces of these two
      operators since they are not handled like sugar.
      * doc/tl/tl.tex: Adjust documentation to reflect the fact that these
      two operators are sugar.
      abaf1027
    • Alexandre Duret-Lutz's avatar
      Remove a dynamic_cast. · 77543842
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc (translate_ratexp): Replace
      a dynamic cast by a call to kind().
      77543842
    • Alexandre Duret-Lutz's avatar
      Speedup mark_concat_ops() and simplify_mark() with a cache. · 0f11e5fe
      Alexandre Duret-Lutz authored
      * src/ltlvisit/mark.hh, src/ltlvisit/mark.cc (mark_concat_ops,
      simplify_mark): Rewrite these two functions as methods of
      (mark_tools): this new class.
      * src/ltlast/binop.cc, src/ltlast/unop.cc: Adjust computation
      of not_marked to ignore marked operators that are not at
      the top-level.  I.e., something like X(!{a}) is not marked.
      * src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::mt): New
      instance of mark_tools.
      (formula_canonizer::translate) Adjust calls to
      mark_concat_ops() and simplify_mark().
      0f11e5fe
    • Alexandre Duret-Lutz's avatar
      Ignore sub-"SERE" that have been proved useless already. · 098e121a
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc (ratexp_to_dfa::translate): Do not
      translate a subformula if we have already proved it useless in
      a previous rational expression.
      * src/tgbatest/ltl2tgba.test: Add an example, although that
      test does not ensure the subformula is ignored early in the
      translation.  I.e., it would still work without the patch.
      098e121a
    • Alexandre Duret-Lutz's avatar
      Speedup construction of transitions in ltl_to_tgba_fm. · 4ba60dad
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc (ratexp_to_dfa::translate,
      ltl_to_tgba_fm): Do not convert labels as Boolean formulas before
      creating transitions.  Use the bdd directly, and register the used
      transitions later.
      4ba60dad
    • Alexandre Duret-Lutz's avatar
      Reuse Boolean->BDD translations performed during simplification. · b67852a5
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::ltl_to_bdd):
      Use boolean_to_bdd()
      b67852a5
    • Alexandre Duret-Lutz's avatar
      Cache the LTL->BDD translation for every subformulae. · f590ca4e
      Alexandre Duret-Lutz authored
      We used to cache it only for formulas used as states.
      
      * src/tgbaalgos/ltl2tgba_fm.cc (translate_dict::ltl_to_bdd): New method.
      (ltl_trad_visitor::recurse): Use ltl_to_bdd().
      (formula_canonizer): Likewise.
      (ltl_to_tgba_fm): Adjust.
      f590ca4e