* src/tgba/bdddict.cc, src/tgba/bdddict.cc (register_clone_acc):

New function.
* src/tgba/tgbaproduct.cc, src/tgba/tgbaproduct.hh: Use it to
distinguish acceptance conditions that are identical in both
operands.
* src/tgbatest/explpro4.test: New file.
* src/tgbatest/explpro2.test, src/tgbatest/Makefile.am: Adjust.
This commit is contained in:
Alexandre Duret-Lutz 2006-07-19 14:55:39 +00:00
parent cb9549e4d4
commit c412cd4cc3
7 changed files with 129 additions and 21 deletions

View file

@ -54,6 +54,10 @@ namespace spot
fv_map acc_map; ///< Maps acceptance conditions to BDD variables
vf_map acc_formula_map; ///< Maps BDD variables to acceptance conditions
/// Clone counts.
typedef std::map<int, int> cc_map;
cc_map clone_counts;
/// \brief Map Next variables to Now variables.
///
/// Use with BuDDy's bdd_replace() function.
@ -109,6 +113,13 @@ namespace spot
/// to convert this to a BDD.
int register_acceptance_variable(const ltl::formula* f, const void* for_me);
/// \brief Clone an acceptance variable VAR for FOR_ME.
///
/// This is used in products TGBAs when both operands share the
/// same acceptance variables but they need to be distinguished in
/// the result.
int register_clone_acc(int var, const void* for_me);
/// \brief Register BDD variables as acceptance variables.
///
/// Register all variables occurring in \a f as acceptance variables