Massimo Nocentini


Abstract
In this document we collect a naive type system based on sets.

In [1]:
from itertools import repeat
from sympy import *
#from type_system import *

In [2]:
%run ../../src/commons.py

In [3]:
%run ./type-system.py


In [4]:
init_printing()

In [5]:
x,y,m,n,t,z = symbols('x y m n t z', commutative=True)
alpha, beta, gamma, eta = symbols(r'\alpha \beta \gamma \eta', commutative=True)
f,g = Function('f'), Function('g')

Non-commutative symbols


In [17]:
((1/(1-w[0]*z))*(1/(1-w[1]*z))).diff(z).series(z, n=6)


Out[17]:
$$z \left(2 w_{0}^{2} + 2 w_{0} w_{1} + 2 w_{1}^{2}\right) + z^{2} \left(3 w_{0}^{3} + 3 w_{0}^{2} w_{1} + 3 w_{0} w_{1}^{2} + 3 w_{1}^{3}\right) + z^{3} \left(4 w_{0}^{4} + 4 w_{0}^{3} w_{1} + 4 w_{0}^{2} w_{1}^{2} + 4 w_{0} w_{1}^{3} + 4 w_{1}^{4}\right) + z^{4} \left(5 w_{0}^{5} + 5 w_{0}^{4} w_{1} + 5 w_{0}^{3} w_{1}^{2} + 5 w_{0}^{2} w_{1}^{3} + 5 w_{0} w_{1}^{4} + 5 w_{1}^{5}\right) + z^{5} \left(6 w_{0}^{6} + 6 w_{0}^{5} w_{1} + 6 w_{0}^{4} w_{1}^{2} + 6 w_{0}^{3} w_{1}^{3} + 6 w_{0}^{2} w_{1}^{4} + 6 w_{0} w_{1}^{5} + 6 w_{1}^{6}\right) + w_{1} + w_{0} + \mathcal{O}\left(z^{6}\right)$$

In [7]:
define(f(z), z/((1-z)**2),ctor=FEq).series(z,n=10)


Out[7]:
$$f{\left (z \right )} = \frac{z}{\left(- z + 1\right)^{2}} = z + 2 z^{2} + 3 z^{3} + 4 z^{4} + 5 z^{5} + 6 z^{6} + 7 z^{7} + 8 z^{8} + 9 z^{9} + O\left(z^{10}\right)$$

In [8]:
define(f(z), 1/(1-alpha*z), ctor=FEq).series(z,n=10)


Out[8]:
$$f{\left (z \right )} = \frac{1}{- \alpha z + 1} = 1 + \alpha z + \alpha^{2} z^{2} + \alpha^{3} z^{3} + \alpha^{4} z^{4} + \alpha^{5} z^{5} + \alpha^{6} z^{6} + \alpha^{7} z^{7} + \alpha^{8} z^{8} + \alpha^{9} z^{9} + O\left(z^{10}\right)$$

In [9]:
define(f(z), 1/(1-(u[0]+u[1])*z), ctor=FEq).series(z,n=4)


Out[9]:
$$f{\left (z \right )} = \frac{1}{- z \left(u_{0} + u_{1}\right) + 1} = 1 + z \left(u_{0} + u_{1}\right) + z^{2} \left(u_{0}^{2} + 2 u_{0} u_{1} + u_{1}^{2}\right) + z^{3} \left(u_{0}^{3} + 3 u_{0}^{2} u_{1} + 3 u_{0} u_{1}^{2} + u_{1}^{3}\right) + O\left(z^{4}\right)$$

In [10]:
define(f(z), 1/(1-(o[0]+o[1])*z), ctor=FEq).series(z,n=4)


Out[10]:
$$f{\left (z \right )} = \left(- z \left(o_{0} + o_{1}\right) + 1\right)^{-1} = 1 + z \left(o_{0} + o_{1}\right) + z^{2} \left(o_{0} o_{1} + o_{0}^{2} + o_{1} o_{0} + o_{1}^{2}\right) + z^{3} \left(o_{0} o_{1} o_{0} + o_{0} o_{1}^{2} + o_{0}^{2} o_{1} + o_{0}^{3} + o_{1} o_{0} o_{1} + o_{1} o_{0}^{2} + o_{1}^{2} o_{0} + o_{1}^{3}\right) + O\left(z^{4}\right)$$

Exponential gf recap


In [14]:
define(f(z), z*(1/(1-z))*(1/(1-z)), ctor=FEq).series(z,n=10)


Out[14]:
$$f{\left (z \right )} = \frac{z}{\left(- z + 1\right)^{2}} = z + 2 z^{2} + 3 z^{3} + 4 z^{4} + 5 z^{5} + 6 z^{6} + 7 z^{7} + 8 z^{8} + 9 z^{9} + O\left(z^{10}\right)$$

In [15]:
define(f(z), z**3,ctor=FEq).series(z, n=10, kernel='exponential')


Out[15]:
$$f{\left (z \right )} = z^{3} = 6 z^{3}$$

In [16]:
define(f(z), exp(z),ctor=FEq).series(z, n=10, kernel='exponential')


Out[16]:
$$f{\left (z \right )} = e^{z} = 1 + z + z^{2} + z^{3} + z^{4} + z^{5} + z^{6} + z^{7} + z^{8} + z^{9} + O\left(z^{10}\right)$$

In [11]:
define(f(z), z*exp(z), ctor=FEq).series(z, n=10, kernel='exponential')


Out[11]:
$$f{\left (z \right )} = z e^{z} = z + 2 z^{2} + 3 z^{3} + 4 z^{4} + 5 z^{5} + 6 z^{6} + 7 z^{7} + 8 z^{8} + 9 z^{9} + O\left(z^{10}\right)$$

In [13]:
define(f(z), z**2*exp(z)/factorial(2,evaluate=False), 
       ctor=FEq).series(z, n=10, kernel='exponential')


Out[13]:
$$f{\left (z \right )} = \frac{z^{2} e^{z}}{2!} = z^{2} + 3 z^{3} + 6 z^{4} + 10 z^{5} + 15 z^{6} + 21 z^{7} + 28 z^{8} + 36 z^{9} + O\left(z^{10}\right)$$

In [14]:
define(f(z), z**3*exp(z)/factorial(3, evaluate=False), 
       ctor=FEq).series(z, n=10, kernel='exponential')


Out[14]:
$$f{\left (z \right )} = \frac{z^{3} e^{z}}{3!} = z^{3} + 4 z^{4} + 10 z^{5} + 20 z^{6} + 35 z^{7} + 56 z^{8} + 84 z^{9} + O\left(z^{10}\right)$$

In [15]:
define(f(z), (exp(z)+exp(-z))/2, ctor=FEq).series(z, n=20, kernel='exponential')


Out[15]:
$$f{\left (z \right )} = \frac{e^{z}}{2} + \frac{e^{- z}}{2} = 1 + z^{2} + z^{4} + z^{6} + z^{8} + z^{10} + z^{12} + z^{14} + z^{16} + z^{18} + O\left(z^{20}\right)$$

In [16]:
define(f(z), exp(m*z), ctor=FEq).series(z, n=10, kernel='exponential')


Out[16]:
$$f{\left (z \right )} = e^{m z} = 1 + m z + m^{2} z^{2} + m^{3} z^{3} + m^{4} z^{4} + m^{5} z^{5} + m^{6} z^{6} + m^{7} z^{7} + m^{8} z^{8} + m^{9} z^{9} + O\left(z^{10}\right)$$

In [17]:
define(f(z), (exp(z)-1)/z, ctor=FEq).series(z, n=10, kernel='exponential')


Out[17]:
$$f{\left (z \right )} = \frac{e^{z} - 1}{z} = 1 + \frac{z}{2} + \frac{z^{2}}{3} + \frac{z^{3}}{4} + \frac{z^{4}}{5} + \frac{z^{5}}{6} + \frac{z^{6}}{7} + \frac{z^{7}}{8} + \frac{z^{8}}{9} + \frac{z^{9}}{10} + O\left(z^{10}\right)$$

In [18]:
define(f(z), 1/(1-z), ctor=FEq).series(z, n=10, kernel='exponential')


Out[18]:
$$f{\left (z \right )} = \frac{1}{- z + 1} = 1 + z + 2 z^{2} + 6 z^{3} + 24 z^{4} + 120 z^{5} + 720 z^{6} + 5040 z^{7} + 40320 z^{8} + 362880 z^{9} + O\left(z^{10}\right)$$

In [19]:
define(f(z), (1/(1-z))*(1/(1-z)), ctor=FEq).series(z, n=10, kernel='exponential')


Out[19]:
$$f{\left (z \right )} = \frac{1}{\left(- z + 1\right)^{2}} = 1 + 2 z + 6 z^{2} + 24 z^{3} + 120 z^{4} + 720 z^{5} + 5040 z^{6} + 40320 z^{7} + 362880 z^{8} + 3628800 z^{9} + O\left(z^{10}\right)$$

In [20]:
define(f(z), exp(z)**2, ctor=FEq).series(z, n=10, kernel='exponential')


Out[20]:
$$f{\left (z \right )} = e^{2 z} = 1 + 2 z + 4 z^{2} + 8 z^{3} + 16 z^{4} + 32 z^{5} + 64 z^{6} + 128 z^{7} + 256 z^{8} + 512 z^{9} + O\left(z^{10}\right)$$

Linear types


In [7]:
tyvar(x).gf()


Out[7]:
$$\left [ \mathcal{V}{\left (x \right )} = x\right ]$$

In [8]:
(tyvar(u[0]) * tyvar(u[1]) * tyvar(u[2])).gf()


Out[8]:
$$\left [ \times{\left (u_{2},u_{0},u_{1} \right )} = u_{0} u_{1} u_{2}\right ]$$

In [9]:
(tyvar(o[0]) * tyvar(o[1]) * tyvar(o[2])).gf()


Out[9]:
$$\left [ \times{\left (o_{0},o_{2},o_{1} \right )} = o_{0} o_{1} o_{2}\right ]$$

In [10]:
(tyvar(u[0]) | tyvar(u[1]) | tyvar(u[2])).gf()


Out[10]:
$$\left [ \cup{\left (u_{2},u_{0},u_{1} \right )} = u_{0} + u_{1} + u_{2}\right ]$$

In [18]:
(tyvar(o[0]) | tyvar(o[1]) | tyvar(o[2])).gf()


Out[18]:
$$\left [ \cup{\left (o_{1},o_{0},o_{2} \right )} = o_{0} + o_{1} + o_{2}\right ]$$

In [19]:
truth.gf() + falsehood.gf()


Out[19]:
$$\left [ \mathcal{V}{\left (w_{1} \right )} = w_{1}, \quad \mathcal{V}{\left (w_{0} \right )} = w_{0}\right ]$$

In [20]:
boolean.gf()


Out[20]:
$$\left [ \cup{\left (w_{1},w_{0} \right )} = w_{0} + w_{1}\right ]$$

In [21]:
maybe(tyvar(alpha)[z]).gf()


Out[21]:
$$\left [ \mathcal{M}{\left (\alpha,z \right )} = \alpha z + ␣\right ]$$

occupancies


In [22]:
nel = 4
syms=[u[i] for i in range(nel)]
occ_prb, = cp(maybe(tyvar(u[i]*z)) for i in range(nel)).gf() # here we can use the `[z]` notation too.
occ_prb


