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:
import vcsn
c = vcsn.context('lal_char, seriesset<lal_char, z>')
exp = c.expression
c
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
y = exp("<y>a"); y
conj = x & y ; conj
shuff = x.shuffle(y) ; shuff
inf = x.infiltrate(y) ; inf
inf.automaton() == (conj + shuff).automaton()
This operator is associative: $(\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()
x.infiltrate(y.infiltrate(z)).automaton()