# 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:

• None

## Examples¶

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, b, c\}\to\mathbb{Q}$
$\{\varepsilon\}\to\mathsf{RatE}[\{a, b, c\}\to\mathbb{Q}]$

A different set of identities can be chosen.

In [4]:
a.lift().type()

Out[4]:
'mutable_automaton<context<lao, expressionset<context<letterset<char_letters>, q>>>>'
In [5]:
a.lift(identities = 'trivial').type()

Out[5]:
'mutable_automaton<context<lao, expressionset<context<letterset<char_letters>, q>>>>'