Out[22]:
$$\times{\left (u_{0},u_{2},z,u_{3},u_{1} \right )} = \left(u_{0} z + ␣\right) \left(u_{1} z + ␣\right) \left(u_{2} z + ␣\right) \left(u_{3} z + ␣\right)$$

In [23]:
occupancy(occ_prb, syms, objects='unlike', boxes='unlike').series(z)


Out[23]:
$$\operatorname{gf}{\left (u_{0},u_{3},␣,u_{1},z,u_{2} \right )} = \left(z u_{0} + ␣\right) \left(z u_{1} + ␣\right) \left(z u_{2} + ␣\right) \left(z u_{3} + ␣\right) = z^{4} u_{0} u_{1} u_{2} u_{3} + z^{3} \left(u_{0} u_{1} u_{2} ␣ + u_{0} u_{1} ␣ u_{3} + u_{0} ␣ u_{2} u_{3} + ␣ u_{1} u_{2} u_{3}\right) + z^{2} \left(u_{0} u_{1} ␣^{2} + u_{0} ␣ u_{2} ␣ + u_{0} ␣^{2} u_{3} + ␣ u_{1} u_{2} ␣ + ␣ u_{1} ␣ u_{3} + ␣^{2} u_{2} u_{3}\right) + z \left(u_{0} ␣^{3} + ␣ u_{1} ␣^{2} + ␣^{2} u_{2} ␣ + ␣^{3} u_{3}\right) + ␣^{4}$$

In [8]:
occupancy(occ_prb, syms, objects='unlike', boxes='like').series(z)


Out[8]:
$$\operatorname{gf}{\left (u_{2},u_{3},z,u_{0},u_{1},␣ \right )} = \left(u_{0} z + ␣\right) \left(u_{1} z + ␣\right) \left(u_{2} z + ␣\right) \left(u_{3} z + ␣\right) = u_{0} u_{1} u_{2} u_{3} z^{4} + z^{3} \left(u_{0} u_{1} u_{2} ␣ + u_{0} u_{1} u_{3} ␣ + u_{0} u_{2} u_{3} ␣ + u_{1} u_{2} u_{3} ␣\right) + z^{2} \left(u_{0} u_{1} ␣^{2} + u_{0} u_{2} ␣^{2} + u_{0} u_{3} ␣^{2} + u_{1} u_{2} ␣^{2} + u_{1} u_{3} ␣^{2} + u_{2} u_{3} ␣^{2}\right) + z \left(u_{0} ␣^{3} + u_{1} ␣^{3} + u_{2} ␣^{3} + u_{3} ␣^{3}\right) + ␣^{4}$$

In [9]:
occupancy(occ_prb, syms, objects='like', boxes='unlike').series(z)


Out[9]:
$$\operatorname{gf}{\left (␣,\bullet,z \right )} = \left(z \bullet + ␣\right)^{4} = z^{4} \bullet^{4} + z^{3} \left(\bullet ␣ \bullet^{2} + \bullet^{2} ␣ \bullet + \bullet^{3} ␣ + ␣ \bullet^{3}\right) + z^{2} \left(\bullet ␣ \bullet ␣ + \bullet ␣^{2} \bullet + \bullet^{2} ␣^{2} + ␣ \bullet ␣ \bullet + ␣ \bullet^{2} ␣ + ␣^{2} \bullet^{2}\right) + z \left(\bullet ␣^{3} + ␣ \bullet ␣^{2} + ␣^{2} \bullet ␣ + ␣^{3} \bullet\right) + ␣^{4}$$

In [10]:
occupancy(occ_prb, syms, objects='like', boxes='like').series(z)


Out[10]:
$$\operatorname{gf}{\left (\circ,z \right )} = \left(\circ z + 1\right)^{4} = \circ^{4} z^{4} + 4 \circ^{3} z^{3} + 6 \circ^{2} z^{2} + 4 \circ z + 1$$


In [26]:
u_hat = symbols(r'␣_0:10')
nel = 3
occ_prb, = cp(tyvar(z*(sum(u[j] for j in range(nel) if j != i))) | tyvar(u_hat[i]) 
              for i in range(nel)).gf()
occ_prb


Out[26]:
$$\times{\left (␣_{1},␣_{2},z,␣_{0} \right )} = \left(z \left(u_{0} + u_{1}\right) + ␣_{2}\right) \left(z \left(u_{0} + u_{2}\right) + ␣_{1}\right) \left(z \left(u_{1} + u_{2}\right) + ␣_{0}\right)$$

In [27]:
syms=[u[i] for i in range(nel)]+[u_hat[i] for i in range(nel)]
occupancy(occ_prb, syms, objects='unlike', boxes='unlike').series(z)


Out[27]:
$$\operatorname{gf}{\left (u_{1},␣_{0},u_{2},␣_{2},z,␣_{1},u_{0} \right )} = \left(z \left(u_{1} + u_{2}\right) + ␣_{0}\right) \left(z \left(u_{0} + u_{2}\right) + ␣_{1}\right) \left(z \left(u_{0} + u_{1}\right) + ␣_{2}\right) = z^{3} \left(u_{1} u_{0} u_{1} + u_{1} u_{0}^{2} + u_{1} u_{2} u_{0} + u_{1} u_{2} u_{1} + u_{2} u_{0} u_{1} + u_{2} u_{0}^{2} + u_{2}^{2} u_{0} + u_{2}^{2} u_{1}\right) + z^{2} \left(u_{1} u_{0} ␣_{2} + u_{1} u_{2} ␣_{2} + u_{1} ␣_{1} u_{0} + u_{1} ␣_{1} u_{1} + u_{2} u_{0} ␣_{2} + u_{2} ␣_{1} u_{0} + u_{2} ␣_{1} u_{1} + u_{2}^{2} ␣_{2} + ␣_{0} u_{0} u_{1} + ␣_{0} u_{0}^{2} + ␣_{0} u_{2} u_{0} + ␣_{0} u_{2} u_{1}\right) + z \left(u_{1} ␣_{1} ␣_{2} + u_{2} ␣_{1} ␣_{2} + ␣_{0} u_{0} ␣_{2} + ␣_{0} u_{2} ␣_{2} + ␣_{0} ␣_{1} u_{0} + ␣_{0} ␣_{1} u_{1}\right) + ␣_{0} ␣_{1} ␣_{2}$$

In [28]:
occupancy(occ_prb, syms, objects='unlike', boxes='like').series(z)


Out[28]:
$$\operatorname{gf}{\left (␣_{1},␣_{2},u_{2},z,␣_{0},u_{0},u_{1} \right )} = \left(z \left(u_{0} + u_{1}\right) + ␣_{2}\right) \left(z \left(u_{0} + u_{2}\right) + ␣_{1}\right) \left(z \left(u_{1} + u_{2}\right) + ␣_{0}\right) = z^{3} \left(u_{0}^{2} u_{1} + u_{0}^{2} u_{2} + u_{0} u_{1}^{2} + 2 u_{0} u_{1} u_{2} + u_{0} u_{2}^{2} + u_{1}^{2} u_{2} + u_{1} u_{2}^{2}\right) + z^{2} \left(u_{0}^{2} ␣_{0} + u_{0} u_{1} ␣_{0} + u_{0} u_{1} ␣_{1} + u_{0} u_{1} ␣_{2} + u_{0} u_{2} ␣_{0} + u_{0} u_{2} ␣_{1} + u_{0} u_{2} ␣_{2} + u_{1}^{2} ␣_{1} + u_{1} u_{2} ␣_{0} + u_{1} u_{2} ␣_{1} + u_{1} u_{2} ␣_{2} + u_{2}^{2} ␣_{2}\right) + z \left(u_{0} ␣_{0} ␣_{1} + u_{0} ␣_{0} ␣_{2} + u_{1} ␣_{0} ␣_{1} + u_{1} ␣_{1} ␣_{2} + u_{2} ␣_{0} ␣_{2} + u_{2} ␣_{1} ␣_{2}\right) + ␣_{0} ␣_{1} ␣_{2}$$

In [29]:
occupancy(occ_prb, syms, objects='like', boxes='unlike').series(z)


Out[29]:
$$\operatorname{gf}{\left (z,\bullet \right )} = \left(2 z \bullet + \bullet\right)^{3} = 8 z^{3} \bullet^{3} + 12 z^{2} \bullet^{3} + 6 z \bullet^{3} + \bullet^{3}$$

In [30]:
occupancy(occ_prb, syms, objects='like', boxes='like').series(z)


Out[30]:
$$\operatorname{gf}{\left (\circ,z \right )} = \left(2 \circ z + \circ\right)^{3} = 8 \circ^{3} z^{3} + 12 \circ^{3} z^{2} + 6 \circ^{3} z + \circ^{3}$$


In [31]:
occupancy_problem, = cp(maybe(du(tyvar((u[i]*z)**(j+1)) for j in range(i+1))) 
                        for i in range(3)).gf()
occupancy_problem


Out[31]:
$$\times{\left (u_{2},u_{0},u_{1},z \right )} = \left(u_{0} z + ␣\right) \left(u_{1}^{2} z^{2} + u_{1} z + ␣\right) \left(u_{2}^{3} z^{3} + u_{2}^{2} z^{2} + u_{2} z + ␣\right)$$

In [32]:
occupancy(occupancy_problem, syms=[u[i] for i in range(3)], objects='unlike', boxes='unlike').series(z)


Out[32]:
$$\operatorname{gf}{\left (u_{1},z,u_{2},␣,u_{0} \right )} = \left(z u_{0} + ␣\right) \left(z^{2} u_{1}^{2} + z u_{1} + ␣\right) \left(z^{3} u_{2}^{3} + z^{2} u_{2}^{2} + z u_{2} + ␣\right) = ␣^{3} + z \left(u_{0} ␣^{2} + ␣ u_{1} ␣ + ␣^{2} u_{2}\right) + z^{2} \left(u_{0} u_{1} ␣ + u_{0} ␣ u_{2} + ␣ u_{1} u_{2} + ␣ u_{1}^{2} ␣ + ␣^{2} u_{2}^{2}\right) + z^{3} \left(u_{0} u_{1} u_{2} + u_{0} u_{1}^{2} ␣ + u_{0} ␣ u_{2}^{2} + ␣ u_{1} u_{2}^{2} + ␣ u_{1}^{2} u_{2} + ␣^{2} u_{2}^{3}\right) + z^{4} \left(u_{0} u_{1} u_{2}^{2} + u_{0} u_{1}^{2} u_{2} + u_{0} ␣ u_{2}^{3} + ␣ u_{1} u_{2}^{3} + ␣ u_{1}^{2} u_{2}^{2}\right) + z^{5} \left(u_{0} u_{1} u_{2}^{3} + u_{0} u_{1}^{2} u_{2}^{2} + ␣ u_{1}^{2} u_{2}^{3}\right) + O\left(z^{6}\right)$$

In [33]:
occupancy(occupancy_problem, syms=[u[i] for i in range(3)], objects='unlike', boxes='like').series(z)


Out[33]:
$$\operatorname{gf}{\left (u_{2},z,u_{0},u_{1},␣ \right )} = \left(u_{0} z + ␣\right) \left(u_{1}^{2} z^{2} + u_{1} z + ␣\right) \left(u_{2}^{3} z^{3} + u_{2}^{2} z^{2} + u_{2} z + ␣\right) = ␣^{3} + z \left(u_{0} ␣^{2} + u_{1} ␣^{2} + u_{2} ␣^{2}\right) + z^{2} \left(u_{0} u_{1} ␣ + u_{0} u_{2} ␣ + u_{1}^{2} ␣^{2} + u_{1} u_{2} ␣ + u_{2}^{2} ␣^{2}\right) + z^{3} \left(u_{0} u_{1}^{2} ␣ + u_{0} u_{1} u_{2} + u_{0} u_{2}^{2} ␣ + u_{1}^{2} u_{2} ␣ + u_{1} u_{2}^{2} ␣ + u_{2}^{3} ␣^{2}\right) + z^{4} \left(u_{0} u_{1}^{2} u_{2} + u_{0} u_{1} u_{2}^{2} + u_{0} u_{2}^{3} ␣ + u_{1}^{2} u_{2}^{2} ␣ + u_{1} u_{2}^{3} ␣\right) + z^{5} \left(u_{0} u_{1}^{2} u_{2}^{2} + u_{0} u_{1} u_{2}^{3} + u_{1}^{2} u_{2}^{3} ␣\right) + O\left(z^{6}\right)$$

In [34]:
occupancy(occupancy_problem, syms=[u[i] for i in range(3)], objects='like', boxes='unlike').series(z)


Out[34]:
$$\operatorname{gf}{\left (z,␣,\bullet \right )} = \left(z \bullet + ␣\right) \left(z^{2} \bullet^{2} + z \bullet + ␣\right) \left(z^{3} \bullet^{3} + z^{2} \bullet^{2} + z \bullet + ␣\right) = ␣^{3} + z \left(\bullet ␣^{2} + ␣ \bullet ␣ + ␣^{2} \bullet\right) + z^{2} \left(\bullet ␣ \bullet + \bullet^{2} ␣ + ␣ \bullet^{2} + ␣ \bullet^{2} ␣ + ␣^{2} \bullet^{2}\right) + z^{3} \left(\bullet ␣ \bullet^{2} + \bullet^{3} + \bullet^{3} ␣ + 2 ␣ \bullet^{3} + ␣^{2} \bullet^{3}\right) + z^{4} \left(\bullet ␣ \bullet^{3} + 2 \bullet^{4} + 2 ␣ \bullet^{4}\right) + z^{5} \left(2 \bullet^{5} + ␣ \bullet^{5}\right) + O\left(z^{6}\right)$$

In [35]:
occupancy(occupancy_problem, syms=[u[i] for i in range(3)], objects='like', boxes='like').series(z)


Out[35]:
$$\operatorname{gf}{\left (\circ,z \right )} = \left(\circ z + 1\right) \left(\circ^{2} z^{2} + \circ z + 1\right) \left(\circ^{3} z^{3} + \circ^{2} z^{2} + \circ z + 1\right) = 1 + 3 \circ z + 5 \circ^{2} z^{2} + 6 \circ^{3} z^{3} + 5 \circ^{4} z^{4} + 3 \circ^{5} z^{5} + O\left(z^{6}\right)$$

In [36]:
((1+t)*(1+t+t**2)*(1+t+t**2+t**3)).series(t,n=10) # just for checking


Out[36]:
$$t^{6} + 3 t^{5} + 5 t^{4} + 6 t^{3} + 5 t^{2} + 3 t + 1$$


In [34]:
def sums_of_powers(boxes, base):
    p = IndexedBase('\space')
    return cp(cp() | tyvar(p[j]*z**(base**i)) 
              for i in range(0,boxes) 
              for j in [Pow(base,i,evaluate=False)] # implicit let
             ).gf()

In [35]:
occupancy, = sums_of_powers(boxes=4, base=2)
occupancy.series(z, n=32)


Out[35]:
$$\times{\left (z,{\space}_{2^{3}},{\space}_{2^{1}},{\space}_{2^{2}},{\space}_{2^{0}} \right )} = \left(z {\space}_{2^{0}} + 1\right) \left(z^{2} {\space}_{2^{1}} + 1\right) \left(z^{4} {\space}_{2^{2}} + 1\right) \left(z^{8} {\space}_{2^{3}} + 1\right) = z^{15} {\space}_{2^{0}} {\space}_{2^{1}} {\space}_{2^{2}} {\space}_{2^{3}} + z^{14} {\space}_{2^{1}} {\space}_{2^{2}} {\space}_{2^{3}} + z^{13} {\space}_{2^{0}} {\space}_{2^{2}} {\space}_{2^{3}} + z^{12} {\space}_{2^{2}} {\space}_{2^{3}} + z^{11} {\space}_{2^{0}} {\space}_{2^{1}} {\space}_{2^{3}} + z^{10} {\space}_{2^{1}} {\space}_{2^{3}} + z^{9} {\space}_{2^{0}} {\space}_{2^{3}} + z^{8} {\space}_{2^{3}} + z^{7} {\space}_{2^{0}} {\space}_{2^{1}} {\space}_{2^{2}} + z^{6} {\space}_{2^{1}} {\space}_{2^{2}} + z^{5} {\space}_{2^{0}} {\space}_{2^{2}} + z^{4} {\space}_{2^{2}} + z^{3} {\space}_{2^{0}} {\space}_{2^{1}} + z^{2} {\space}_{2^{1}} + z {\space}_{2^{0}} + 1$$

In [36]:
occupancy, = sums_of_powers(boxes=4, base=3)
occupancy.series(z, n=100)


Out[36]:
$$\times{\left (z,{\space}_{3^{0}},{\space}_{3^{2}},{\space}_{3^{1}},{\space}_{3^{3}} \right )} = \left(z {\space}_{3^{0}} + 1\right) \left(z^{3} {\space}_{3^{1}} + 1\right) \left(z^{9} {\space}_{3^{2}} + 1\right) \left(z^{27} {\space}_{3^{3}} + 1\right) = z^{40} {\space}_{3^{0}} {\space}_{3^{1}} {\space}_{3^{2}} {\space}_{3^{3}} + z^{39} {\space}_{3^{1}} {\space}_{3^{2}} {\space}_{3^{3}} + z^{37} {\space}_{3^{0}} {\space}_{3^{2}} {\space}_{3^{3}} + z^{36} {\space}_{3^{2}} {\space}_{3^{3}} + z^{31} {\space}_{3^{0}} {\space}_{3^{1}} {\space}_{3^{3}} + z^{30} {\space}_{3^{1}} {\space}_{3^{3}} + z^{28} {\space}_{3^{0}} {\space}_{3^{3}} + z^{27} {\space}_{3^{3}} + z^{13} {\space}_{3^{0}} {\space}_{3^{1}} {\space}_{3^{2}} + z^{12} {\space}_{3^{1}} {\space}_{3^{2}} + z^{10} {\space}_{3^{0}} {\space}_{3^{2}} + z^{9} {\space}_{3^{2}} + z^{4} {\space}_{3^{0}} {\space}_{3^{1}} + z^{3} {\space}_{3^{1}} + z {\space}_{3^{0}} + 1$$

In [37]:
occupancy, = sums_of_powers(boxes=4, base=5)
occupancy.series(z, n=200)


Out[37]:
$$\times{\left (z,{\space}_{5^{3}},{\space}_{5^{1}},{\space}_{5^{2}},{\space}_{5^{0}} \right )} = \left(z {\space}_{5^{0}} + 1\right) \left(z^{5} {\space}_{5^{1}} + 1\right) \left(z^{25} {\space}_{5^{2}} + 1\right) \left(z^{125} {\space}_{5^{3}} + 1\right) = z^{156} {\space}_{5^{0}} {\space}_{5^{1}} {\space}_{5^{2}} {\space}_{5^{3}} + z^{155} {\space}_{5^{1}} {\space}_{5^{2}} {\space}_{5^{3}} + z^{151} {\space}_{5^{0}} {\space}_{5^{2}} {\space}_{5^{3}} + z^{150} {\space}_{5^{2}} {\space}_{5^{3}} + z^{131} {\space}_{5^{0}} {\space}_{5^{1}} {\space}_{5^{3}} + z^{130} {\space}_{5^{1}} {\space}_{5^{3}} + z^{126} {\space}_{5^{0}} {\space}_{5^{3}} + z^{125} {\space}_{5^{3}} + z^{31} {\space}_{5^{0}} {\space}_{5^{1}} {\space}_{5^{2}} + z^{30} {\space}_{5^{1}} {\space}_{5^{2}} + z^{26} {\space}_{5^{0}} {\space}_{5^{2}} + z^{25} {\space}_{5^{2}} + z^{6} {\space}_{5^{0}} {\space}_{5^{1}} + z^{5} {\space}_{5^{1}} + z {\space}_{5^{0}} + 1$$

In [38]:
occupancy, = sums_of_powers(boxes=4, base=7)
occupancy.series(z, n=500)


Out[38]:
$$\times{\left (z,{\space}_{7^{0}},{\space}_{7^{2}},{\space}_{7^{1}},{\space}_{7^{3}} \right )} = \left(z {\space}_{7^{0}} + 1\right) \left(z^{7} {\space}_{7^{1}} + 1\right) \left(z^{49} {\space}_{7^{2}} + 1\right) \left(z^{343} {\space}_{7^{3}} + 1\right) = z^{400} {\space}_{7^{0}} {\space}_{7^{1}} {\space}_{7^{2}} {\space}_{7^{3}} + z^{399} {\space}_{7^{1}} {\space}_{7^{2}} {\space}_{7^{3}} + z^{393} {\space}_{7^{0}} {\space}_{7^{2}} {\space}_{7^{3}} + z^{392} {\space}_{7^{2}} {\space}_{7^{3}} + z^{351} {\space}_{7^{0}} {\space}_{7^{1}} {\space}_{7^{3}} + z^{350} {\space}_{7^{1}} {\space}_{7^{3}} + z^{344} {\space}_{7^{0}} {\space}_{7^{3}} + z^{343} {\space}_{7^{3}} + z^{57} {\space}_{7^{0}} {\space}_{7^{1}} {\space}_{7^{2}} + z^{56} {\space}_{7^{1}} {\space}_{7^{2}} + z^{50} {\space}_{7^{0}} {\space}_{7^{2}} + z^{49} {\space}_{7^{2}} + z^{8} {\space}_{7^{0}} {\space}_{7^{1}} + z^{7} {\space}_{7^{1}} + z {\space}_{7^{0}} + 1$$

In [39]:
assert 393 == 7**0 + 7**2 + 7**3 # _.rhs.rhs.coeff(z, 393)

Differences


In [119]:
difference = (cp() | tyvar(-gamma*z))
ones = nats * difference
ones_gf, = ones.gf()
ones_gf


Out[119]:
$$\times{\left (z,\gamma,{w}_{1},{w}_{0} \right )} = \frac{- \gamma z + 1}{\left(z {w}_{0} - 1\right) \left(z {w}_{1} - 1\right)}$$

In [121]:
ones_gf(z,1,1,1).series(z, n=10) # check!


Out[121]:
$$1 + z + z^{2} + z^{3} + z^{4} + z^{5} + z^{6} + z^{7} + z^{8} + z^{9} + O\left(z^{10}\right)$$

In [123]:
one_gf, = (ones * difference).gf()
one_gf.series(z, n=10).rhs.rhs.subs({w[0]:1, w[1]:1, gamma:1})


