Let's build a small automaton to use as example.

Build an accepting run:

Accessing the contents of the run can be done via the prefix and cycle lists.

To convert the run into a word, using spot.twa_word(). Note that our runs are labeled by Boolean formulas that are not necessarily a conjunction of all involved litterals. The word is just the projection of the run on its labels.

A word can be represented as a collection of signals (one for each atomic proposition). The cycle part is shown twice.

Accessing the different formulas (stored as BDDs) can be done again via the prefix and cycle lists.

Calling simplify() will produce a shorter word that is compatible with the original word. For instance, in the above word the second a is compatible with !a & b, so the prefix can be shortened by rotating the cycle.

Such a simplified word can be created directly from the automaton:

Words can be created using the parse_word function:

Words can be easily converted to automata