* src/tgba/tgbabddcoredata.hh (tgba_bdd_core_data::nownext_set):
New attribute. * tgba/tgbabddcoredata.cc, tgba/tgbabddtranslatefactory.cc: Handle nownext_set. * src/tgba/succiterconcrete.cc (tgba_succ_iterator_concrete::next): Use nownext_set to simplify.
This commit is contained in:
parent
2ed074750d
commit
2ea7cbe0f5
5 changed files with 18 additions and 11 deletions
|
|
@ -111,7 +111,7 @@ namespace spot
|
|||
{
|
||||
// AS is false when no transition from ST belongs to
|
||||
// an accepting set. Iterate over ST directly.
|
||||
trans_set_ = bdd_exist(st, data_.now_set & data_.next_set);
|
||||
trans_set_ = bdd_exist(st, data_.nownext_set);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -119,7 +119,7 @@ namespace spot
|
|||
// only work over a set of transitions sharing the
|
||||
// same accepting set.
|
||||
|
||||
as = bdd_exist(as, data_.now_set & data_.next_set);
|
||||
as = bdd_exist(as, data_.nownext_set);
|
||||
// as = (a | (!a)&b) & (Acc[a] | Acc[b]) + (!a & Acc[b])
|
||||
bdd cube = bdd_satone(as);
|
||||
// cube = (!ab & Acc[a])
|
||||
|
|
@ -137,7 +137,7 @@ namespace spot
|
|||
// Pick and remove one satisfaction from trans_set_left_.
|
||||
bdd cube = bdd_satone(trans_set_left_);
|
||||
trans_set_left_ &= !cube;
|
||||
// Let this cube grow as much as possible.
|
||||
// Let this cube grow as much as possible.
|
||||
// (e.g., cube "(!a)&b" taken from "a | (!a)&b" can
|
||||
// be simplified to "b").
|
||||
cube = bdd_simplify(cube, cube | neg_trans_set_);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace spot
|
|||
accepting_conditions(bddfalse),
|
||||
now_set(bddtrue),
|
||||
next_set(bddtrue),
|
||||
negnow_set(bddtrue),
|
||||
nownext_set(bddtrue),
|
||||
notnow_set(bddtrue),
|
||||
notnext_set(bddtrue),
|
||||
var_set(bddtrue),
|
||||
|
|
@ -25,7 +25,7 @@ namespace spot
|
|||
accepting_conditions(copy.accepting_conditions),
|
||||
now_set(copy.now_set),
|
||||
next_set(copy.next_set),
|
||||
negnow_set(copy.negnow_set),
|
||||
nownext_set(copy.nownext_set),
|
||||
notnow_set(copy.notnow_set),
|
||||
notnext_set(copy.notnext_set),
|
||||
var_set(copy.var_set),
|
||||
|
|
@ -46,7 +46,7 @@ namespace spot
|
|||
| right.accepting_conditions),
|
||||
now_set(left.now_set & right.now_set),
|
||||
next_set(left.next_set & right.next_set),
|
||||
negnow_set(left.negnow_set & right.negnow_set),
|
||||
nownext_set(left.nownext_set & right.nownext_set),
|
||||
notnow_set(left.notnow_set & right.notnow_set),
|
||||
notnext_set(left.notnext_set & right.notnext_set),
|
||||
var_set(left.var_set & right.var_set),
|
||||
|
|
@ -80,10 +80,10 @@ namespace spot
|
|||
{
|
||||
now_set &= now;
|
||||
next_set &= next;
|
||||
negnow_set &= !now;
|
||||
notnext_set &= now;
|
||||
notnow_set &= next;
|
||||
bdd both = now & next;
|
||||
nownext_set &= both;
|
||||
notvar_set &= both;
|
||||
notacc_set &= both;
|
||||
varandnext_set &= next;
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ namespace spot
|
|||
bdd now_set;
|
||||
/// The conjunction of all Next variables, in their positive form.
|
||||
bdd next_set;
|
||||
/// The conjunction of all Now variables, in their negated form.
|
||||
bdd negnow_set;
|
||||
/// The conjunction of all Now and Next variables, in their positive form.
|
||||
bdd nownext_set;
|
||||
/// \brief The (positive) conjunction of all variables which are
|
||||
/// not Now variables.
|
||||
bdd notnow_set;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace spot
|
|||
data_.accepting_conditions = bdd_replace(in.accepting_conditions, rewrite);
|
||||
data_.now_set = bdd_replace(in.now_set, rewrite);
|
||||
data_.next_set = bdd_replace(in.next_set, rewrite);
|
||||
data_.negnow_set = bdd_replace(in.negnow_set, rewrite);
|
||||
data_.nownext_set = bdd_replace(in.nownext_set, rewrite);
|
||||
data_.notnow_set = bdd_replace(in.notnow_set, rewrite);
|
||||
data_.notnext_set = bdd_replace(in.notnext_set, rewrite);
|
||||
data_.notvar_set = bdd_replace(in.notvar_set, rewrite);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue