* iface/gspn/eesrg.cc (connected_component_eesrg::has_state):
Free filtered states. (emptiness_check_shy_eesrg): New class. (emptiness_check_eesrg_shy): New function. * iface/gspn/eesrg.hh (emptiness_check_eesrg_shy): New function. * iface/gspn/ltlgspn.cc (main) [EESRG]: Handle -e3, -e4, and -e5. * * src/tgbaalgos/gtec/gtec.hh, src/tgbaalgos/gtec/gtec.cc (emptiness_check_shy::check): Move arc, num, succ_queue, and todo as attributes. (emptiness_check_shy::find_state): New virtual function.
This commit is contained in:
parent
1e360ec689
commit
be4f4e3370
6 changed files with 189 additions and 42 deletions
|
|
@ -111,6 +111,31 @@ namespace spot
|
|||
virtual ~emptiness_check_shy();
|
||||
|
||||
virtual bool check();
|
||||
|
||||
protected:
|
||||
struct successor {
|
||||
bdd acc;
|
||||
const spot::state* s;
|
||||
successor(bdd acc, const spot::state* s): acc(acc), s(s) {}
|
||||
};
|
||||
|
||||
// We use five main data in this algorithm:
|
||||
// * emptiness_check::root, a stack of strongly connected components (SCC),
|
||||
// * emptiness_check::h, a hash of all visited nodes, with their order,
|
||||
// (it is called "Hash" in Couvreur's paper)
|
||||
// * arc, a stack of acceptance conditions between each of these SCC,
|
||||
std::stack<bdd> arc;
|
||||
// * num, the number of visited nodes. Used to set the order of each
|
||||
// visited node,
|
||||
int num;
|
||||
// * todo, the depth-first search stack. This holds pairs of the
|
||||
// form (STATE, SUCCESSORS) where SUCCESSORS is a list of
|
||||
// (ACCEPTANCE_CONDITIONS, STATE) pairs.
|
||||
typedef std::list<successor> succ_queue;
|
||||
typedef std::pair<const state*, succ_queue> pair_state_successors;
|
||||
std::stack<pair_state_successors> todo;
|
||||
|
||||
virtual int* find_state(const state* s);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue