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

This class explores (with a DFS) a product between a system and a twa. This exploration is performed on-the-fly. Since this exploration aims to be a generic we need to define hooks to the various emptiness checks. Actually, we use "mixins templates" in order to efficiently call emptiness check procedure. This means that we add a template EmptinessCheck that will be called though four functions: More...

#include <spot/mc/intersect.hh>

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

Classes

struct  product_state
 
struct  product_state_equal
 
struct  product_state_hash
 
struct  todo_element
 

Public Types

typedef std::unordered_map< const product_state, int, product_state_hash, product_state_equalvisited_map
 

Public Member Functions

 intersect (kripkecube< State, SuccIterator > &sys, twacube_ptr twa, unsigned tid, bool &stop)
 
EmptinessCheck & 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 ()
 
virtual istats stats ()
 

Public Attributes

kripkecube< State, SuccIterator > & sys_
 
twacube_ptr twa_
 
std::vector< todo_elementtodo
 
visited_map map
 
unsigned int dfs_number = 0
 
unsigned int transitions = 0
 
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, typename EmptinessCheck>
class spot::intersect< State, SuccIterator, StateHash, StateEqual, EmptinessCheck >

This class explores (with a DFS) a product between a system and a twa. This exploration is performed on-the-fly. Since this exploration aims to be a generic we need to define hooks to the various emptiness checks. Actually, we use "mixins templates" in order to efficiently call emptiness check procedure. This means that we add a template EmptinessCheck that will be called though four functions:

The other template parameters allows to consider any kind of state (and so any kind of kripke structures).

Member Function Documentation

◆ forward_iterators()

template<typename State, typename SuccIterator, typename StateHash, typename StateEqual, typename EmptinessCheck>
void spot::intersect< State, SuccIterator, StateHash, StateEqual, EmptinessCheck >::forward_iterators ( bool  just_pushed)
inlineprotected

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.

◆ run()

template<typename State, typename SuccIterator, typename StateHash, typename StateEqual, typename EmptinessCheck>
bool spot::intersect< State, SuccIterator, StateHash, StateEqual, EmptinessCheck >::run ( )
inline

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

◆ self()

template<typename State, typename SuccIterator, typename StateHash, typename StateEqual, typename EmptinessCheck>
EmptinessCheck& spot::intersect< State, SuccIterator, StateHash, StateEqual, EmptinessCheck >::self ( )
inline

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.


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