spot 2.2.2

- Main Page
- Related Pages
- Modules
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
spot::ta Class Referenceabstract
TA (Testing Automata) » Essential TA types

A Testing Automaton. More...

`#include <spot/ta/ta.hh>`

Inheritance diagram for spot::ta:
Collaboration diagram for spot::ta:

## Public Types
typedef std::set< state *, state_ptr_less_than > | states_set_t
typedef std::set< const state *, state_ptr_less_than > | const_states_set_t

## Public Member Functions
| ta (const bdd_dict_ptr &d)
virtual const_states_set_t | get_initial_states_set () const =0
| Get the initial states set of the automaton. More...
virtual const spot::state * | get_artificial_initial_state () const
| Get the artificial initial state set of the automaton. Return 0 if this artificial state is not implemented (in this case, use `get_initial_states_set`) The aim of adding this state is to have an unique initial state. This artificial initial state have one transition to each real initial state, and this transition is labeled by the corresponding initial condition. (For more details, see the paper cited above) More...
virtual ta_succ_iterator * | succ_iter (const spot::state *state) const =0
| Get an iterator over the successors of state. More...
virtual ta_succ_iterator * | succ_iter (const spot::state *state, bdd changeset) const =0
| Get an iterator over the successors of state filtred by the changeset on transitions. More...
bdd_dict_ptr | get_dict () const
| Get the dictionary associated to the automaton. More...
virtual std::string | format_state (const spot::state *s) const =0
| Format the state as a string for printing. More...
virtual bool | is_accepting_state (const spot::state *s) const =0
| Return true if s is a Buchi-accepting state, otherwise false. More...
virtual bool | is_livelock_accepting_state (const spot::state *s) const =0
| Return true if s is a livelock-accepting state , otherwise false. More...
virtual bool | is_initial_state (const spot::state *s) const =0
| Return true if s is an initial state, otherwise false. More...
virtual bdd | get_state_condition (const spot::state *s) const =0
| Return a BDD condition that represents the valuation of atomic propositions in the state s. More...
virtual void | free_state (const spot::state *s) const =0
| Release a state s. More...
const acc_cond & | acc () const
acc_cond & | acc ()

## Protected Attributes
acc_cond | acc_
bdd_dict_ptr | dict_

## Detailed Description

A Testing Automaton.

The Testing Automata (TA) were introduced by Henri Hansen, Wojciech Penczek and Antti Valmari in "Stuttering-insensitive automata for on-the-fly detection of livelock properties" In Proc. of FMICSÕ02, vol. 66(2) of Electronic Notes in Theoretical Computer Science.Elsevier.

While a TGBA automaton observes the value of the atomic propositions, the basic idea of TA is to detect the changes in these values; if a valuation does not change between two consecutive valuations of an execution, the TA stay in the same state. A TA transition ``(s,k,d) is labeled by a "changeset" `k:` i.e. the set of atomic propositions that change between states `s` and `d`, if the changeset is empty then the transition is called stuttering transition. To detect execution that ends by stuttering in the same TA state, a new kind of acceptance states is introduced: "livelock-acceptance states" (in addition to the standard Buchi-acceptance states).

Browsing such automaton can be achieved using two functions: `get_initial_states_set` or `get_artificial_initial_state`, and `succ_iter`. The former returns the initial state(s) while the latter lists the successor states of any state (filtred by "changeset").

Note that although this is a transition-based automata, we never represent transitions! Transition informations are obtained by querying the iterator over the successors of a state.

## Member Function Documentation

virtual std::string spot::ta::format_state | ( | const spot::state * | s | ) | const
| pure virtual

Format the state as a string for printing.

This formating is the responsability of the automata that owns the state.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual void spot::ta::free_state | ( | const spot::state * | s | ) | const
| pure virtual

Release a state s.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual const spot::state* spot::ta::get_artificial_initial_state | ( |  | ) | const
| inline virtual

Get the artificial initial state set of the automaton. Return 0 if this artificial state is not implemented (in this case, use `get_initial_states_set`) The aim of adding this state is to have an unique initial state. This artificial initial state have one transition to each real initial state, and this transition is labeled by the corresponding initial condition. (For more details, see the paper cited above)

Reimplemented in spot::ta_explicit.

bdd_dict_ptr spot::ta::get_dict | ( |  | ) | const
| inline

Get the dictionary associated to the automaton.

State are represented as BDDs. The dictionary allows to map BDD variables back to formulae, and vice versa. This is useful when dealing with several automata (which may use the same BDD variable for different formula), or simply when printing.

virtual const_states_set_t spot::ta::get_initial_states_set | ( |  | ) | const
| pure virtual

Get the initial states set of the automaton.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual bdd spot::ta::get_state_condition | ( | const spot::state * | s | ) | const
| pure virtual

Return a BDD condition that represents the valuation of atomic propositions in the state s.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual bool spot::ta::is_accepting_state | ( | const spot::state * | s | ) | const
| pure virtual

Return true if s is a Buchi-accepting state, otherwise false.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual bool spot::ta::is_initial_state | ( | const spot::state * | s | ) | const
| pure virtual

Return true if s is an initial state, otherwise false.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual bool spot::ta::is_livelock_accepting_state | ( | const spot::state * | s | ) | const
| pure virtual

Return true if s is a livelock-accepting state , otherwise false.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual ta_succ_iterator* spot::ta::succ_iter | ( | const spot::state * | state | ) | const
| pure virtual

Get an iterator over the successors of state.

The iterator has been allocated with `new`. It is the responsability of the caller to `delete` it when no longer needed.

Implemented in spot::ta_product, and spot::ta_explicit.

virtual ta_succ_iterator* spot::ta::succ_iter | ( | const spot::state * | state,
|  | bdd | changeset
| ) |  | const
| pure virtual

Get an iterator over the successors of state filtred by the changeset on transitions.

The iterator has been allocated with `new`. It is the responsability of the caller to `delete` it when no longer needed.

Implemented in spot::ta_product, and spot::ta_explicit.

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

- spot/ta/ta.hh

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.