Create a new transducer, equivalent to the first one, with the states labeled with the delay of the state, i.e. the difference of input length on each tape.
Preconditions:
See also:
In [1]:
import vcsn
In [2]:
ctx = vcsn.context("lat<law_char, law_char>, b")
ctx
Out[2]:
In [3]:
a = ctx.expression(r"'abc, \e''d,v'*'\e,wxyz'").standard()
a
Out[3]:
The lag is bounded, because every cycle (here, the loop) produces a delay of 0.
In [4]:
a.delay_automaton()
Out[4]:
State 1 has a delay of $(3, 0)$ because the first tape is 3 characters longer than the shortest tape (the second one) for all possible inputs leading to this state.
In [5]:
s = ctx.expression(r"(abc|x+ab|y)(d|z)").automaton()
s
Out[5]:
In [6]:
s.delay_automaton()
Out[6]:
Here, state 1 is split in two, because for one input the delay is $(1, 0)$, and for the other the delay is $(2, 0)$.