The most common situation for a Lie algebra L (in this package) is that it is finitely presented, i.e., $L$ is given by a finite number of generators, yielding a free Lie algebra $F$, modulo a finite list of homogeneous elements in $F$. The ambient Lie algebra of $L$, see ambient(LieAlgebra), is equal to $F$.





There is also the possibility to build quotients by Lie ideals. A Lie ideal is of type LieIdeal, and may be constructed in different ways, e.g., as the kernel of a homomorphism. In general, Lie ideals are not finitely generated (or not known to be, as $J$ below), but a finitely generated Lie ideal may be formed using the constructor lieIdeal. Building a quotient by a finitely generated ideal is the same as above, taking the Lie algebra modulo the generators of the ideal.





The Lie algebra $L3$ below is a quotient of the finitely presented Lie algebra $M$ by the ideal $J$, which is not known to be finitely generated. The ambient Lie algebra of $L3$ is $M$ and ideal(L3) is $J$. The Lie algebras $L2$ and $L3$ are isomorphic, but are presented in different ways.






If two quotients by Lie ideals are performed successively, then the program converts the final result to a quotient of the first Lie algebra by a single ideal. In the example below, $L5=(M/J)/K$ and this is transformed to $M/P$, where $P$ is the inverse image of $K$ under the natural map $M \ \to\ M/J$.






If a quotient by a Lie ideal that is not known to be finitely generated is followed by a quotient with finitely many generators, then the programs converts it by changing the order of the operations. In the example below, L6=(M/J)/\{a b\} and this is transformed to (M/\{a b\})/Q, where $Q$ is the image of $J$ under the natural map $M \ \to\ M/\{a b\}$\ (this in fact is an ideal since the map is surjective).






It may also happen that L has a nonzero differential, see differentialLieAlgebra. The differential is given as the list diff(L) of elements in $F$ that consists of the values of the differential on the generators of $F$, see diff(LieAlgebra). Note that ideal(D) (shown below) has been produced by the program to get the square of the differential to be zero. The extra  (b b a) in ideal(L) below is added by the program to ensure that the ideal generated by b c2 is invariant under the differential.





In addition to the constructor lieIdeal there are also the constructors lieSubAlgebra and lieSubSpace yielding finitely generated Lie subalgebras and finitely generated subspaces respectively.





Ideals, subalgebras and subspaces are both inputs and possible outputs of several methods. The methods image(LieAlgebraMap,LieSubSpace) and inverse(LieAlgebraMap,LieSubSpace), which are used above, have image and kernel of a Lie algebra map or derivation as special cases. The method quotient(LieIdeal,FGLieSubAlgebra) has annihilator(FGLieSubAlgebra) and center as special cases.








One may also form the sum, LieSubSpace + LieSubSpace, and intersection, LieSubSpace @ LieSubSpace, of two Lie subspaces (in particular subalgebras or ideals).








Finally, the methods boundaries and cycles give the subalgebras image(d) and kernel(d) respectively, where $d$ is the differential, while lieHomology gives the homology as a vector space.