automaton.lift(
identities
= "default")
$\newcommand{\eword}{\varepsilon} \newcommand{\lmul}[2]{\bra{#1}{#2}} \newcommand{\rmul}[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 $\lmul{w}{\ell}$ into $\lmul{\lmul{w}{\ell}}{\varepsilon}$.
Preconditions:
See also:
In [1]:
import vcsn
a = vcsn.Q.expression('(<1>a+<2>b+<3>c){2}').automaton()
a
Out[1]:
In [2]:
b = a.lift()
b
Out[2]:
In [3]:
from IPython.display import display
display(a.context(), b.context())
A different set of identities can be chosen.
In [4]:
a.lift().type()
Out[4]:
In [5]:
a.lift(identities = 'trivial').type()
Out[5]: