* 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:
parent
cb9549e4d4
commit
c412cd4cc3
7 changed files with 129 additions and 21 deletions
|
|
@ -20,10 +20,14 @@
|
|||
// 02111-1307, USA.
|
||||
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
#include <cassert>
|
||||
#include <ltlvisit/clone.hh>
|
||||
#include <ltlvisit/destroy.hh>
|
||||
#include <ltlvisit/tostring.hh>
|
||||
#include <ltlvisit/tostring.hh>
|
||||
#include <ltlast/atomic_prop.hh>
|
||||
#include <ltlenv/defaultenv.hh>
|
||||
#include "bdddict.hh"
|
||||
|
||||
namespace spot
|
||||
|
|
@ -140,6 +144,24 @@ namespace spot
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
bdd_dict::register_clone_acc(int var, const void* for_me)
|
||||
{
|
||||
vf_map::iterator i = acc_formula_map.find(var);
|
||||
assert(i != acc_formula_map.end());
|
||||
std::ostringstream s;
|
||||
// FIXME: We could be smarter and reuse unused "$n" numbers.
|
||||
s << ltl::to_string(i->second) << "$"
|
||||
<< ++clone_counts[var];
|
||||
ltl::formula* f =
|
||||
ltl::atomic_prop::instance(s.str(),
|
||||
ltl::default_environment::instance());
|
||||
int res = register_acceptance_variable(f, for_me);
|
||||
ltl::destroy(f);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
bdd_dict::register_anonymous_variables(int n, const void* for_me)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue