1. 25 Jul, 2003 1 commit
  2. 15 Jul, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      Homogenize passing of automata as pointers, not references. · 66b1630c
      Alexandre Duret-Lutz authored
      Disallow copy for security.
      
      * src/tgba/tgbabddconcrete.hh (tgba_bdd_concrete): Disallow copy.
      * src/tgba/tgbaexplicit.hh (tgba_explicit): Likewise.
      * src/tgba/tgbaexplicit.cc (tgba_explicit::operator=,
      tgba_explicit::tgba_explicit(tgba_explicit)): Remove.
      * src/tgba/tgbabddconcreteproduct.cc
      (tgba_bdd_concrete_product_factory::tgba_bdd_concrete_product_factory,
      product): Take operand automata as pointers.
      * src/tgba/tgbabddconcreteproduct.hh (product): Likewise.
      * src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh:
      (tgba_product): Disallow copy.
      (tgba_product::tgba_product): Take operand automata as pointers.
      * src/tgbaalgos/dotty.cc (dotty_state, dotty_rec, dotty_reachable):
      Take tgba arguments as pointer.
      * src/tgbaalgos/dotty.hh (dotty_reachable): Likewise.
      * src/tgbaalgos/lbtt.cc (fill_todo, lbtt_reachable): Likewise.
      * src/tgbaalgos/lbtt.hh (lbtt_reachable): Likewise.
      * src/tgbaalgos/ltl2tgba.cc, src/tgbaalgos/ltl2tgba.hh (ltl_to_tgba):
      Likewise.
      * src/tgbaalgos/save.cc (save_rec, tgba_save_reachable): Likewise.
      * src/tgbaalgos/save.hh (save): Likewise.
      * src/tgbatest/explicit.cc, src/tgbatest/explprod.cc,
      src/tgbatest/ltl2tgba.cc, src/tgbatest/ltlprod.cc,
      src/tgbatest/mixprod.cc, src/tgbatest/readsave.cc,
      src/tgbatest/spotlbtt.cc, src/tgbatest/tgbaread.cc,
      src/tgbatest/tripprod.cc: Likewise.
      66b1630c
  3. 14 Jul, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      Before this change, all automata would construct their own · cab3be97
      Alexandre Duret-Lutz authored
      dictionaries (map of BDD variables to LTL formulae).  This was
      cumbersome, because to multiply two automata we had to build a
      common dictionary (the union of the two LTL formula spaces), and
      install wrappers to translate each automaton's BDD answers into
      the common dictionary.  This translation, that had to be repeated
      when several products were nested, was time consuming and was a
      hindrance for some optimizations.
      In the new scheme, all automata involved in a product must
      share the same dictionary.  An empty dictionary should be
      constructed by the user and passed to the automaton' constructors
      as necessary.
      This huge change removes most code than it adds.
      
      * src/Makefile.am (libspot_la_LIBADD): Add misc/libmisc.la.
      * src/misc/bddalloc.hh, src/misc/bddalloc.cc: New files.  These
      partly replace src/tgba/bddfactory.hh and src/tgba/bddfactory.cc.
      * src/misc/Makefile.am: Adjust to build bddalloc.hh and bddalloc.cc.
      * src/tgba/bddfactory.hh, src/tgba/bddfactory.cc,
      src/tgba/dictunion.hh, src/tgba/dictunion.cc,
      src/tgba/tgbabdddict.hh, src/tgba/tgbabdddict.cc,
      src/tgba/tgbabddtranslatefactory.hh,
      src/tgba/tgbabddtranslatefactory.cc,
      src/tgba/tgbatranslateproxy.hh, src/tgba/tgbatranslateproxy.cc:
      Delete.
      * src/tgba/bdddict.hh, src/tgba/bdddict.cc: New files.  These
      replaces tgbabdddict.hh and tgbabdddict.cc, and also part of
      bddfactory.hh and bddfactory.cc.
      * src/tgba/bddprint.cc, src/tgba/bddprint.hh: Adjust to
      use bdd_dict* instead of tgba_bdd_dict&.
      * src/tgba/succiterconcrete.cc (succ_iter_concrete::next()):
      Get next_to_now from the dictionary.
      * src/tgba/tgba.hh (tgba::get_dict): Return a bdd_dict*,
      not a const tgba_bdd_dict*.
      * src/tgba/tgbabddconcrete.cc, src/tgba/tgbabddconcrete.hh:
      Adjust to use the new dictionary, stored in data_.
      * src/tgba/tgbabddconcretefactory.cc,
      src/tgba/tgbabddconcretefactory.hh: Likewise.  Plus
      now_to_next_ is now also stored in the dictionary.
      * src/tgba/tgbabddconcreteproduct.cc: Likewise.  Now
      that both operand share the same product, there is not
      point in using tgba_bdd_translate_factory.
      * src/tgba/tgbabddcoredata.cc, src/tgba/tgbabddcoredata.hh:
      Store a bdd_dict (taken as constructor argument).
      (tgba_bdd_core_data::~tgba_bdd_core_data): Remove.
      (tgba_bdd_core_data::translate): Remove.
      (tgba_bdd_core_data::next_to_now): Remove (now in dict).
      (tgba_bdd_core_data::dict): New pointer.
      * src/tgba/tgbabddfactory.hh: (tgba_bdd_factory::get_dict): Remove.
      * src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh:
      Adjust to use the new dictionary.
      * src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh: Likewise.  Do
      not use tgba_bdd_dict_union and tgba_bdd_translate_proxy anymore.
      * src/tgbaalgos/lbtt.cc, src/tgbaalgos/save.cc: Adjust to
      use bdd_dict* instead of tgba_bdd_dict&.
      * src/tgbaalgos/ltl2tgba.cc, src/tgbaalgos/ltl2tgba.cc: Likewise.
      (ltl_to_tgba): Take a dict argument.
      * src/tgbaparse/public.hh (tgba_parse): Take a dict argument.
      * src/tgbaparse/tgbaparse.yy (tgba_parse): Take a dict argument.
      * src/tgbatest/explicit.cc, src/tgbatest/explprod.cc,
      src/tgbatest/ltlprod.cc, src/tgbatest/mixprod.cc,
      src/tgbatest/readsave.cc, src/tgbatest/spotlbtt.cc,
      src/tgbatest/tgbaread.cc, src/tgbatest/tripprod.cc: Instantiate
      a dictionary, and pass it to the automata' constructors.
      * src/tgbatest/ltl2tgba.cc: Likewise, and remove the -o (defrag)
      option.
      * iface/gspn/gspn.hh (tgba_gspn::tgba_gspn): Take a bdd_dict argument.
      (tgba_gspn::get_dict): Adjust return type.
      * iface/gspn/gspn.cc: Do not use bdd_factory, adjust to
      use the new dictionary instead.
      cab3be97
  4. 08 Jul, 2003 1 commit
  5. 26 Jun, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      * src/tgba/ltl2tgba.hh, src/tgba/ltl2tgba.cc: Move ... · 7fdd7861
      Alexandre Duret-Lutz authored
      * src/tgbaalgos/ltl2tgba.hh, src/tgbaalgos/ltl2tgba.cc: ... here.
      * src/tgba/Makefile.am, src/tgbaalgos/Makefile.am: Adjust.
      * src/tgba/public.hh: Do not include ltl2tgba.hh.
      * src/tgbatests/explprod.cc, src/tgbatests/ltl2tgba.cc,
      src/tgbatests/ltlprod.cc, src/tgbatests/mixprod.cc,
      src/tgbatests/reach.cc, src/tgbatests/tripprod.cc: Adjust inclusions.
      7fdd7861
  6. 25 Jun, 2003 4 commits
  7. 24 Jun, 2003 1 commit
  8. 23 Jun, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      Switch from "promises" to "accepting set". Fix the definitions · 25e6cca4
      Alexandre Duret-Lutz authored
      of these accepting set so that they are really usable.  Provide
      a all_accepting_conditions() method for use in the emptyness
      check, and a neg_accepting_conditions() for products.
      Predeclare TGBA accepting conditions is the i/o.
      
      * src/tgba/bddprint.cc (want_prom): Rename as ...
      (want_prom): ... this.
      (print_handler): Adjust to display Acc[].
      (print_acc_handler, bdd_print_acc): New functions.
      * src/tgba/bddprint.hh (print_acc_handler, bdd_print_acc):
      New functions.
      * src/tgba/succiter.hh (current_promise): Rename as ...
      (current_accepting_conditions): ... this.
      * src/tgba/succiterconcrete.cc (current_state):
      Rename next to now.
      (current_promise): Rename as ...
      (current_accepting_conditions): ... this, and compute
      the accepting conditions.
      * src/tgba/dictunion.cc, src/tgba/ltl2tgba.cc,
      src/tgba/succiterconcrete.hh,
      src/tgba/tgbabddconcretefactory.cc,
      src/tgba/tgbabddcoredata.cc, src/tgba/tgbabddcoredata.hh,
      src/tgba/tgbabdddict.hh, src/tgba/tgbabdddict.cc,
      src/tgba/tgbabddtranslatefactory.cc,
      src/tgbaalgos/dotty.cc: Adjust to new names.
      * src/tgba/tgba.hh (all_accepting_conditions,
      neg_accepting_conditions): New functions.
      * src/tgba/tgbabddconcretefactory.cc: Adjust to new
      names, and record accepting conditions instead of promises.
      * src/tgba/tgbabddcoredata.hh (accepting_conditions,
      all_accepting_conditions, negacc_set): New variables.
      (notnow_set, notprom_set, declare_promise): Rename as ...
      (notnext_set, notacc_set, declare_accepting_condition): ... these.
      * src/tgba/tgbaexplicit.hh
      (tgba_explicit_succ_iterator::current_promise): Rename as ...
      (tgba_explicit_succ_iterator::current_accepting_conditions): ... this.
      (tgba_explicit::add_promise): Rename as ...
      (tgba_explicit::add_accepting_condition): ... this.
      (tgba_explicit::declare_accepting_condition,
      tgba_explicit::has_accepting_condition): New variables.
      (tgba_explicit::get_promise): Rename as ...
      (tgba_explicit::get_accepting_condition): ... this.
      (tgba_explicit::all_accepting_conditions,
      tgba_explicit::neg_accepting_conditions): Implement them.
      (all_accepting_conditions, neg_accepting_conditions,
      all_accepting_conditions): New variables.
      (tgba_explicit_succ_iterator): Embed all_accepting_conditions_.
      * src/tgba/tgbaexplicit.cc: Likewise.
      * src/tgba/tgbaproduct.hh
      (tgba_product_succ_uterator): Embed left_neg_ and right_neg_.
      (tgba_product::all_accepting_conditions,
      tgba_product::neg_accepting_conditions): Implement them.
      * src/tgba/tgbatranslateproxy.hh:
      (tgba_translate_proxy::all_accepting_conditions,
      tgba_translate_proxy::neg_accepting_conditions): Implement them.
      * src/tgba/tgbatranslateproxy.cc: Likewise.
      * src/tgbaalgos/save.cc (save_rec): Call bdd_print
      (tgba_save_reachable): Output the `acc =' line.
      * src/tgbaparse/tgbaparse.yy: Support the for
      accepting conditions definitions using an "acc =" line
      at the start.  Later, use has_accepting_condition while
      parsing	accepting conditions to ensure they were declared.
      Disallow !cond in accepting conditions.
      * src/tgbaparse/tgbascan.ll (ACC_DEF): New token.
      * src/tgbatest/explicit.cc (main): Declare accepting conditions.
      * src/tgbatest/ltl2tgba.cc (main): Add support for the -a, -A,
      and -R new options.
      * src/tgbatest/tgbaread.cc (main): Really exit on parse error.
      * src/tgbatest/explicit.test, src/tgbatest/explprod.test,
      src/tgbatest/mixprod.test, src/tgbatest/readsave.test,
      src/tgbatest/tgbaread.test, src/tgbatest/tripprod.test: Reflect
      recent changes.
      25e6cca4
  9. 19 Jun, 2003 1 commit
  10. 06 Jun, 2003 2 commits
    • Alexandre Duret-Lutz's avatar
      * src/ltlvisit/clone.cc (clone): New const version. · 3991a51a
      Alexandre Duret-Lutz authored
      * src/ltlvisit/clone.hh (clone): Likewise.
      * src/ltlvisit/destroy.cc (destroy): New const version.
      * src/ltlvisit/destroy.hh (destroy): Likewise.
      * src/tgba/tgbabddconcretefactory.cc
      (tgba_bdd_concrete_factory::create_state,
      tgba_bdd_concrete_factory::create_atomic_prop,
      tgba_bdd_concrete_factory::promise): Clone new formulae.
      * src/tgba/tgbabdddict.cc (tgba_bdd_dict::tgba_bdd_dict,
      tgba_bdd_dict::~tgba_bdd_dict, tgba_bdd_dict::operator=): New methods
      that clone and destroy formulae.
      * src/tgbatest/ltl2tgba.test, src/tgbatest/ltl2tgba.cc: New files.
      * src/tgbatest/Makefile.am (check_PROGRAMS): Add ltl2tgba.
      (ltl2tgba_SOURCES): New variable.
      (TESTS): Add ltl2tgba.test.
      3991a51a
    • Alexandre Duret-Lutz's avatar
      * src/ltltest/equals.cc, src/ltltest/readltl.cc, · 578fa26c
      Alexandre Duret-Lutz authored
      src/tgba/bddprint.cc, src/ltltest/tostring.cc: Include <cassert>.
      578fa26c
  11. 05 Jun, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      * configure.ac: Output src/tgbaparse/Makefile. · 6884a7f9
      Alexandre Duret-Lutz authored
      * src/Makefile.am (SUBDIRS): Add tgbaparse.
      (libspot_la_LDADD): Add tgbaparse/libtgbaparse.la.
      * src/tgba/tgbaexplicit.cc (tgba_explicit::get_condition,
      tgba_explicit::get_promise, tgba_explicit::add_neg_condition,
      tgba_explicit::add_neg_promise): New methods.
      * src/tgba/tgbaexplicit.hh: Declare them.
      * src/tgbaparse/Makefile.am, src/tgbaparse/fmterror.cc,
      src/tgbaparse/parsedecl.hh, src/tgbaparse/public.hh,
      src/tgbaparse/tgbaparse.yy, src/tgbaparse/tgbascan.ll,
      src/tgbatest/tgbaread.cc, src/tgbatest/tgbaread.test: New files.
      * src/tgbatest/Makefile.am (check_PROGRAMS): Add tgbaread.
      (TESTS): Add tgbaread.cc.
      (CLEANFILES): Add input.
      (tgbaread_SOURCES): New variable.
      6884a7f9
  12. 16 May, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      * src/ltlvisit/dump.hh (dump): Take a formula* as argument, · 7685d3a5
      Alexandre Duret-Lutz authored
      not a formula&.  This is more homogeneous.
      * src/ltlvisit/dump.cc (dump): Likewise.
      * src/ltlvisit/dotty.hh (dotty): Likewise.
      * src/ltlvisit/dotty.cc (dotty): Likewise.
      * src/ltlvisit/tostring.hh (to_string): Likewise.
      * src/ltlvisit/tostring.cc (to_string): Likewise.
      * src/ltltest/readltl.cc, src/ltltest/equals.cc,
      src/ltltest/tostring.cc: Adjust usage.
      7685d3a5
  13. 15 May, 2003 2 commits
    • Alexandre Duret-Lutz's avatar
      Implements spot::ltl::destroy() and exercise it. · 9123e56f
      Alexandre Duret-Lutz authored
      * src/ltlast/atomic_prop.hh: Declare instance_count().
      * src/ltlast/binop.hh, src/ltlast/unop.hh, src/ltlast/multop.hh:
      Likewise.  Also, really inherit for ref_formula this time.
      * src/ltlast/atomic_prop.cc, src/ltlast/binop.cc,
      src/ltlast/unop.cc, src/ltlast/multop.cc: On destruction, suppress
      the instance from the instance map.  Implement instance_count().
      * src/ltlast/formula.cc, src/ltlast/formula.hh,
      src/ltlast/ref_formula.cc, src/ltlast/ref_formula.hh: Add virtual
      destructors.
      * src/ltlparse/ltlparse.yy: Recover from binary operators with
      missing right hand operand (the point is just to destroy the
      the left hand operand).
      * src/ltltest/equals.cc, src/ltltest/readltl.cc,
      src/ltltest/tostring.cc: Destroy used formulae.  Make sure
      instance_count()s are null are the end.
      * src/ltltest/parseerr.test: Adjust expected result, now
      that the parser lnows about missing right hand operands.
      * src/ltlvisit/destroy.hh, src/ltlvisit/destroy.cc,
      src/ltlvisit/postfix.hh, src/ltlvisit/postfix.cc: New files.
      * src/ltlvisit/Makefile.am (libltlvisit_la_SOURCES): Add them.
      * src/ltlvisit/lunabbrev.cc (Xor, Equiv): Clone formulae
      occurring twice in the rewritten expression.
      9123e56f
    • Alexandre Duret-Lutz's avatar
      Massage the AST so that identical sub-formula share the same · 5f6d8b62
      Alexandre Duret-Lutz authored
      reference-counted formula*.  One can't call constructors for AST
      items anymore, everything need to be acquired through instance()
      class methods.
      
      * src/ltlast/formula.cc, src/ltlast/refformula.cc,
      src/ltlast/refformula.hh: New files.
      * src/ltlast/Makefile.am (libltlast_la_SOURCES): Add them.
      * src/ltlast/atomic_prop.cc, src/ltlast/atomic_prop.hh,
      src/ltlast/unop.cc, src/ltlast/unop.hh,
      src/ltlast/binop.cc, src/ltlast/binop.hh: Make the constructor
      and destructor protected.  Define a static function `instance()'
      to get an instance with specific argument.  Use a map called
      `instances' to store all known instances.  Inherit from
      ref_formula.
      * src/ltlast/constant.hh, src/ltlast/constant.cc: Protect
      the constructor and destructor.  Provide the false_instance()
      and true_instance() functions instead.
      * src/formula.hh (ref, unref, ref_, unref_): New methods.
      * src/ltlast/multop.cc, src/ltlast/multop.hh: Protect
      the constructor, destructor, as well as the add() method.
      Provides the instance(), and add() class methods instead.
      Store children_ as a pointer.
      * src/ltlenv/defaultenv.cc (require): Adjust to
      call atomic_prop::instance.
      * src/ltlparse/ltlparse.yy: Adjust to call instance() functions
      instead of constructors.
      * src/ltltest/Makefile.am (LDADD): Tweak library ordering.
      * src/ltlvisit/clone.hh (clone_visitor): Inherit from visitor,
      not const_visitor, and adjust all prototypes appropriately.
      * src/ltlvisit/clone.cc (clone_visitor): Likewise.
      Call ref() or instance() methods instead of copy constructors.
      * src/ltlvisit/equals.cc: Simplify atomic_prop and constant
      cases.
      * src/ltlvisit/lunabbrev.hh, src/ltlvisit/lunabbrev.cc,
      src/ltlvisit/tunabbrev.hh, src/ltlvisit/tunabbrev.cc,
      src/ltlvisit/nenoform.hh, src/ltlvisit/nenoform.cc: Use instance()
      methods instead of constructor.  Make these children of visitor, not
      const_visitor.
      * src/ltltest/readltl.c (main): Do not delete the formula.
      5f6d8b62
  14. 17 Apr, 2003 2 commits
  15. 16 Apr, 2003 2 commits
  16. 15 Apr, 2003 1 commit
    • Alexandre Duret-Lutz's avatar
      * HACKING, Makefile.am, configure.ac, m4/gccwarn.m4, · f0a8d0ae
      Alexandre Duret-Lutz authored
      src/Makefile.am, src/ltlast/Makefile.am, src/ltlast/allnodes.hh,
      src/ltlast/atomic_prop.cc, src/ltlast/atomic_prop.hh,
      src/ltlast/binop.cc, src/ltlast/binop.hh, src/ltlast/constant.cc,
      src/ltlast/constant.hh, src/ltlast/formulae.hh,
      src/ltlast/multop.cc, src/ltlast/multop.hh, src/ltlast/predecl.hh,
      src/ltlast/unop.cc, src/ltlast/unop.hh, src/ltlast/visitor.hh,
      src/ltlparse/Makefile.am, src/ltlparse/ltlparse.yy,
      src/ltlparse/ltlscan.ll, src/ltlparse/parsedecl.hh,
      src/ltlparse/public.hh, src/ltlvisit/Makefile.am,
      src/ltlvisit/dotty.cc, src/ltlvisit/dotty.hh,
      src/ltlvisit/dump.cc, src/ltlvisit/dump.hh,
      src/ltlvisit/rewrite.cc, src/ltlvisit/rewrite.hh,
      src/ltltest/Makefile.am, src/ltltest/defs.in, src/ltltest/readltl.cc,
      src/ltltest/parse.test, src/ltltest/parseerr.test,
      src/misc/Makefile.am, src/misc/const_sel.hh: New files.
      f0a8d0ae