|
spot
2.16
|
An infinite word stored as a lasso. More...
#include <spot/twaalgos/word.hh>
Public Types | |
| typedef std::list< bdd > | seq_t |
| Type for a sequence of BDD conditions. More... | |
Public Member Functions | |
| twa_word (const bdd_dict_ptr &dict) noexcept | |
| Construct an empty word with the given BDD dictionary. More... | |
| twa_word (const twa_run_ptr &run) noexcept | |
| Construct a word from a twa_run. More... | |
| void | simplify () |
| Simplify a lasso-shaped word. More... | |
| void | use_all_aps (bdd aps, bool positive=false) |
| Use all atomic propositions. More... | |
| bdd_dict_ptr | get_dict () const |
| Return the BDD dictionary. More... | |
| twa_graph_ptr | as_automaton () const |
| Convert the twa_word as an automaton. More... | |
| bool | intersects (const_twa_ptr aut) const |
| Check if the twa_word intersects another automaton. More... | |
Public Attributes | |
| seq_t | prefix |
| Finite prefix of the word. More... | |
| seq_t | cycle |
| Infinite repeating cycle of the word. More... | |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const twa_word &w) |
| Print a twa_word. More... | |
An infinite word stored as a lasso.
This is not exactly a word in the traditional sense because we use boolean formulas instead of letters. So technically a twa_word can represent a set of words.
This class only represents lasso-shaped words using two lists of BDDs: one list of the prefix, one list for the cycle.
| typedef std::list<bdd> spot::twa_word::seq_t |
Type for a sequence of BDD conditions.
|
noexcept |
Construct an empty word with the given BDD dictionary.
|
noexcept |
Construct a word from a twa_run.
| twa_graph_ptr spot::twa_word::as_automaton | ( | ) | const |
|
inline |
Return the BDD dictionary.
|
inline |
| void spot::twa_word::simplify | ( | ) |
Simplify a lasso-shaped word.
The simplified twa_word may represent a subset of the actual words represented by the original twa_word. The typical use-case is that a counterexample generated by an emptiness-check was converted into a twa_word (maybe accepting several words) and we want to present a simpler word as a counterexample to the user. ltlcross does that, for instance.
This method performs three reductions:
| void spot::twa_word::use_all_aps | ( | bdd | aps, |
| bool | positive = false |
||
| ) |
Use all atomic propositions.
Make sure each letter actually uses all variables in aps. By default, missing variables are introduced as negative, but setting positive to true will reverse that.
|
friend |
| seq_t spot::twa_word::cycle |
Infinite repeating cycle of the word.
| seq_t spot::twa_word::prefix |
Finite prefix of the word.
1.9.1