automaton.lift(
identities
="default")
¶$\newcommand{\eword}{\varepsilon} \newcommand{\lweight}[2]{\bra{#1}{#2}} \newcommand{\rweight}[2]{#1\bra{#2}} \newcommand{\lmulq}[2]{\bra{#1}^?{#2}} \newcommand{\rmulq}[2]{#1\bra{#2}^?} \newcommand{\bra}[1]{\langle#1\rangle} \newcommand{\K}{\mathbb{K}} \newcommand{\zed}{\mathsf{0}} \newcommand{\und}{\mathsf{1}} \newcommand{\zeK}{0_{\K}} \newcommand{\unK}{1_{\K}} \newcommand{\Ed}{\mathsf{E}} \newcommand{\Fd}{\mathsf{F}} \newcommand{\Gd}{\mathsf{G}}$ Turn an automaton into a spontaneous automaton by mapping each transition $\lweight{w}{\ell}$ into $\lweight{\lweight{w}{\ell}}{\varepsilon}$.
Preconditions:
See also:
import vcsn
a = vcsn.Q.expression('(<1>a+<2>b+<3>c){2}').automaton()
a
b = a.lift()
b
from IPython.display import display
display(a.context(), b.context())
A different set of identities can be chosen.
a.lift().type()
a.lift(identities = 'trivial').type()