21#include <spot/kripke/fairkripke.hh> 
   22#include <spot/twacube/cube.hh> 
   37  template<
typename State, 
typename SuccIterator>
 
   39    public std::enable_shared_from_this<kripkecube<State, SuccIterator>>
 
   50    std::string 
to_string(
const State, 
unsigned tid) 
const;
 
   53    SuccIterator* 
succ(
const State, 
unsigned tid);
 
   57    void recycle(SuccIterator*, 
unsigned tid);
 
   60    const std::vector<std::string> 
ap();
 
 
   69  template <
typename T, 
typename State, 
typename SuccIter>
 
   73    using yes = std::true_type;
 
   74    using no = std::false_type;
 
   77    template<
typename U, 
typename V> 
static auto test_kripke(
U u, V v)
 
   80       std::is_same<State,       
decltype(u->initial(0))>::value            &&
 
   81       std::is_same<
unsigned,    
decltype(u->get_threads())>::value         &&
 
   82       std::is_same<std::string, 
decltype(u->to_string(State(), 0))>::value &&
 
   83       std::is_same<SuccIter*,   
decltype(u->succ(State(), 0))>::value      &&
 
   84       std::is_same<
void,        
decltype(u->recycle(
nullptr, 0))>::value   &&
 
   85       std::is_same<
const std::vector<std::string>,
 
   86                                 decltype(u->ap())>::value                  &&
 
   87       std::is_same<
void,        
decltype(u->recycle(
nullptr, 0))>::value   &&
 
   90       std::is_same<
void,        
decltype(v->next())>::value                &&
 
   91       std::is_same<
bool,        
decltype(v->done())>::value                &&
 
   92       std::is_same<State,       
decltype(v->state())>::value               &&
 
   93       std::is_same<
spot::cube,  
decltype(v->condition())>::value
 
   99    template<
typename, 
typename> 
static no test_kripke(...);
 
  105    static constexpr bool value =
 
  106      std::is_same< decltype(test_kripke<T, SuccIter*>(
nullptr, 
nullptr)), yes
 
 
  141    void recycle(
const bdd& cond)
 
  146    virtual ~kripke_succ_iterator();
 
  148    virtual bdd 
cond() 
const override;
 
 
  179    kripke(
const bdd_dict_ptr& d)
 
 
  191  typedef std::shared_ptr<kripke> kripke_ptr;
 
  192  typedef std::shared_ptr<const kripke> const_kripke_ptr;
 
Interface for a Fair Kripke structure.
Definition fairkripke.hh:87
 
This class allows to ensure (at compile time) if a given parameter is of type kripkecube....
Definition kripke.hh:71
 
Iterator code for Kripke structure.
Definition kripke.hh:130
 
virtual bdd cond() const override
Get the condition on the edge leading to this successor.
 
kripke_succ_iterator(const bdd &cond)
Constructor.
Definition kripke.hh:136
 
virtual acc_cond::mark_t acc() const override
Get the acceptance mark of the edge leading to this successor.
 
Interface for a Kripke structure.
Definition kripke.hh:177
 
virtual acc_cond::mark_t state_acceptance_mark(const state *) const override
The acceptance mark that labels state s.
 
This class is a template representation of a Kripke structure. It is composed of two template paramet...
Definition kripke.hh:40
 
std::string to_string(const State, unsigned tid) const
Provides a string representation of the parameter state.
 
SuccIterator * succ(const State, unsigned tid)
Returns an iterator over the successors of the parameter state.
 
unsigned get_threads()
Returns the number of threads that are handled by the kripkecube.
 
State initial(unsigned tid)
Returns the initial State of the System. The tid parameter is used internally for sharing this struct...
 
const std::vector< std::string > ap()
This method allow to deallocate a given state.
 
void recycle(SuccIterator *, unsigned tid)
Allocation and deallocation of iterator is costly. This method allows to reuse old iterators.
 
Abstract class for states.
Definition twa.hh:47
 
Iterate over the successors of a state.
Definition twa.hh:394
 
Definition automata.hh:26
 
unsigned * cube
A cube is only a set of bits in memory.
Definition cube.hh:65
 
An acceptance mark.
Definition acc.hh:84