Out[123]:
$$1 + O\left(z^{10}\right)$$


In [6]:
l = IndexedBase(r'\circ')
def linear_comb_of_powers(boxes, base):
    return cp(lst(tyvar(Mul(l[j], z**(base**i), evaluate=False)))
              for i in range(boxes) 
              for j in [Pow(base,i,evaluate=False)]).gf()

In [7]:
occupancy, = linear_comb_of_powers(boxes=4, base=Integer(2))
occupancy.series(z, n=8)


Out[7]:
$$\times{\left ({\circ}_{2^{2}},{\circ}_{2^{3}},{\circ}_{2^{1}},z,{\circ}_{2^{0}} \right )} = \frac{1}{\left(z {\circ}_{1} - 1\right) \left(z^{2} {\circ}_{2} - 1\right) \left(z^{4} {\circ}_{4} - 1\right) \left(z^{8} {\circ}_{8} - 1\right)} = 1 + z {\circ}_{1} + z^{2} \left({\circ}_{1}^{2} + {\circ}_{2}\right) + z^{3} \left({\circ}_{1}^{3} + {\circ}_{1} {\circ}_{2}\right) + z^{4} \left({\circ}_{1}^{4} + {\circ}_{1}^{2} {\circ}_{2} + {\circ}_{2}^{2} + {\circ}_{4}\right) + z^{5} \left({\circ}_{1}^{5} + {\circ}_{1}^{3} {\circ}_{2} + {\circ}_{1} {\circ}_{2}^{2} + {\circ}_{1} {\circ}_{4}\right) + z^{6} \left({\circ}_{1}^{6} + {\circ}_{1}^{4} {\circ}_{2} + {\circ}_{1}^{2} {\circ}_{2}^{2} + {\circ}_{1}^{2} {\circ}_{4} + {\circ}_{2}^{3} + {\circ}_{2} {\circ}_{4}\right) + z^{7} \left({\circ}_{1}^{7} + {\circ}_{1}^{5} {\circ}_{2} + {\circ}_{1}^{3} {\circ}_{2}^{2} + {\circ}_{1}^{3} {\circ}_{4} + {\circ}_{1} {\circ}_{2}^{3} + {\circ}_{1} {\circ}_{2} {\circ}_{4}\right) + O\left(z^{8}\right)$$

In [59]:
occupancy, = linear_comb_of_powers(boxes=4, base=3)
occupancy.series(z, n=9)


Out[59]:
$$\times{\left ({\circ}_{3^{0}},{\circ}_{3^{1}},{\circ}_{3^{2}},z,{\circ}_{3^{3}} \right )} = \frac{1}{\left(z {\circ}_{1} - 1\right) \left(z^{3} {\circ}_{3} - 1\right) \left(z^{9} {\circ}_{9} - 1\right) \left(z^{27} {\circ}_{27} - 1\right)} = 1 + z {\circ}_{1} + z^{2} {\circ}_{1}^{2} + z^{3} \left({\circ}_{1}^{3} + {\circ}_{3}\right) + z^{4} \left({\circ}_{1}^{4} + {\circ}_{1} {\circ}_{3}\right) + z^{5} \left({\circ}_{1}^{5} + {\circ}_{1}^{2} {\circ}_{3}\right) + z^{6} \left({\circ}_{1}^{6} + {\circ}_{1}^{3} {\circ}_{3} + {\circ}_{3}^{2}\right) + z^{7} \left({\circ}_{1}^{7} + {\circ}_{1}^{4} {\circ}_{3} + {\circ}_{1} {\circ}_{3}^{2}\right) + z^{8} \left({\circ}_{1}^{8} + {\circ}_{1}^{5} {\circ}_{3} + {\circ}_{1}^{2} {\circ}_{3}^{2}\right) + O\left(z^{9}\right)$$

In [60]:
occupancy, = linear_comb_of_powers(boxes=4, base=5)
occupancy.series(z, n=10)


Out[60]:
$$\times{\left ({\circ}_{5^{2}},{\circ}_{5^{3}},{\circ}_{5^{0}},{\circ}_{5^{1}},z \right )} = \frac{1}{\left(z {\circ}_{1} - 1\right) \left(z^{5} {\circ}_{5} - 1\right) \left(z^{25} {\circ}_{25} - 1\right) \left(z^{125} {\circ}_{125} - 1\right)} = 1 + z {\circ}_{1} + z^{2} {\circ}_{1}^{2} + z^{3} {\circ}_{1}^{3} + z^{4} {\circ}_{1}^{4} + z^{5} \left({\circ}_{1}^{5} + {\circ}_{5}\right) + z^{6} \left({\circ}_{1}^{6} + {\circ}_{1} {\circ}_{5}\right) + z^{7} \left({\circ}_{1}^{7} + {\circ}_{1}^{2} {\circ}_{5}\right) + z^{8} \left({\circ}_{1}^{8} + {\circ}_{1}^{3} {\circ}_{5}\right) + z^{9} \left({\circ}_{1}^{9} + {\circ}_{1}^{4} {\circ}_{5}\right) + O\left(z^{10}\right)$$

In [399]:
def uniform_rv(n):
    return tyvar(S(1)/nel) * lst(tyvar(x))
occupancy, = uniform_rv(n=10).gf()
occupancy.series(x,n=10)


Out[399]:
$$\times{\left (x,\frac{1}{10} \right )} = - \frac{1}{10 \left(x - 1\right)} = \frac{1}{10} + \frac{x}{10} + \frac{x^{2}}{10} + \frac{x^{3}}{10} + \frac{x^{4}}{10} + \frac{x^{5}}{10} + \frac{x^{6}}{10} + \frac{x^{7}}{10} + \frac{x^{8}}{10} + \frac{x^{9}}{10} + O\left(x^{10}\right)$$

In [394]:
class lst_structure_w(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha | lst(me)
    
    def label(self):
        return r'\mathcal{L}_{w}' # `_s` stands for "structure"

In [193]:
lst_structure_w(tyvar(alpha)).gf()


Out[193]:
$$\left [ \mathcal{L}_{w}{\left (\alpha \right )} = \frac{\alpha}{2} - \frac{\sqrt{\left(\alpha - 3\right) \left(\alpha + 1\right)}}{2} + \frac{1}{2}, \quad \mathcal{L}_{w}{\left (\alpha \right )} = \frac{\alpha}{2} + \frac{\sqrt{\left(\alpha - 3\right) \left(\alpha + 1\right)}}{2} + \frac{1}{2}\right ]$$

In [194]:
[gf.series(alpha) for gf in _]


Out[194]:
$$\left [ \mathcal{L}_{w}{\left (\alpha \right )} = \frac{\alpha}{2} - \frac{\sqrt{\left(\alpha - 3\right) \left(\alpha + 1\right)}}{2} + \frac{1}{2} = - \frac{\sqrt{3} i}{2} + \frac{1}{2} + \alpha \left(\frac{1}{2} - \frac{\sqrt{3} i}{6}\right) + \frac{\sqrt{3} i \alpha^{2}}{9} - \frac{\sqrt{3} i \alpha^{3}}{27} + \frac{2 \sqrt{3} i \alpha^{4}}{81} - \frac{4 \sqrt{3} i \alpha^{5}}{243} + O\left(\alpha^{6}\right), \quad \mathcal{L}_{w}{\left (\alpha \right )} = \frac{\alpha}{2} + \frac{\sqrt{\left(\alpha - 3\right) \left(\alpha + 1\right)}}{2} + \frac{1}{2} = \frac{\sqrt{3} i}{2} + \frac{1}{2} + \alpha \left(\frac{1}{2} + \frac{\sqrt{3} i}{6}\right) - \frac{\sqrt{3} i \alpha^{2}}{9} + \frac{\sqrt{3} i \alpha^{3}}{27} - \frac{2 \sqrt{3} i \alpha^{4}}{81} + \frac{4 \sqrt{3} i \alpha^{5}}{243} + O\left(\alpha^{6}\right)\right ]$$

In [8]:
class lst_structure(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha | (lst(me) * me * me)
    
    def label(self):
        return r'\mathcal{L}_{s}' # `_s` stands for "structure"

In [9]:
lst_structure(tyvar(alpha)).gf()


Out[9]:
$$\left [ \mathcal{L}_{s}{\left (\alpha \right )} = \frac{\alpha}{4} - \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4}, \quad \mathcal{L}_{s}{\left (\alpha \right )} = \frac{\alpha}{4} + \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4}\right ]$$

In [10]:
_[0].series(alpha, n=10)


Out[10]:
$$\mathcal{L}_{s}{\left (\alpha \right )} = \frac{\alpha}{4} - \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4} = \alpha + \alpha^{2} + 3 \alpha^{3} + 11 \alpha^{4} + 45 \alpha^{5} + 197 \alpha^{6} + 903 \alpha^{7} + 4279 \alpha^{8} + 20793 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [13]:
class structure(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha | (bin_tree(me) * me * me)
    
    def label(self):
        return r'\mathcal{S}'

In [16]:
structure(tyvar(alpha)).gf()


Out[16]:
$$\left [ \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}, \quad \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}, \quad \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}, \quad \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}, \quad \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\left(- \frac{1}{2} - \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}, \quad \mathcal{S}{\left (\alpha \right )} = - \frac{\alpha}{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}} - \frac{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{27 \alpha^{2}}{2} + \frac{\sqrt{729 \alpha^{4} - 108 \alpha^{3}}}{2}}}{3}\right ]$$

In [17]:
gf = _[0]

In [33]:
gf.simplify()


Out[33]:
$$\mathcal{S}{\left (\alpha \right )} = - \frac{2 \sqrt[3]{18} \alpha + \sqrt[3]{12} \left(9 \alpha^{2} + \sqrt{3} \sqrt{\alpha^{3} \left(27 \alpha - 4\right)}\right)^{\frac{2}{3}}}{6 \sqrt[3]{9 \alpha^{2} + \sqrt{3} \sqrt{\alpha^{3} \left(27 \alpha - 4\right)}}}$$

In [37]:
nel = 7
s = gf.simplify().series(alpha, n=nel).rhs.rhs
[s.coeff(alpha, n=i).subs({pow(-1,S(1)/3):-1}).radsimp().powsimp() for i in range(nel)]


Out[37]:
$$\left [ 0, \quad 1, \quad 1, \quad 3, \quad 12, \quad 55, \quad 273\right ]$$

