spot  1.0.2
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
spot::ta_check Class Reference

An implementation of the emptiness-check algorithm for a product between a TA and a Kripke structure. More...

#include <taalgos/emptinessta.hh>

Inheritance diagram for spot::ta_check:
Inheritance graph
Collaboration diagram for spot::ta_check:
Collaboration graph

Public Types

typedef unsigned(unsigned_statistics::* unsigned_fun )() const
typedef std::map< const char
*, unsigned_fun,
char_ptr_less_than
stats_map

Public Member Functions

virtual ~ta_check ()
virtual bool check (bool disable_second_pass=false, bool disable_heuristic_for_livelock_detection=false)
 Check whether the TA product automaton contains an accepting run: it detects the two kinds of accepting runs: Buchi-accepting runs and livelock-accepting runs. This emptiness check algorithm can also check a product using the generalized form of TA.
virtual bool livelock_detection (const ta_product *t)
 Check whether the product automaton contains a livelock-accepting run Return false if the product automaton accepts no livelock-accepting run, otherwise true.
virtual std::ostream & print_stats (std::ostream &os) const
 Print statistics, if any.
void set_states (unsigned n)
void inc_states ()
void inc_transitions ()
void inc_depth (unsigned n=1)
void dec_depth (unsigned n=1)
unsigned states () const
unsigned transitions () const
unsigned max_depth () const
unsigned depth () const
unsigned get (const char *str) const

Static Public Member Functions

 ta_check (const ta_product *a, option_map o=option_map())

Public Attributes

stats_map stats

Protected Member Functions

void clear (numbered_state_heap *h, std::stack< pair_state_iter > todo, std::queue< spot::state * > init_set)
void clear (numbered_state_heap *h, std::stack< pair_state_iter > todo, spot::ta_succ_iterator *init_states_it)
bool heuristic_livelock_detection (const state *stuttering_succ, numbered_state_heap *h, int h_livelock_root, std::set< const state *, state_ptr_less_than > liveset_curr)

Protected Attributes

const ta_producta_
 The automaton.
option_map o_
 The options.
bool is_full_2_pass_
scc_stack_ta scc
scc_stack_ta sscc

Detailed Description

An implementation of the emptiness-check algorithm for a product between a TA and a Kripke structure.

See the paper cited above.

Member Typedef Documentation

typedef std::map<const char*, unsigned_fun, char_ptr_less_than> spot::unsigned_statistics::stats_map
inherited
typedef unsigned(unsigned_statistics::* spot::unsigned_statistics::unsigned_fun)() const
inherited

Constructor & Destructor Documentation

spot::ta_check::ta_check ( const ta_product a,
option_map  o = option_map() 
)
static
virtual spot::ta_check::~ta_check ( )
virtual

Member Function Documentation

virtual bool spot::ta_check::check ( bool  disable_second_pass = false,
bool  disable_heuristic_for_livelock_detection = false 
)
virtual

Check whether the TA product automaton contains an accepting run: it detects the two kinds of accepting runs: Buchi-accepting runs and livelock-accepting runs. This emptiness check algorithm can also check a product using the generalized form of TA.

Return false if the product automaton accepts no run, otherwise true

Parameters
disable_second_passis used to disable the second pass when when it is not necessary, for example when all the livelock-accepting states of the TA automaton have no successors, we call this kind of TA as STA (Single-pass Testing Automata) (see spot::tgba2ta::add_artificial_livelock_accepting_state() for an automatic transformation of any TA automaton into STA automaton
disable_heuristic_for_livelock_detectiondisable the heuristic used in the first pass to detect livelock-accepting runs, this heuristic is described in the paper cited above
void spot::ta_check::clear ( numbered_state_heap h,
std::stack< pair_state_iter >  todo,
std::queue< spot::state * >  init_set 
)
protected
void spot::ta_check::clear ( numbered_state_heap h,
std::stack< pair_state_iter >  todo,
spot::ta_succ_iterator init_states_it 
)
protected
void spot::ec_statistics::dec_depth ( unsigned  n = 1)
inlineinherited
unsigned spot::ec_statistics::depth ( ) const
inlineinherited
unsigned spot::unsigned_statistics::get ( const char *  str) const
inlineinherited
bool spot::ta_check::heuristic_livelock_detection ( const state stuttering_succ,
numbered_state_heap h,
int  h_livelock_root,
std::set< const state *, state_ptr_less_than liveset_curr 
)
protected

the heuristic for livelock-accepting runs detection, it's described in the paper cited above

void spot::ec_statistics::inc_depth ( unsigned  n = 1)
inlineinherited
void spot::ec_statistics::inc_states ( )
inlineinherited
void spot::ec_statistics::inc_transitions ( )
inlineinherited
virtual bool spot::ta_check::livelock_detection ( const ta_product t)
virtual

Check whether the product automaton contains a livelock-accepting run Return false if the product automaton accepts no livelock-accepting run, otherwise true.

unsigned spot::ec_statistics::max_depth ( ) const
inlineinherited
virtual std::ostream& spot::ta_check::print_stats ( std::ostream &  os) const
virtual

Print statistics, if any.

void spot::ec_statistics::set_states ( unsigned  n)
inlineinherited
unsigned spot::ec_statistics::states ( ) const
inlineinherited
unsigned spot::ec_statistics::transitions ( ) const
inlineinherited

Member Data Documentation

const ta_product* spot::ta_check::a_
protected

The automaton.

bool spot::ta_check::is_full_2_pass_
protected
option_map spot::ta_check::o_
protected

The options.

scc_stack_ta spot::ta_check::scc
protected
scc_stack_ta spot::ta_check::sscc
protected
stats_map spot::unsigned_statistics::stats
inherited

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

Please comment this page and report errors about it on the RefDocComments page.
Generated on Wed Mar 6 2013 09:25:16 for spot by doxygen 1.8.1.2