automaton.subword

An automaton that accepts all the suffixes of the subwords accepted by the previous automaton. This is the "Magnus transform".

Algorithm: Every proper transition yields a spontaneous transition with equal source, destination and weight.

Preconditions:

  • None

Postconditions:

  • the labelset is nullable (even if the input one was not).

See also:

Examples

In [1]:
import vcsn
In [2]:
%%automaton -s a
context = "lan_char, q"
$ -> 0 <2>
0 -> 1 <3>a
1 -> 1 <4>b
1 -> 2 <5>\e
2 -> 3 <6>c
3 -> 4 <7>d
3 -> 5 <8>e
4 -> $ <9>
6 -> 0 <10>A
%3 I0 0 0 I0->0 ⟨2⟩ F4 1 1 0->1 ⟨3⟩a 1->1 ⟨4⟩b 2 2 1->2 ⟨5⟩ε 3 3 2->3 ⟨6⟩c 4 4 3->4 ⟨7⟩d 5 5 3->5 ⟨8⟩e 4->F4 ⟨9⟩ 6 6 6->0 ⟨10⟩A
In [3]:
a.subword()
Out[3]:
%3 I0 0 0 I0->0 ⟨2⟩ F4 1 1 0->1 ⟨3⟩ε, ⟨3⟩a 1->1 ⟨4⟩ε, ⟨4⟩b 2 2 1->2 ⟨5⟩ε 3 3 2->3 ⟨6⟩ε, ⟨6⟩c 4 4 3->4 ⟨7⟩ε, ⟨7⟩d 5 5 3->5 ⟨8⟩ε, ⟨8⟩e 4->F4 ⟨9⟩ 6 6 6->0 ⟨10⟩ε, ⟨10⟩A