In [48]:
class structure(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha | (nnbin_tree(me) * me)
    
    def label(self):
        return r'\mathcal{S}'

In [49]:
structure(tyvar(alpha)).gf()


Out[49]:
$$\left [ \mathcal{S}{\left (\alpha \right )} = \frac{\alpha}{2} - \frac{\sqrt{- 4 \alpha^{2} - 4 \alpha + 1}}{4} + \frac{1}{4}, \quad \mathcal{S}{\left (\alpha \right )} = \frac{\alpha}{2} + \frac{\sqrt{- 4 \alpha^{2} - 4 \alpha + 1}}{4} + \frac{1}{4}, \quad \mathcal{S}{\left (\alpha \right )} = \frac{\alpha}{2} - \frac{\sqrt{- 4 \alpha^{2} - 4 \alpha + 1}}{4} + \frac{1}{4}, \quad \mathcal{S}{\left (\alpha \right )} = \frac{\alpha}{2} + \frac{\sqrt{- 4 \alpha^{2} - 4 \alpha + 1}}{4} + \frac{1}{4}\right ]$$

In [50]:
gf = _[0]

In [51]:
gf.simplify()


Out[51]:
$$\mathcal{S}{\left (\alpha \right )} = \frac{\alpha}{2} - \frac{\sqrt{- 4 \alpha^{2} - 4 \alpha + 1}}{4} + \frac{1}{4}$$

In [45]:
nel = 20
s = gf.simplify().series(alpha, n=nel).rhs.rhs
[s.coeff(alpha, n=i).subs({pow(-1,S(1)/3):-1}).radsimp().powsimp() for i in range(nel)]


Out[45]:
$$\left [ 0, \quad 1, \quad 1, \quad 2, \quad 6, \quad 20, \quad 72, \quad 272, \quad 1064, \quad 4272, \quad 17504, \quad 72896, \quad 307648, \quad 1312896, \quad 5655808, \quad 24562176, \quad 107419264, \quad 472675072, \quad 2091206144, \quad 9296612352\right ]$$

In [52]:
class nn_structure(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha * bin_tree(nnbin_tree(me))
    
    def label(self):
        return r'\mathcal{L}_{s}^{+}' # `_s` stands for "structure"

In [ ]:
nn_structure(tyvar(alpha)).gf()

In [202]:
_[0].series(alpha, n=10)


Out[202]:
$$\mathcal{L}_{s}^{+}{\left (\alpha \right )} = \frac{\alpha}{4} - \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4} = \alpha + \alpha^{2} + 3 \alpha^{3} + 11 \alpha^{4} + 45 \alpha^{5} + 197 \alpha^{6} + 903 \alpha^{7} + 4279 \alpha^{8} + 20793 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [199]:
class nnlst_structure(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha * lst(nnlst(me))
    
    def label(self):
        return r'\mathcal{L}_{s}^{+}' # `_s` stands for "structure"

In [201]:
nnlst_structure(tyvar(alpha)).gf()


Out[201]:
$$\left [ \mathcal{L}_{s}^{+}{\left (\alpha \right )} = \frac{\alpha}{4} - \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4}, \quad \mathcal{L}_{s}^{+}{\left (\alpha \right )} = \frac{\alpha}{4} + \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4}\right ]$$

In [202]:
_[0].series(alpha, n=10)


Out[202]:
$$\mathcal{L}_{s}^{+}{\left (\alpha \right )} = \frac{\alpha}{4} - \frac{\sqrt{\alpha^{2} - 6 \alpha + 1}}{4} + \frac{1}{4} = \alpha + \alpha^{2} + 3 \alpha^{3} + 11 \alpha^{4} + 45 \alpha^{5} + 197 \alpha^{6} + 903 \alpha^{7} + 4279 \alpha^{8} + 20793 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [203]:
class tree(rec):
         
    def definition(self, alpha):
        return alpha * lst(self.me())
    
    def label(self):
        return r'\mathcal{T}'

In [204]:
tree(tyvar(alpha)).gf()


Out[204]:
$$\left [ \mathcal{T}{\left (\alpha \right )} = - \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2}, \quad \mathcal{T}{\left (\alpha \right )} = \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2}\right ]$$

In [205]:
_[0].series(alpha, n=10)


Out[205]:
$$\mathcal{T}{\left (\alpha \right )} = - \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2} = \alpha + \alpha^{2} + 2 \alpha^{3} + 5 \alpha^{4} + 14 \alpha^{5} + 42 \alpha^{6} + 132 \alpha^{7} + 429 \alpha^{8} + 1430 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [206]:
class combination(rec):
         
    def definition(self, alpha):
        me = self.me()
        return alpha | (me * me)
    
    def label(self):
        return r'\mathcal{C}'

In [209]:
combination(tyvar(alpha)).gf()


Out[209]:
$$\left [ \mathcal{C}{\left (\alpha \right )} = - \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2}, \quad \mathcal{C}{\left (\alpha \right )} = \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2}\right ]$$

In [210]:
_[0].series(alpha, n=10)


Out[210]:
$$\mathcal{C}{\left (\alpha \right )} = - \frac{\sqrt{- 4 \alpha + 1}}{2} + \frac{1}{2} = \alpha + \alpha^{2} + 2 \alpha^{3} + 5 \alpha^{4} + 14 \alpha^{5} + 42 \alpha^{6} + 132 \alpha^{7} + 429 \alpha^{8} + 1430 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [211]:
class ab_tree(rec):
         
    def definition(self, alpha, beta):
        me = self.me()
        return beta | (alpha * me * me)
    
    def label(self):
        return r'\mathcal{T}_{a,b}'

In [212]:
ab_tree_gfs = ab_tree(tyvar(alpha), tyvar(beta)).gf()
ab_tree_gfs


Out[212]:
$$\left [ \mathcal{T}_{a,b}{\left (\beta,\alpha \right )} = \frac{- \sqrt{- 4 \alpha \beta + 1} + 1}{2 \alpha}, \quad \mathcal{T}_{a,b}{\left (\beta,\alpha \right )} = \frac{\sqrt{- 4 \alpha \beta + 1} + 1}{2 \alpha}\right ]$$

In [213]:
ab_tree_gf = ab_tree_gfs[0]

In [214]:
fab_eq = FEq(ab_tree_gf.lhs, ab_tree_gf.rhs.series(beta, n=20).removeO(), evaluate=False)
fab_eq


Out[214]:
$$\mathcal{T}_{a,b}{\left (\beta,\alpha \right )} = 477638700 \alpha^{18} \beta^{19} + 129644790 \alpha^{17} \beta^{18} + 35357670 \alpha^{16} \beta^{17} + 9694845 \alpha^{15} \beta^{16} + 2674440 \alpha^{14} \beta^{15} + 742900 \alpha^{13} \beta^{14} + 208012 \alpha^{12} \beta^{13} + 58786 \alpha^{11} \beta^{12} + 16796 \alpha^{10} \beta^{11} + 4862 \alpha^{9} \beta^{10} + 1430 \alpha^{8} \beta^{9} + 429 \alpha^{7} \beta^{8} + 132 \alpha^{6} \beta^{7} + 42 \alpha^{5} \beta^{6} + 14 \alpha^{4} \beta^{5} + 5 \alpha^{3} \beta^{4} + 2 \alpha^{2} \beta^{3} + \alpha \beta^{2} + \beta$$

In [215]:
fab_eq(x,x)


Out[215]:
$$477638700 x^{37} + 129644790 x^{35} + 35357670 x^{33} + 9694845 x^{31} + 2674440 x^{29} + 742900 x^{27} + 208012 x^{25} + 58786 x^{23} + 16796 x^{21} + 4862 x^{19} + 1430 x^{17} + 429 x^{15} + 132 x^{13} + 42 x^{11} + 14 x^{9} + 5 x^{7} + 2 x^{5} + x^{3} + x$$

In [216]:
(_*alpha).expand()


Out[216]:
$$477638700 \alpha x^{37} + 129644790 \alpha x^{35} + 35357670 \alpha x^{33} + 9694845 \alpha x^{31} + 2674440 \alpha x^{29} + 742900 \alpha x^{27} + 208012 \alpha x^{25} + 58786 \alpha x^{23} + 16796 \alpha x^{21} + 4862 \alpha x^{19} + 1430 \alpha x^{17} + 429 \alpha x^{15} + 132 \alpha x^{13} + 42 \alpha x^{11} + 14 \alpha x^{9} + 5 \alpha x^{7} + 2 \alpha x^{5} + \alpha x^{3} + \alpha x$$

In [217]:
#with lift_to_Lambda(fab_eq) as F:
B = fab_eq(x,1)
A = fab_eq(1,x)
A,B,


Out[217]:
$$\left ( 477638700 x^{18} + 129644790 x^{17} + 35357670 x^{16} + 9694845 x^{15} + 2674440 x^{14} + 742900 x^{13} + 208012 x^{12} + 58786 x^{11} + 16796 x^{10} + 4862 x^{9} + 1430 x^{8} + 429 x^{7} + 132 x^{6} + 42 x^{5} + 14 x^{4} + 5 x^{3} + 2 x^{2} + x + 1, \quad 477638700 x^{19} + 129644790 x^{18} + 35357670 x^{17} + 9694845 x^{16} + 2674440 x^{15} + 742900 x^{14} + 208012 x^{13} + 58786 x^{12} + 16796 x^{11} + 4862 x^{10} + 1430 x^{9} + 429 x^{8} + 132 x^{7} + 42 x^{6} + 14 x^{5} + 5 x^{4} + 2 x^{3} + x^{2} + x\right )$$

In [218]:
(A+B).expand()


Out[218]:
$$477638700 x^{19} + 607283490 x^{18} + 165002460 x^{17} + 45052515 x^{16} + 12369285 x^{15} + 3417340 x^{14} + 950912 x^{13} + 266798 x^{12} + 75582 x^{11} + 21658 x^{10} + 6292 x^{9} + 1859 x^{8} + 561 x^{7} + 174 x^{6} + 56 x^{5} + 19 x^{4} + 7 x^{3} + 3 x^{2} + 2 x + 1$$

In [219]:
((1+x)*A).expand()


Out[219]:
$$477638700 x^{19} + 607283490 x^{18} + 165002460 x^{17} + 45052515 x^{16} + 12369285 x^{15} + 3417340 x^{14} + 950912 x^{13} + 266798 x^{12} + 75582 x^{11} + 21658 x^{10} + 6292 x^{9} + 1859 x^{8} + 561 x^{7} + 174 x^{6} + 56 x^{5} + 19 x^{4} + 7 x^{3} + 3 x^{2} + 2 x + 1$$

In [223]:
class dyck(rec):
         
    def definition(self, alpha, beta):
        me = self.me()
        return cp() | (alpha * me * beta * me)
    
    def label(self):
        return r'\mathcal{D}'

In [225]:
dyck_gfs = dyck(tyvar(alpha*x), tyvar(beta*x)).gf()
dyck_gfs


Out[225]:
$$\left [ \mathcal{D}{\left (\beta,x,\alpha \right )} = \frac{- \sqrt{- 4 \alpha \beta x^{2} + 1} + 1}{2 \alpha \beta x^{2}}, \quad \mathcal{D}{\left (\beta,x,\alpha \right )} = \frac{\sqrt{- 4 \alpha \beta x^{2} + 1} + 1}{2 \alpha \beta x^{2}}\right ]$$

In [226]:
dyck_gf = dyck_gfs[0]

In [229]:
dyck_gf.series(x,n=10)


Out[229]:
$$\mathcal{D}{\left (\beta,x,\alpha \right )} = \frac{- \sqrt{- 4 \alpha \beta x^{2} + 1} + 1}{2 \alpha \beta x^{2}} = 1 + \alpha \beta x^{2} + 2 \alpha^{2} \beta^{2} x^{4} + 5 \alpha^{3} \beta^{3} x^{6} + 14 \alpha^{4} \beta^{4} x^{8} + O\left(x^{10}\right)$$

In [233]:
class motzkin(rec):
         
    def definition(self, alpha, beta, gamma):
        me = self.me()
        return cp() | (alpha * me * beta * me) | (gamma * me)
    
    def label(self):
        return r'\mathcal{M}'

