spot  2.3.3.dev
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | List of all members
spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > Class Template Reference

This class implements the sequential emptiness check as presented in "Three SCC-based Emptiness Checks for Generalized B\¨uchi Automata" (Renault et al, LPAR 2013). Among the three emptiness check that has been proposed we opted to implement the Gabow's one. More...

#include <spot/mc/ec.hh>

Inheritance diagram for spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >:
Inheritance graph
Collaboration diagram for spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >:
Collaboration graph

Public Types

typedef std::unordered_map< const product_state, int, product_state_hash, product_state_equal > visited_map
 

Public Member Functions

 ec_renault13lpar (kripkecube< State, SuccIterator > &sys, twacube_ptr twa, unsigned tid, bool stop)
 
void setup ()
 This method is called at the begining of the exploration. here we do not need to setup any information. More...
 
bool push_state (product_state, unsigned dfsnum, acc_cond::mark_t cond)
 This method is called to notify the emptiness checks that a new state has been discovered. If this method return false, the state will not be explored. The parameter dfsnum specify an unique id for the state s. Parameter cond represents The value on the ingoing edge to s. More...
 
bool pop_state (product_state, unsigned top_dfsnum, bool, product_state, unsigned)
 This method is called to notify the emptiness checks that a state will be popped. If the method return false, then the state will be popped. Otherwise the state newtop will become the new top of the DFS stack. If the state top is the only one in the DFS stak, the parameter is_initial is set to true and both newtop and newtop_dfsnum have inconsistency values. More...
 
bool update (product_state, unsigned, product_state, unsigned dst_dfsnum, acc_cond::mark_t cond)
 This method is called for every closing, back, or forward edge. Return true if a counterexample has been found. More...
 
bool counterexample_found ()
 
std::string trace ()
 
virtual istats stats () override
 
ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > & self ()
 In order to implement "mixin paradigm", we must be abble to access the acual definition of the emptiness check that, in turn, has to access local variables. More...
 
bool run ()
 The main function that will perform the product on-the-fly and call the emptiness check when necessary. More...
 
unsigned int states ()
 
unsigned int trans ()
 
std::string counterexample ()
 

Public Attributes

kripkecube< State, SuccIterator > & sys_
 
twacube_ptr twa_
 
std::vector< todo_element > todo
 
visited_map map
 
unsigned int dfs_number
 
unsigned int transitions
 
unsigned tid_
 
bool & stop_
 

Protected Member Functions

void forward_iterators (bool just_pushed)
 Find the first couple of iterator (from the top of the todo stack) that intersect. The parameter indicates wheter the state has just been pushed since the underlying job is slightly different. More...
 

Detailed Description

template<typename State, typename SuccIterator, typename StateHash, typename StateEqual>
class spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >

This class implements the sequential emptiness check as presented in "Three SCC-based Emptiness Checks for Generalized B\¨uchi Automata" (Renault et al, LPAR 2013). Among the three emptiness check that has been proposed we opted to implement the Gabow's one.

Member Function Documentation

◆ forward_iterators()

void spot::intersect< State, SuccIterator, StateHash, StateEqual, ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > >::forward_iterators ( bool  just_pushed)
inlineprotectedinherited

Find the first couple of iterator (from the top of the todo stack) that intersect. The parameter indicates wheter the state has just been pushed since the underlying job is slightly different.

◆ pop_state()

template<typename State , typename SuccIterator , typename StateHash , typename StateEqual >
bool spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >::pop_state ( product_state  ,
unsigned  top_dfsnum,
bool  ,
product_state  ,
unsigned   
)
inline

This method is called to notify the emptiness checks that a state will be popped. If the method return false, then the state will be popped. Otherwise the state newtop will become the new top of the DFS stack. If the state top is the only one in the DFS stak, the parameter is_initial is set to true and both newtop and newtop_dfsnum have inconsistency values.

◆ push_state()

template<typename State , typename SuccIterator , typename StateHash , typename StateEqual >
bool spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >::push_state ( product_state  ,
unsigned  dfsnum,
acc_cond::mark_t  cond 
)
inline

This method is called to notify the emptiness checks that a new state has been discovered. If this method return false, the state will not be explored. The parameter dfsnum specify an unique id for the state s. Parameter cond represents The value on the ingoing edge to s.

References spot::U.

◆ run()

bool spot::intersect< State, SuccIterator, StateHash, StateEqual, ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > >::run ( )
inlineinherited

The main function that will perform the product on-the-fly and call the emptiness check when necessary.

References spot::U.

◆ self()

ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > & spot::intersect< State, SuccIterator, StateHash, StateEqual, ec_renault13lpar< State, SuccIterator, StateHash, StateEqual > >::self ( )
inlineinherited

In order to implement "mixin paradigm", we must be abble to access the acual definition of the emptiness check that, in turn, has to access local variables.

◆ setup()

template<typename State , typename SuccIterator , typename StateHash , typename StateEqual >
void spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >::setup ( )
inline

This method is called at the begining of the exploration. here we do not need to setup any information.

◆ update()

template<typename State , typename SuccIterator , typename StateHash , typename StateEqual >
bool spot::ec_renault13lpar< State, SuccIterator, StateHash, StateEqual >::update ( product_state  ,
unsigned  ,
product_state  ,
unsigned  dst_dfsnum,
acc_cond::mark_t  cond 
)
inline

This method is called for every closing, back, or forward edge. Return true if a counterexample has been found.

References spot::U.


The documentation for this class was generated from the following file:

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Tue Apr 18 2017 14:42:57 for spot by doxygen 1.8.13