Lie operators for vector fields =============================== In order to compute the normal form of an equation :math:`\dot{x}=f(x)`, the :class:`normal_forms.normal_form.normal_form` class solves a sequence of equations :math:`L_1g_j=f_j-h_j` and applies a sequence of transformations :math:`e^{L_j}` to the :math:`k`-jet of :math:`f`, where :math:`L_1(\cdot)=[\cdot,f_1(x)]` and :math:`L_j(\cdot)=[\cdot,g_j(x)]` are the Lie brackets with particular homogenous polynomial vector fields :math:`f_1(x)=f'(x_0)x` or :math:`g_j(x)`. This package uses the Lie bracket for vector fields definition :math:`[f(x),g(x)]=f'(x)g(x)-g'(x)f(x)`. The class that implements the Lie bracket with a particular polynomial vector field is :class:`normal_forms.lie_operator.lie_operator`. Let :math:`\mathcal{V}^n_i` denote the space of :math:`n`-dim, degree :math:`i` polynomial vector fields, and let :math:`s(i)` denote the simplicial number :math:`{n+i-1 \choose i}`. For any degree :math:`i`, the vector field :math:`f_i\in\mathcal{V}_i^n` may be represented as a :math:`ns(i)`-dim column vector, the operator :math:`L_j:\mathcal{V}_i^n\rightarrow\mathcal{V}_{i+j-1}^n` defined by :math:`L_j=[\cdot,g_j(x)]` may be represented as a :math:`ns(i+j-1)\times ns(i)` matrix, and :math:`L_j(f_i)` may be represented as the matrix-vector product. These representations depend on the choice of basis for :math:`\mathcal{V}^n`. This package implements a basis for :math:`\mathcal{V}_i^n` ordered first by coordinate then by multiindex. For example, the basis for :math:`\mathcal{V}^2_3` is .. math:: \left\{\begin{bmatrix}x_1^3\\0\end{bmatrix}, \begin{bmatrix}x_1^2x_2\\0\end{bmatrix} \begin{bmatrix}x_1x_2^2\\0\end{bmatrix} \begin{bmatrix}x_2^3\\0\end{bmatrix} \begin{bmatrix}0\\x_1^3\end{bmatrix} \begin{bmatrix}0\\x_1^2x_2\end{bmatrix} \begin{bmatrix}0\\x_1x_2^2\end{bmatrix} \begin{bmatrix}0\\x_2^3\end{bmatrix}\right\}. The underlying list of multiindices, :math:`(3,0), (2,1), (1,2), (0,3)` in the example, assumes a descending order according to a *dictionary* ordering, i.e.for two multiindices :math:`m=(m_1,\ldots,m_n)` and :math:`p=(p_1,\ldots,p_n)`, :math:`m>p` if :math:`m_i=p_i` and :math:`m_j>p_j`, for all :math:`i` and a particular :math:`j` such that :math:`0\leq i