In [235]:
motzkin_gfs = motzkin(tyvar(alpha*x), tyvar(beta*x), tyvar(gamma*x),).gf()
motzkin_gfs


Out[235]:
$$\left [ \mathcal{M}{\left (x,\gamma,\beta,\alpha \right )} = \frac{- \gamma x - \sqrt{- 4 \alpha \beta x^{2} + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}}, \quad \mathcal{M}{\left (x,\gamma,\beta,\alpha \right )} = \frac{- \gamma x + \sqrt{- 4 \alpha \beta x^{2} + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}}\right ]$$

In [236]:
motzkin_gf = motzkin_gfs[0]

In [237]:
motzkin_gf.series(x,n=10)


Out[237]:
$$\mathcal{M}{\left (x,\gamma,\beta,\alpha \right )} = \frac{- \gamma x - \sqrt{- 4 \alpha \beta x^{2} + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}} = 1 + x^{2} \left(\alpha \beta + \gamma^{2}\right) + x^{3} \left(3 \alpha \beta \gamma + \gamma^{3}\right) + x^{4} \left(2 \alpha^{2} \beta^{2} + 6 \alpha \beta \gamma^{2} + \gamma^{4}\right) + x^{5} \left(10 \alpha^{2} \beta^{2} \gamma + 10 \alpha \beta \gamma^{3} + \gamma^{5}\right) + x^{6} \left(5 \alpha^{3} \beta^{3} + 30 \alpha^{2} \beta^{2} \gamma^{2} + 15 \alpha \beta \gamma^{4} + \gamma^{6}\right) + x^{7} \left(35 \alpha^{3} \beta^{3} \gamma + 70 \alpha^{2} \beta^{2} \gamma^{3} + 21 \alpha \beta \gamma^{5} + \gamma^{7}\right) + x^{8} \left(14 \alpha^{4} \beta^{4} + 140 \alpha^{3} \beta^{3} \gamma^{2} + 140 \alpha^{2} \beta^{2} \gamma^{4} + 28 \alpha \beta \gamma^{6} + \gamma^{8}\right) + x^{9} \left(126 \alpha^{4} \beta^{4} \gamma + 420 \alpha^{3} \beta^{3} \gamma^{3} + 252 \alpha^{2} \beta^{2} \gamma^{5} + 36 \alpha \beta \gamma^{7} + \gamma^{9}\right) + \gamma x + O\left(x^{10}\right)$$

In [238]:
motzkin_gf(x,1,1,1).series(x,n=10)


Out[238]:
$$1 + x + 2 x^{2} + 4 x^{3} + 9 x^{4} + 21 x^{5} + 51 x^{6} + 127 x^{7} + 323 x^{8} + 835 x^{9} + O\left(x^{10}\right)$$

In [294]:
class motzkin_p(rec):
         
    def definition(self, alpha, beta, gamma, eta):
        me = self.me()
        return cp() | (alpha * me * beta * me) | (gamma * me) | (eta * me)
    
    def label(self):
        return r'\mathcal{M}^{+}'

In [295]:
motzkinp_gfs = motzkin_p(tyvar(alpha*x), tyvar(beta*x), tyvar(gamma*x), tyvar(eta*x),).gf()
motzkinp_gfs


Out[295]:
$$\left [ \mathcal{M}^{+}{\left (x,\gamma,\beta,\eta,\alpha \right )} = \frac{- \eta x - \gamma x - \sqrt{- 4 \alpha \beta x^{2} + \eta^{2} x^{2} + 2 \eta \gamma x^{2} - 2 \eta x + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}}, \quad \mathcal{M}^{+}{\left (x,\gamma,\beta,\eta,\alpha \right )} = \frac{- \eta x - \gamma x + \sqrt{- 4 \alpha \beta x^{2} + \eta^{2} x^{2} + 2 \eta \gamma x^{2} - 2 \eta x + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}}\right ]$$

In [298]:
motzkinp_gf = motzkinp_gfs[0]

In [300]:
motzkinp_gf.series(x,n=6)


Out[300]:
$$\mathcal{M}^{+}{\left (x,\gamma,\beta,\eta,\alpha \right )} = \frac{- \eta x - \gamma x - \sqrt{- 4 \alpha \beta x^{2} + \eta^{2} x^{2} + 2 \eta \gamma x^{2} - 2 \eta x + \gamma^{2} x^{2} - 2 \gamma x + 1} + 1}{2 \alpha \beta x^{2}} = 1 + x \left(\eta + \gamma\right) + x^{2} \left(\alpha \beta + \eta^{2} + 2 \eta \gamma + \gamma^{2}\right) + x^{3} \left(3 \alpha \beta \eta + 3 \alpha \beta \gamma + \eta^{3} + 3 \eta^{2} \gamma + 3 \eta \gamma^{2} + \gamma^{3}\right) + x^{4} \left(2 \alpha^{2} \beta^{2} + 6 \alpha \beta \eta^{2} + 12 \alpha \beta \eta \gamma + 6 \alpha \beta \gamma^{2} + \eta^{4} + 4 \eta^{3} \gamma + 6 \eta^{2} \gamma^{2} + 4 \eta \gamma^{3} + \gamma^{4}\right) + x^{5} \left(10 \alpha^{2} \beta^{2} \eta + 10 \alpha^{2} \beta^{2} \gamma + 10 \alpha \beta \eta^{3} + 30 \alpha \beta \eta^{2} \gamma + 30 \alpha \beta \eta \gamma^{2} + 10 \alpha \beta \gamma^{3} + \eta^{5} + 5 \eta^{4} \gamma + 10 \eta^{3} \gamma^{2} + 10 \eta^{2} \gamma^{3} + 5 \eta \gamma^{4} + \gamma^{5}\right) + O\left(x^{6}\right)$$

In [301]:
motzkinp_gf(x,1,1,1,1).series(x,n=10)


Out[301]:
$$1 + 2 x + 5 x^{2} + 14 x^{3} + 42 x^{4} + 132 x^{5} + 429 x^{6} + 1430 x^{7} + 4862 x^{8} + 16796 x^{9} + O\left(x^{10}\right)$$

In [245]:
class fibo(rec):
         
    def definition(self, alpha, beta):
        me = self.me()
        return cp() | alpha | ((beta | (alpha * beta)) * me)
    
    def label(self):
        return r'\mathcal{F}'

In [248]:
fibo_gf, = fibo(tyvar(alpha*x), tyvar(beta*x),).gf()
fibo_gf


Out[248]:
$$\mathcal{F}{\left (\beta,x,\alpha \right )} = - \frac{\alpha x + 1}{\alpha \beta x^{2} + \beta x - 1}$$

In [249]:
fibo_gf.series(x,n=10)


Out[249]:
$$\mathcal{F}{\left (\beta,x,\alpha \right )} = - \frac{\alpha x + 1}{\alpha \beta x^{2} + \beta x - 1} = 1 + x \left(\alpha + \beta\right) + x^{2} \left(2 \alpha \beta + \beta^{2}\right) + x^{3} \left(\alpha^{2} \beta + 3 \alpha \beta^{2} + \beta^{3}\right) + x^{4} \left(3 \alpha^{2} \beta^{2} + 4 \alpha \beta^{3} + \beta^{4}\right) + x^{5} \left(\alpha^{3} \beta^{2} + 6 \alpha^{2} \beta^{3} + 5 \alpha \beta^{4} + \beta^{5}\right) + x^{6} \left(4 \alpha^{3} \beta^{3} + 10 \alpha^{2} \beta^{4} + 6 \alpha \beta^{5} + \beta^{6}\right) + x^{7} \left(\alpha^{4} \beta^{3} + 10 \alpha^{3} \beta^{4} + 15 \alpha^{2} \beta^{5} + 7 \alpha \beta^{6} + \beta^{7}\right) + x^{8} \left(5 \alpha^{4} \beta^{4} + 20 \alpha^{3} \beta^{5} + 21 \alpha^{2} \beta^{6} + 8 \alpha \beta^{7} + \beta^{8}\right) + x^{9} \left(\alpha^{5} \beta^{4} + 15 \alpha^{4} \beta^{5} + 35 \alpha^{3} \beta^{6} + 28 \alpha^{2} \beta^{7} + 9 \alpha \beta^{8} + \beta^{9}\right) + O\left(x^{10}\right)$$

In [250]:
fibo_gf(1,x,1).series(x,n=10)


Out[250]:
$$1 + 2 x + 3 x^{2} + 5 x^{3} + 8 x^{4} + 13 x^{5} + 21 x^{6} + 34 x^{7} + 55 x^{8} + 89 x^{9} + O\left(x^{10}\right)$$

In [512]:
lst_of_truth_gf, = lst(tyvar(x)).gf()
lst_of_truth_gf.series(x, n=10, is_exp=True)


Out[512]:
$$\mathcal{L}{\left (x \right )} = - \frac{1}{x - 1} = 1 + x + 2 x^{2} + 6 x^{3} + 24 x^{4} + 120 x^{5} + 720 x^{6} + 5040 x^{7} + 40320 x^{8} + 362880 x^{9} + O\left(x^{10}\right)$$

In [520]:
lst_of_boolean_gf.series(x,n=10,is_exp=True)


Out[520]:
$$\mathcal{L}{\left ({w}_{1},x,{w}_{0} \right )} = - \frac{1}{x {w}_{0} + x {w}_{1} - 1} = 1 + x \left({w}_{0} + {w}_{1}\right) + x^{2} \left(2 {w}_{0}^{2} + 4 {w}_{0} {w}_{1} + 2 {w}_{1}^{2}\right) + x^{3} \left(6 {w}_{0}^{3} + 18 {w}_{0}^{2} {w}_{1} + 18 {w}_{0} {w}_{1}^{2} + 6 {w}_{1}^{3}\right) + x^{4} \left(24 {w}_{0}^{4} + 96 {w}_{0}^{3} {w}_{1} + 144 {w}_{0}^{2} {w}_{1}^{2} + 96 {w}_{0} {w}_{1}^{3} + 24 {w}_{1}^{4}\right) + x^{5} \left(120 {w}_{0}^{5} + 600 {w}_{0}^{4} {w}_{1} + 1200 {w}_{0}^{3} {w}_{1}^{2} + 1200 {w}_{0}^{2} {w}_{1}^{3} + 600 {w}_{0} {w}_{1}^{4} + 120 {w}_{1}^{5}\right) + x^{6} \left(720 {w}_{0}^{6} + 4320 {w}_{0}^{5} {w}_{1} + 10800 {w}_{0}^{4} {w}_{1}^{2} + 14400 {w}_{0}^{3} {w}_{1}^{3} + 10800 {w}_{0}^{2} {w}_{1}^{4} + 4320 {w}_{0} {w}_{1}^{5} + 720 {w}_{1}^{6}\right) + x^{7} \left(5040 {w}_{0}^{7} + 35280 {w}_{0}^{6} {w}_{1} + 105840 {w}_{0}^{5} {w}_{1}^{2} + 176400 {w}_{0}^{4} {w}_{1}^{3} + 176400 {w}_{0}^{3} {w}_{1}^{4} + 105840 {w}_{0}^{2} {w}_{1}^{5} + 35280 {w}_{0} {w}_{1}^{6} + 5040 {w}_{1}^{7}\right) + x^{8} \left(40320 {w}_{0}^{8} + 322560 {w}_{0}^{7} {w}_{1} + 1128960 {w}_{0}^{6} {w}_{1}^{2} + 2257920 {w}_{0}^{5} {w}_{1}^{3} + 2822400 {w}_{0}^{4} {w}_{1}^{4} + 2257920 {w}_{0}^{3} {w}_{1}^{5} + 1128960 {w}_{0}^{2} {w}_{1}^{6} + 322560 {w}_{0} {w}_{1}^{7} + 40320 {w}_{1}^{8}\right) + x^{9} \left(362880 {w}_{0}^{9} + 3265920 {w}_{0}^{8} {w}_{1} + 13063680 {w}_{0}^{7} {w}_{1}^{2} + 30481920 {w}_{0}^{6} {w}_{1}^{3} + 45722880 {w}_{0}^{5} {w}_{1}^{4} + 45722880 {w}_{0}^{4} {w}_{1}^{5} + 30481920 {w}_{0}^{3} {w}_{1}^{6} + 13063680 {w}_{0}^{2} {w}_{1}^{7} + 3265920 {w}_{0} {w}_{1}^{8} + 362880 {w}_{1}^{9}\right) + O\left(x^{10}\right)$$

