* src/tgbaalgos/tarjan_on_fly.hh,

src/tgbaalgos/tarjan_on_fly.cc,
src/tgbaalgos/nesteddfs.hh,
src/tgbaalgos/nesteddfs.cc,
src/tgbaalgos/minimalce.hh,
src/tgbaalgos/minimalce.cc,
src/tgbaalgos/colordfs.hh,
src/tgbaalgos/colordfs.cc: four new algorithms for emptyness check.

src/tgbaalgos/gtec/ce.hh,
src/tgbaalgos/gtec/ce.cc: Adapt the counter exemple for the ce
object in minimalce.hh.

src/tgbatest/ltl2tgba.cc,
src/tgbatest/emptchk.test,
src/tgbaalgos/Makefile.am: Add files for emptyness-check.


* src/tgbaalgos/reductgba_sim_del.cc: Restrict to degeneralize automata.
* src/tgba/tgbareduc.hh: src/tgba/tgbareduc.cc: Merge transition
for scc reduce.
This commit is contained in:
martinez 2004-08-23 12:48:33 +00:00
parent 3d2135c883
commit 2d1151e018
17 changed files with 2526 additions and 157 deletions

View file

@ -123,6 +123,8 @@ namespace spot
this->compute_scc();
this->prune_acc();
this->delete_scc();
this->merge_transitions();
}
std::string
@ -424,6 +426,12 @@ namespace spot
}
void
tgba_reduc::merge_state_delayed(const spot::state*,
const spot::state*)
{
}
/////////////////////////////////////////
/////////////////////////////////////////
@ -580,8 +588,6 @@ namespace spot
void
tgba_reduc::remove_acc(const spot::state* s)
{
//std::cout << "remove_acc" << std::endl;
tgba_explicit::state* s1;
seen_map::iterator sm = si_.find(s);
sm = si_.find(s);
@ -624,7 +630,6 @@ namespace spot
tgba_reduc::is_not_accepting(const spot::state* s,
int n)
{
//std::cout << "is not accepting" << std::endl;
bool b = false;
// First call of is_terminal //
@ -726,8 +731,6 @@ namespace spot
bool
tgba_reduc::is_terminal(const spot::state* s, int n)
{
// FIXME
// a SCC is terminal if there are no transition
// leaving the SCC AND she doesn't contain all
// the acceptance condition.

View file

@ -117,6 +117,12 @@ namespace spot
void merge_state(const spot::state* s1,
const spot::state* s2);
/// Redirect all transition leading to s1 to s2.
/// Note that we can do the reverse because
/// s1 and s2 belong to a co-simulate relation.
void merge_state_delayed(const spot::state* s1,
const spot::state* s2);
/// Remove all the scc which are terminal and doesn't
/// contains all the acceptance conditions.
void delete_scc();