Consider first the case where L has zero differential, and where L is finitely presented as a quotient of a free Lie algebra F. In this case, the output Q is also finitely presented as a quotient of F.
i1 : F = lieAlgebra{a,b,c} o1 = F o1 : LieAlgebra |
i2 : L = F/{a b} o2 = L o2 : LieAlgebra |
i3 : Q = L/{a c} o3 = Q o3 : LieAlgebra |
i4 : describe Q o4 = generators => {a, b, c} Weights => {{1, 0}, {1, 0}, {1, 0}} Signs => {0, 0, 0} ideal => { - (b a), - (c a)} ambient => F diff => {} Field => QQ computedDegree => 0 |
i5 : class\Q#ideal o5 = {F, F} o5 : List |
i6 : F/Q#ideal==Q o6 = true |
In case L has a non-zero differential, the program adds relations depending on the fact that the ideal should be invariant under the differential. These extra (non-normalized) relations may be looked upon using describe(LieAlgebra). Observe that D is not free in this example, see differentialLieAlgebra.
i7 : F = lieAlgebra({a,b,c2,c3},Weights=>{{1,0},{1,0},{2,1},{3,2}}, Signs=>{1,1,1,1},LastWeightHomological=>true) o7 = F o7 : LieAlgebra |
i8 : D = differentialLieAlgebra{0_F,0_F,a a,b c2} o8 = D o8 : LieAlgebra |
i9 : L = D/{a c2} o9 = L o9 : LieAlgebra |
i10 : Q = L/{b c3} o10 = Q o10 : LieAlgebra |
i11 : describe D o11 = generators => {a, b, c2, c3} Weights => {{1, 0}, {1, 0}, {2, 1}, {3, 2}} Signs => {1, 1, 1, 1} ideal => { - (b a a)} ambient => F diff => {0, 0, (a a), (b c2)} Field => QQ computedDegree => 3 |
i12 : describe Q o12 = generators => {a, b, c2, c3} Weights => {{1, 0}, {1, 0}, {2, 1}, {3, 2}} Signs => {1, 1, 1, 1} ideal => { - (b a a), (a c2), - (a a a), (b c3), - (b b c2)} ambient => F diff => {0, 0, (a a), (b c2)} Field => QQ computedDegree => 0 |
i13 : class\ideal(Q) o13 = {F, F, F, F, F} o13 : List |
i14 : class\diff(Q) o14 = {F, F, F, F} o14 : List |
If the input Lie algebra L is given as a finitely presented Lie algebra M modulo an ideal J that is not (known to be) finitely generated (e.g., the kernel of a homomorphism ), then the output Lie algebra Q is presented as a quotient of a finitely presented Lie algebra N by an ideal I, where N is given as M modulo a lifting of the input list x to M, and I is the image of the natural map from M to N applied to J, see image(LieAlgebraMap,LieSubSpace).
i15 : F = lieAlgebra{a,b,c} o15 = F o15 : LieAlgebra |
i16 : M = F/{a b} o16 = M o16 : LieAlgebra |
i17 : f=map(M,M,{0_M,b,c}) warning: the map might not be well defined, use isWellDefined o17 = f o17 : LieAlgebraMap |
i18 : J=kernel f o18 = J o18 : LieIdeal |
i19 : L = M/J o19 = L o19 : LieAlgebra |
i20 : Q=L/{b c} o20 = Q o20 : LieAlgebra |
i21 : N=ambient Q o21 = N o21 : LieAlgebra |
i22 : describe Q o22 = generators => {a, b, c} Weights => {{1, 0}, {1, 0}, {1, 0}} Signs => {0, 0, 0} ideal => ideal of N ambient => N diff => {} Field => QQ computedDegree => 0 |
i23 : use M |
i24 : N==M/{b c} o24 = true |
i25 : ideal(Q)===new LieIdeal from image(map(N,M),J) o25 = true |