tgba: move boolean properties from tgba_digraph to tgba

* src/tgba/tgbagraph.hh: Remove the set_bprop/get_bprop interface.
* src/tgba/tgba.cc, src/tgba/tgba.hh: Add a new interface for
setting/querying/copying the following properties: single_acc_set,
state_based_acc, inherently_weak, deterministic.
* src/dstarparse/dra2ba.cc, src/dstarparse/nra2nba.cc,
src/neverparse/neverclaimparse.yy, src/saba/sabacomplementtgba.cc,
src/tgba/tgbagraph.cc, src/tgbaalgos/degen.cc, src/tgbaalgos/dotty.cc,
src/tgbaalgos/isdet.cc, src/tgbaalgos/lbtt.cc,
src/tgbaalgos/minimize.cc, src/tgbaalgos/neverclaim.cc,
src/tgbaalgos/postproc.cc, src/tgbaalgos/sccfilter.cc,
src/tgbaalgos/simulation.cc, src/tgbatest/degenlskip.test,
src/tgbatest/ltl2tgba.cc: Adjust to the new interface, or use
it to bypass some useless work.
This commit is contained in:
Alexandre Duret-Lutz 2014-08-15 16:10:39 +02:00
parent e3b5119f25
commit b43f75e917
19 changed files with 160 additions and 87 deletions

View file

@ -526,15 +526,6 @@ namespace spot
}
}
bool result_is_deterministic() const
{
assert(stat.states != 0);
return res_is_deterministic;
}
// Build the minimal resulting automaton.
tgba_digraph_ptr build_result()
{
@ -550,7 +541,7 @@ namespace spot
res->copy_ap_of(a_);
res->set_acceptance_conditions(all_acceptance_conditions_);
if (Sba)
res->set_bprop(tgba_digraph::StateBasedAcc);
res->prop_state_based_acc();
bdd sup_all_acc = bdd_support(all_acceptance_conditions_);
// Non atomic propositions variables (= acc and class)
@ -691,7 +682,15 @@ namespace spot
}
delete gb;
res_is_deterministic = nb_minato == nb_satoneset;
res->prop_copy(original_,
false, // state-based acc forced below
false, // single acc is set by set_acceptance_conditions
true, // weakness preserved,
false); // determinism checked and set below
if (nb_minato == nb_satoneset)
res->prop_deterministic();
if (Sba)
res->prop_state_based_acc();
return res;
}
@ -779,8 +778,6 @@ namespace spot
const_tgba_ptr original_;
bdd all_acceptance_conditions_;
bool res_is_deterministic;
};
// For now, we don't try to handle cosimulation.
@ -1267,7 +1264,6 @@ namespace spot
{
min = tmp;
min_size_ = cur_size;
res_is_deterministic = dir_sim.result_is_deterministic();
}
}
@ -1342,7 +1338,7 @@ namespace spot
prev = next;
direct_simulation<false, Sba> simul(res ? res : t);
res = simul.run();
if (simul.result_is_deterministic())
if (res->is_deterministic())
break;
direct_simulation<true, Sba> cosimul(res);