* src/tgba/tgbabddconcretefactory.cc:
(tgba_bdd_concrete_factory::tgba_bdd_concrete_factory): New. (tgba_bdd_concrete_factory::create_state): Update now_to_next_. (tgba_bdd_concrete_factory::finish): Constraint Next variables in the relation. * src/tgba/tgbabddconcretefactory.hh (tgba_bdd_concrete_factory::now_to_next_): New variable.
This commit is contained in:
parent
cf136e84bd
commit
12f66a3b18
3 changed files with 18 additions and 3 deletions
|
|
@ -3,6 +3,11 @@
|
||||||
#include "tgbabddconcretefactory.hh"
|
#include "tgbabddconcretefactory.hh"
|
||||||
namespace spot
|
namespace spot
|
||||||
{
|
{
|
||||||
|
tgba_bdd_concrete_factory::tgba_bdd_concrete_factory()
|
||||||
|
: now_to_next_(bdd_newpair())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
tgba_bdd_concrete_factory::~tgba_bdd_concrete_factory()
|
tgba_bdd_concrete_factory::~tgba_bdd_concrete_factory()
|
||||||
{
|
{
|
||||||
acc_map_::iterator ai;
|
acc_map_::iterator ai;
|
||||||
|
|
@ -27,6 +32,7 @@ namespace spot
|
||||||
// Record that num+1 should be renamed as num when
|
// Record that num+1 should be renamed as num when
|
||||||
// the next state becomes current.
|
// the next state becomes current.
|
||||||
bdd_setpair(data_.next_to_now, num + 1, num);
|
bdd_setpair(data_.next_to_now, num + 1, num);
|
||||||
|
bdd_setpair(now_to_next_, num, num + 1);
|
||||||
|
|
||||||
// Keep track of all "Now" variables for easy
|
// Keep track of all "Now" variables for easy
|
||||||
// existential quantification.
|
// existential quantification.
|
||||||
|
|
@ -100,6 +106,15 @@ namespace spot
|
||||||
// of this accepting set.
|
// of this accepting set.
|
||||||
data_.accepting_conditions |= ai->second & acc;
|
data_.accepting_conditions |= ai->second & acc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Any constraint between Now variables also exist between Next
|
||||||
|
// variables. Doing this limits the quantity of useless
|
||||||
|
// successors we will have to explore. (By "useless successors"
|
||||||
|
// I mean a combination of Next variables that represent a cul de sac
|
||||||
|
// state: the combination exists but won't allow further exploration
|
||||||
|
// because it fails the constraints.)
|
||||||
|
data_.relation &= bdd_replace(bdd_exist(data_.relation, data_.notnow_set),
|
||||||
|
now_to_next_);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tgba_bdd_core_data&
|
const tgba_bdd_core_data&
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue