Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 45896
Kernel: Python 3

expression.infiltrate

\newcommand{\Ed}{\mathsf{E}} \newcommand{\Fd}{\mathsf{F}} \newcommand{\Gd}{\mathsf{G}} \newcommand{\infiltrate}{\mathbin{\uparrow}} \newcommand{\shuffle}{\mathbin{\between}} Create the infiltration product of two expressions. In a way the infiltration product combines the conjunction (synchronized product) and the shuffle product.

See also:

Examples

import vcsn c = vcsn.context('lal_char, seriesset<lal_char, z>') exp = c.expression c

{}Series[{}Z]\{\ldots\}\to\mathsf{Series}[\{\ldots\}\to\mathbb{Z}]

The following simple example aims at emphasizing that the transitions of the infiltration combine those of the shuffle and the conjunction products.

x = exp("<x>a"); x

xa \left\langle x \right\rangle \,a

y = exp("<y>a"); y

ya \left\langle y \right\rangle \,a

conj = x & y ; conj

xya \left\langle x \, y \right\rangle \,a

shuff = x.shuffle(y) ; shuff

xaya \left\langle x \right\rangle \,a \between \left\langle y \right\rangle \,a

inf = x.infiltrate(y) ; inf

xaya \left\langle x \right\rangle \,a \uparrow \left\langle y \right\rangle \,a

inf.automaton() == (conj + shuff).automaton()
True

Associativity

This operator is associative: (EF)GE(FG)(\Ed \infiltrate \Fd) \infiltrate \Gd \equiv \Ed \infiltrate (\Fd \infiltrate \Gd), i.e., both expressions denote the same series.

x = exp('<x>a', 'trivial') y = exp('<y>a', 'trivial') z = exp('<z>a', 'trivial')
x.infiltrate(y).infiltrate(z).automaton()
Image in a Jupyter notebook
x.infiltrate(y.infiltrate(z)).automaton()
Image in a Jupyter notebook