In [515]:
_.rhs.rhs.subs({w[0]:1,w[1]:1})


Out[515]:
$$1 + 2 x + 8 x^{2} + 48 x^{3} + 384 x^{4} + 3840 x^{5} + 46080 x^{6} + 645120 x^{7} + 10321920 x^{8} + 185794560 x^{9} + O\left(x^{10}\right)$$

In [521]:
sum((_.rhs.rhs.coeff(x,i)/factorial(i))*x**i for i in range(1,10))


Out[521]:
$$x^{9} \left({w}_{0}^{9} + 9 {w}_{0}^{8} {w}_{1} + 36 {w}_{0}^{7} {w}_{1}^{2} + 84 {w}_{0}^{6} {w}_{1}^{3} + 126 {w}_{0}^{5} {w}_{1}^{4} + 126 {w}_{0}^{4} {w}_{1}^{5} + 84 {w}_{0}^{3} {w}_{1}^{6} + 36 {w}_{0}^{2} {w}_{1}^{7} + 9 {w}_{0} {w}_{1}^{8} + {w}_{1}^{9}\right) + x^{8} \left({w}_{0}^{8} + 8 {w}_{0}^{7} {w}_{1} + 28 {w}_{0}^{6} {w}_{1}^{2} + 56 {w}_{0}^{5} {w}_{1}^{3} + 70 {w}_{0}^{4} {w}_{1}^{4} + 56 {w}_{0}^{3} {w}_{1}^{5} + 28 {w}_{0}^{2} {w}_{1}^{6} + 8 {w}_{0} {w}_{1}^{7} + {w}_{1}^{8}\right) + x^{7} \left({w}_{0}^{7} + 7 {w}_{0}^{6} {w}_{1} + 21 {w}_{0}^{5} {w}_{1}^{2} + 35 {w}_{0}^{4} {w}_{1}^{3} + 35 {w}_{0}^{3} {w}_{1}^{4} + 21 {w}_{0}^{2} {w}_{1}^{5} + 7 {w}_{0} {w}_{1}^{6} + {w}_{1}^{7}\right) + x^{6} \left({w}_{0}^{6} + 6 {w}_{0}^{5} {w}_{1} + 15 {w}_{0}^{4} {w}_{1}^{2} + 20 {w}_{0}^{3} {w}_{1}^{3} + 15 {w}_{0}^{2} {w}_{1}^{4} + 6 {w}_{0} {w}_{1}^{5} + {w}_{1}^{6}\right) + x^{5} \left({w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} + 10 {w}_{0}^{3} {w}_{1}^{2} + 10 {w}_{0}^{2} {w}_{1}^{3} + 5 {w}_{0} {w}_{1}^{4} + {w}_{1}^{5}\right) + x^{4} \left({w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} + 6 {w}_{0}^{2} {w}_{1}^{2} + 4 {w}_{0} {w}_{1}^{3} + {w}_{1}^{4}\right) + x^{3} \left({w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} + 3 {w}_{0} {w}_{1}^{2} + {w}_{1}^{3}\right) + x^{2} \left({w}_{0}^{2} + 2 {w}_{0} {w}_{1} + {w}_{1}^{2}\right) + x \left({w}_{0} + {w}_{1}\right)$$

In [17]:
class powerset(ty):
        
    def gf_rhs(self, ty):
        return [exp(self.mulfactor() * gf.rhs) for gf in ty.gf()]
    
    def mulfactor(self):
        return 1
    
    def label(self):
        return r'\mathcal{P}'

In [478]:
powerset_of_tyvar_gf, = (2**(nnlst(tyvar(alpha)))).gf()
powerset_of_tyvar_gf


Out[478]:
$$\mathcal{P}{\left (\alpha \right )} = e^{- \frac{\alpha}{\alpha - 1}}$$

In [479]:
powerset_of_tyvar_gf.series(alpha, n=10, is_exp=True)


Out[479]:
$$\mathcal{P}{\left (\alpha \right )} = e^{- \frac{\alpha}{\alpha - 1}} = 1 + \alpha + 3 \alpha^{2} + 13 \alpha^{3} + 73 \alpha^{4} + 501 \alpha^{5} + 4051 \alpha^{6} + 37633 \alpha^{7} + 394353 \alpha^{8} + 4596553 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [480]:
powerset_of_tyvar_gf, = (2**(nnlst(boolean))).gf()
powerset_of_tyvar_gf


Out[480]:
$$\mathcal{P}{\left ({w}_{1},x,{w}_{0} \right )} = e^{- \frac{x \left({w}_{0} + {w}_{1}\right)}{x {w}_{0} + x {w}_{1} - 1}}$$

In [481]:
powerset_of_tyvar_gf.series(x, n=5, is_exp=True)


Out[481]:
$$\mathcal{P}{\left ({w}_{1},x,{w}_{0} \right )} = e^{- \frac{x \left({w}_{0} + {w}_{1}\right)}{x {w}_{0} + x {w}_{1} - 1}} = 1 + x \left({w}_{0} + {w}_{1}\right) + x^{2} \left(3 {w}_{0}^{2} + 6 {w}_{0} {w}_{1} + 3 {w}_{1}^{2}\right) + x^{3} \left(13 {w}_{0}^{3} + 39 {w}_{0}^{2} {w}_{1} + 39 {w}_{0} {w}_{1}^{2} + 13 {w}_{1}^{3}\right) + x^{4} \left(73 {w}_{0}^{4} + 292 {w}_{0}^{3} {w}_{1} + 438 {w}_{0}^{2} {w}_{1}^{2} + 292 {w}_{0} {w}_{1}^{3} + 73 {w}_{1}^{4}\right) + O\left(x^{5}\right)$$

In [421]:
_.rhs.rhs.subs({w[0]:1,w[1]:1})


Out[421]:
$$1 + 2 x + 12 x^{2} + 104 x^{3} + 1168 x^{4} + O\left(x^{5}\right)$$

In [273]:
powerset_of_tyvar_gf, _ = (2**(bin_tree(tyvar(alpha)))).gf()
powerset_of_tyvar_gf


Out[273]:
$$\mathcal{P}{\left (\alpha \right )} = e^{\frac{- \sqrt{- 4 \alpha + 1} + 1}{2 \alpha}}$$

In [274]:
powerset_of_tyvar_gf.series(alpha, n=10, is_exp=True)


Out[274]:
$$\mathcal{P}{\left (\alpha \right )} = e^{\frac{- \sqrt{- 4 \alpha + 1} + 1}{2 \alpha}} = e + e \alpha + 5 e \alpha^{2} + 43 e \alpha^{3} + 529 e \alpha^{4} + 8501 e \alpha^{5} + 169021 e \alpha^{6} + 4010455 e \alpha^{7} + 110676833 e \alpha^{8} + 3484717129 e \alpha^{9} + O\left(\alpha^{10}\right)$$

In [288]:
l, = (2**(2**(nnlst(tyvar(alpha))))).gf()
define(l.lhs, l.rhs.ratsimp(), ctor=FEq).series(alpha,n=8,is_exp=True)


Out[288]:
$$\mathcal{P}{\left (\alpha \right )} = e^{e^{- \frac{\alpha}{\alpha - 1}}} = e + e \alpha + 4 e \alpha^{2} + 23 e \alpha^{3} + 171 e \alpha^{4} + 1552 e \alpha^{5} + 16583 e \alpha^{6} + 203443 e \alpha^{7} + O\left(\alpha^{8}\right)$$

In [494]:
class cycle(ty):
         
    def gf_rhs(self, ty):
        return [log(gf.rhs) for gf in ty.gf()]
    
    def label(self):
        return r'\mathcal{C}'

In [501]:
cycle_of_tyvar_gf, = (~(lst(tyvar(alpha)))).gf()
cycle_of_tyvar_gf


Out[501]:
$$\mathcal{C}{\left (\alpha \right )} = \log{\left (- \frac{1}{\alpha - 1} \right )}$$

In [502]:
cycle_of_tyvar_gf.series(alpha, n=10, is_exp=True)


Out[502]:
$$\mathcal{C}{\left (\alpha \right )} = \log{\left (- \frac{1}{\alpha - 1} \right )} = \alpha + \alpha^{2} + 2 \alpha^{3} + 6 \alpha^{4} + 24 \alpha^{5} + 120 \alpha^{6} + 720 \alpha^{7} + 5040 \alpha^{8} + 40320 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [506]:
cycle_of_tyvar_gf, = (~(lst(boolean))).gf()
cycle_of_tyvar_gf


Out[506]:
$$\mathcal{C}{\left ({w}_{1},x,{w}_{0} \right )} = \log{\left (- \frac{1}{x {w}_{0} + x {w}_{1} - 1} \right )}$$

In [507]:
cycle_of_tyvar_gf.series(x, n=8, is_exp=True)


Out[507]:
$$\mathcal{C}{\left ({w}_{1},x,{w}_{0} \right )} = \log{\left (- \frac{1}{x {w}_{0} + x {w}_{1} - 1} \right )} = x \left({w}_{0} + {w}_{1}\right) + x^{2} \left({w}_{0}^{2} + 2 {w}_{0} {w}_{1} + {w}_{1}^{2}\right) + x^{3} \left(2 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1} + 6 {w}_{0} {w}_{1}^{2} + 2 {w}_{1}^{3}\right) + x^{4} \left(6 {w}_{0}^{4} + 24 {w}_{0}^{3} {w}_{1} + 36 {w}_{0}^{2} {w}_{1}^{2} + 24 {w}_{0} {w}_{1}^{3} + 6 {w}_{1}^{4}\right) + x^{5} \left(24 {w}_{0}^{5} + 120 {w}_{0}^{4} {w}_{1} + 240 {w}_{0}^{3} {w}_{1}^{2} + 240 {w}_{0}^{2} {w}_{1}^{3} + 120 {w}_{0} {w}_{1}^{4} + 24 {w}_{1}^{5}\right) + x^{6} \left(120 {w}_{0}^{6} + 720 {w}_{0}^{5} {w}_{1} + 1800 {w}_{0}^{4} {w}_{1}^{2} + 2400 {w}_{0}^{3} {w}_{1}^{3} + 1800 {w}_{0}^{2} {w}_{1}^{4} + 720 {w}_{0} {w}_{1}^{5} + 120 {w}_{1}^{6}\right) + x^{7} \left(720 {w}_{0}^{7} + 5040 {w}_{0}^{6} {w}_{1} + 15120 {w}_{0}^{5} {w}_{1}^{2} + 25200 {w}_{0}^{4} {w}_{1}^{3} + 25200 {w}_{0}^{3} {w}_{1}^{4} + 15120 {w}_{0}^{2} {w}_{1}^{5} + 5040 {w}_{0} {w}_{1}^{6} + 720 {w}_{1}^{7}\right) + O\left(x^{8}\right)$$

