Whether the automaton is synchronized:
is_synchronizedwill not terminate.
import vcsn ctx = vcsn.context("lat<law_char, law_char>, b")
The following automaton is not synchronized, because a transition with less letters on the second tape $a| \varepsilon$ is followed by a transition with as many letters on each tape $b|y$.
a = ctx.expression(r"a|x+(a|\e)(b|y)").standard() a
This automaton is synchronized, because the transition with less letters on the first tape occurs "at the end" : it is not followed by transitions with more letters on this tape.
a = ctx.expression(r"a|x+(b|y)(e|xyz)").standard() a
Spontaneous transitions are not taken in account when checking for synchronization.
a = ctx.expression(r"a|x+(b|y)(cde|z)").thompson() a
Note that in a synchronized automaton, the corresponding _delay_automaton_ has delays of 0 or strictly increasing (apart from spontaneous transitions).