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 |