In [508]:
_.rhs.rhs.subs({w[0]:1,w[1]:1})


Out[508]:
$$2 x + 4 x^{2} + 16 x^{3} + 96 x^{4} + 768 x^{5} + 7680 x^{6} + 92160 x^{7} + O\left(x^{8}\right)$$

In [524]:
Pstar_gf, = (2**(~(lst(tyvar(alpha))))).gf()
Pstar_gf.series(alpha, n=10, is_exp=True)


Out[524]:
$$\mathcal{P}{\left (\alpha \right )} = - \frac{1}{\alpha - 1} = 1 + \alpha + 2 \alpha^{2} + 6 \alpha^{3} + 24 \alpha^{4} + 120 \alpha^{5} + 720 \alpha^{6} + 5040 \alpha^{7} + 40320 \alpha^{8} + 362880 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [542]:
class ipowerset(powerset):
    
    def mulfactor(self):
        return -1

In [545]:
derangements_gf, = ((-2)**tyvar(alpha)).gf()
derangements_gf.series(alpha, n=10, is_exp=True)


Out[545]:
$$\times{\left (\alpha \right )} = - \frac{e^{- \alpha}}{\alpha - 1} = 1 + \alpha^{2} + 2 \alpha^{3} + 9 \alpha^{4} + 44 \alpha^{5} + 265 \alpha^{6} + 1854 \alpha^{7} + 14833 \alpha^{8} + 133496 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [549]:
derangements_gf, = ((-2)**nnlst(tyvar(alpha))).gf()
derangements_gf.series(alpha, n=10, is_exp=True)


Out[549]:
$$\times{\left (\alpha \right )} = \frac{\left(\alpha - 1\right) e^{\frac{\alpha}{\alpha - 1}}}{2 \alpha - 1} = 1 + \alpha^{2} + 8 \alpha^{3} + 69 \alpha^{4} + 704 \alpha^{5} + 8485 \alpha^{6} + 118824 \alpha^{7} + 1900297 \alpha^{8} + 34191296 \alpha^{9} + O\left(\alpha^{10}\right)$$

In [38]:
[1,2][1:]


Out[38]:
$$\left [ 2\right ]$$

In [45]:
def foldr(f, l, i):
    if not l:
        return i
    else:
        car, *cdr = l
        return f(car, foldr(f, cdr, i))
    
class arrow(ty):
    
    def label(self):
        return r'\rightarrow'
        
    def gf_rhs(self, alpha, beta):
        v = Dummy()
        return [foldr(lambda gf, acc: Lambda([x], acc(gf.rhs)), 
                      gfs[:-1], 
                      Lambda([x], gfs[-1].rhs))(x)
                for gfs in self.gfs_space()]
        return [foldr(lambda gf, acc: acc**gf.rhs, gfs[:-1], gfs[-1].rhs)
                for gfs in self.gfs_space()]

In [46]:
arr, = arrow(boolean, boolean).gf()
arr


Out[46]:
$$\rightarrow{\left (x,{w}_{1},{w}_{0} \right )} = \left(x {w}_{0} + x {w}_{1}\right) {w}_{0} + \left(x {w}_{0} + x {w}_{1}\right) {w}_{1}$$

In [49]:
arr.series(x,n=5,is_exp=False)


Out[49]:
$$\rightarrow{\left (x,{w}_{1},{w}_{0} \right )} = \left(x {w}_{0} + x {w}_{1}\right) {w}_{0} + \left(x {w}_{0} + x {w}_{1}\right) {w}_{1} = x \left({w}_{0}^{2} + 2 {w}_{0} {w}_{1} + {w}_{1}^{2}\right)$$

In [50]:
_.rhs.rhs.removeO().subs({w[0]:1,w[1]:1})


Out[50]:
$$4 x$$

In [51]:
arr, = arrow(lst(boolean), lst(boolean)).gf()
arr


Out[51]:
$$\rightarrow{\left (x,{w}_{1},{w}_{0} \right )} = - \frac{1}{-1 - \frac{{w}_{0}}{x {w}_{0} + x {w}_{1} - 1} - \frac{{w}_{1}}{x {w}_{0} + x {w}_{1} - 1}}$$

In [56]:
arr.series(x,n=5,is_exp=False)


Out[56]:
$$\rightarrow{\left (x,{w}_{1},{w}_{0} \right )} = - \frac{1}{-1 - \frac{{w}_{0}}{x {w}_{0} + x {w}_{1} - 1} - \frac{{w}_{1}}{x {w}_{0} + x {w}_{1} - 1}} = - \frac{1}{{w}_{0} + {w}_{1} - 1} + x \left(\frac{{w}_{0}^{2}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{2 {w}_{0} {w}_{1}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{{w}_{1}^{2}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1}\right) + x^{2} \left(- \frac{{w}_{0}^{4}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{4 {w}_{0}^{3} {w}_{1}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{6 {w}_{0}^{2} {w}_{1}^{2}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{4 {w}_{0} {w}_{1}^{3}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{{w}_{1}^{4}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} + \frac{{w}_{0}^{3}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{3 {w}_{0}^{2} {w}_{1}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{3 {w}_{0} {w}_{1}^{2}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{{w}_{1}^{3}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1}\right) + x^{3} \left(\frac{{w}_{0}^{6}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{6 {w}_{0}^{5} {w}_{1}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{15 {w}_{0}^{4} {w}_{1}^{2}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{20 {w}_{0}^{3} {w}_{1}^{3}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{15 {w}_{0}^{2} {w}_{1}^{4}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{6 {w}_{0} {w}_{1}^{5}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{{w}_{1}^{6}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} - \frac{2 {w}_{0}^{5}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{10 {w}_{0}^{4} {w}_{1}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{20 {w}_{0}^{3} {w}_{1}^{2}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{20 {w}_{0}^{2} {w}_{1}^{3}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{10 {w}_{0} {w}_{1}^{4}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{2 {w}_{1}^{5}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} + \frac{{w}_{0}^{4}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{4 {w}_{0}^{3} {w}_{1}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{6 {w}_{0}^{2} {w}_{1}^{2}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{4 {w}_{0} {w}_{1}^{3}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{{w}_{1}^{4}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1}\right) + x^{4} \left(- \frac{{w}_{0}^{8}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{8 {w}_{0}^{7} {w}_{1}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{28 {w}_{0}^{6} {w}_{1}^{2}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{56 {w}_{0}^{5} {w}_{1}^{3}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{70 {w}_{0}^{4} {w}_{1}^{4}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{56 {w}_{0}^{3} {w}_{1}^{5}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{28 {w}_{0}^{2} {w}_{1}^{6}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{8 {w}_{0} {w}_{1}^{7}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} - \frac{{w}_{1}^{8}}{{w}_{0}^{5} + 5 {w}_{0}^{4} {w}_{1} - 5 {w}_{0}^{4} + 10 {w}_{0}^{3} {w}_{1}^{2} - 20 {w}_{0}^{3} {w}_{1} + 10 {w}_{0}^{3} + 10 {w}_{0}^{2} {w}_{1}^{3} - 30 {w}_{0}^{2} {w}_{1}^{2} + 30 {w}_{0}^{2} {w}_{1} - 10 {w}_{0}^{2} + 5 {w}_{0} {w}_{1}^{4} - 20 {w}_{0} {w}_{1}^{3} + 30 {w}_{0} {w}_{1}^{2} - 20 {w}_{0} {w}_{1} + 5 {w}_{0} + {w}_{1}^{5} - 5 {w}_{1}^{4} + 10 {w}_{1}^{3} - 10 {w}_{1}^{2} + 5 {w}_{1} - 1} + \frac{3 {w}_{0}^{7}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{21 {w}_{0}^{6} {w}_{1}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{63 {w}_{0}^{5} {w}_{1}^{2}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{105 {w}_{0}^{4} {w}_{1}^{3}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{105 {w}_{0}^{3} {w}_{1}^{4}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{63 {w}_{0}^{2} {w}_{1}^{5}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{21 {w}_{0} {w}_{1}^{6}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} + \frac{3 {w}_{1}^{7}}{{w}_{0}^{4} + 4 {w}_{0}^{3} {w}_{1} - 4 {w}_{0}^{3} + 6 {w}_{0}^{2} {w}_{1}^{2} - 12 {w}_{0}^{2} {w}_{1} + 6 {w}_{0}^{2} + 4 {w}_{0} {w}_{1}^{3} - 12 {w}_{0} {w}_{1}^{2} + 12 {w}_{0} {w}_{1} - 4 {w}_{0} + {w}_{1}^{4} - 4 {w}_{1}^{3} + 6 {w}_{1}^{2} - 4 {w}_{1} + 1} - \frac{3 {w}_{0}^{6}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{18 {w}_{0}^{5} {w}_{1}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{45 {w}_{0}^{4} {w}_{1}^{2}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{60 {w}_{0}^{3} {w}_{1}^{3}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{45 {w}_{0}^{2} {w}_{1}^{4}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{18 {w}_{0} {w}_{1}^{5}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} - \frac{3 {w}_{1}^{6}}{{w}_{0}^{3} + 3 {w}_{0}^{2} {w}_{1} - 3 {w}_{0}^{2} + 3 {w}_{0} {w}_{1}^{2} - 6 {w}_{0} {w}_{1} + 3 {w}_{0} + {w}_{1}^{3} - 3 {w}_{1}^{2} + 3 {w}_{1} - 1} + \frac{{w}_{0}^{5}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{5 {w}_{0}^{4} {w}_{1}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{10 {w}_{0}^{3} {w}_{1}^{2}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{10 {w}_{0}^{2} {w}_{1}^{3}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{5 {w}_{0} {w}_{1}^{4}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1} + \frac{{w}_{1}^{5}}{{w}_{0}^{2} + 2 {w}_{0} {w}_{1} - 2 {w}_{0} + {w}_{1}^{2} - 2 {w}_{1} + 1}\right) + O\left(x^{5}\right)$$

In [57]:
_.rhs.rhs.removeO().subs({w[0]:1,w[1]:1})


Out[57]:
$$- 32 x^{4} + 16 x^{3} - 8 x^{2} + 4 x - 1$$


In [293]:
lamda_gf = lamda(tyvar(x)).gf_rhs(tyvar(x))
lamda_gf


Out[293]:
$$\left [ x + \mathcal{L}_{\Gamma}^{2}{\left (x \right )} + e^{x} e^{\mathcal{L}_{\Gamma}{\left (x \right )}}\right ]$$

In [112]:
lamda_gf.rhs.series(x,n=10)


Out[112]:
$$x + 2 x^{2} + 6 x^{3} + 22 x^{4} + 90 x^{5} + 394 x^{6} + 1806 x^{7} + 8558 x^{8} + 41586 x^{9} + O\left(x^{10}\right)$$