next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
GradedLieAlgebras :: Differential LieAlgebra Tutorial

Differential LieAlgebra Tutorial -- A tutorial for differential Lie algebras

A differential Lie algebra is defined by changing the option diffl to true, diffl=>true, in the constructor lieAlgebra and using diffLieAlgebra with input the differential of the generators and output the new differential Lie algebra. The last weight is the homological degree and it must be non-negative and less than the first degree. The differential preserves all weights except the homological degree which is lowered by 1 and it also changes the sign. All this is checked when diffLieAlgebra is executed. The value zero for a generator is given as L.zz, which has any weight and sign (see however weightLie and signLie). The differential is a derivation and is obtained by diffLie as d=diffLie(). The value of the differential d applied to an arbitrary Lie expression x is obtained by d(x).

i1 : F1 = lieAlgebra({a,b,c},genWeights=>{{1,0},{2,1},{3,2}},
          genSigns=>{1,1,1},diffl=>true)

o1 = F1

o1 : LieAlgebra
i2 : L1=diffLieAlgebra{F1.zz,a a,a b}

o2 = L1

o2 : LieAlgebra
i3 : peekLie L1

o3 = gensLie => {a, b, c}
     genWeights => {{1, 0}, {2, 1}, {3, 2}}
     genSigns => {1, 1, 1}
     relsLie => {}
     genDiffs => {0, (a a), (a b)}
     field => QQ
     diffl => true
     compdeg => 3
i4 : d = diffLie()

o4 = d

o4 : DerLie
i5 : x = a b b + (1/2) a a c

o5 = (a b b) + (1/2)(a a c)

o5 : L1
i6 : d x

o6 =  - (7/2)(a a a b)

o6 : L1

The program adds relations to the Lie algebra to get the square of the differential to be zero and a warning is printed if this is done. The current Lie algebra must be free when diffLieAlgebra is used. It is also possible to define the differential using L.genDiffs (see L3 below), but then no checking is made.

i7 : F2 = lieAlgebra({a,b,c2,c3,c4},genSigns=>{0,0,1,0,1},
          genWeights=>{{1,0},{1,0},{2,1},{3,2},{5,3}},diffl=>true)

o7 = F2

o7 : LieAlgebra
i8 : L2=diffLieAlgebra{F2.zz,F2.zz,a b,a c2,a b c3}
warning: relations have been added for the square of the differential to be zero

o8 = L2

o8 : LieAlgebra
i9 : peekLie L2

o9 = gensLie => {a, b, c2, c3, c4}
     genWeights => {{1, 0}, {1, 0}, {2, 1}, {3, 2}, {5, 3}}
     genSigns => {0, 0, 1, 0, 1}
     relsLie => { - (a b a), (a b a c2)}
     genDiffs => {0, 0,  - (b a), (a c2), (a b c3)}
     field => QQ
     diffl => true
     compdeg => 5

The dimensions of the homology can be obtained using homologyTableLie, which gives a table of dimensions for the first and the last degrees.

A basis for the homology, boundaries and cycles in a certain first and homological degree is obtained by homologyBasisLie, cyclesBasisLie and boundariesBasisLie.

i10 : L3 = lieAlgebra({a,b,c},genSigns=>1,
          genWeights=>{{1,0},{1,0},{2,1}},diffl=>true)/{a a,b b}

o10 = L3

o10 : LieAlgebra
i11 : L3.genDiffs = {L3.zz,L3.zz,a b}

o11 = {0, 0, (b a)}

o11 : List
i12 : homologyTableLie 5

o12 = | 2 0 0 0 0 |
      | 0 0 2 1 0 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o12 : Matrix ZZ  <--- ZZ
i13 : homologyBasisLie(4,1)

o13 = {(b a c)}

o13 : List
i14 : boundariesBasisLie(4,1)

o14 = {(a b c) + (b a c)}

o14 : List

It follows from above that a basis for the cycles of weight (4,1) is {b a c, a b c}.

i15 : cyclesBasisLie(4,1)

o15 = {(b a c), (a b c)}

o15 : List

In degree (3,1) there are two independent cycles and no boundaries:

i16 : homologyBasisLie(3,1)

o16 = {(b c), (a c)}

o16 : List
i17 : boundariesBasisLie(3,1)

o17 = {}

o17 : List

In degree (5,1) all elements are boundaries, so the homology is zero, which is seen in the table above. In degree (5,2) there are no cycles.

i18 : boundariesBasisLie(5,1)

o18 = {(b a b c), (a b a c)}

o18 : List
i19 : basisLie(5,1)

o19 = {(a b a c), (b a b c)}

o19 : List
i20 : d = diffLie()

o20 = d

o20 : DerLie
i21 : basisLie(5,2)

o21 = {(a c c), (b c c)}

o21 : List
i22 : d(a c c)

o22 =  - 2 (a b a c)

o22 : L3
i23 : d(b c c)

o23 =  - 2 (b a b c)

o23 : L3
i24 : cyclesBasisLie(5,2)

o24 = {}

o24 : List

Below is an example with zero homology and hence also its minimal model, see minmodelLie, is the zero Lie algebra.

i25 : L4 = lieAlgebra({a,b},genSigns=>{1,0},genWeights=>{{2,0},{2,1}},diffl=>true)

o25 = L4

o25 : LieAlgebra
i26 : L4.genDiffs = {L4.zz,a}

o26 = {0, a}

o26 : List
i27 : homologyTableLie 12

o27 = 0

               12        12
o27 : Matrix ZZ   <--- ZZ
i28 : M4 = minmodelLie 12

o28 = M4

o28 : LieAlgebra
i29 : peekLie oo

o29 = gensLie => {}
      genWeights => {}
      genSigns => {}
      relsLie => {}
      genDiffs => {}
      field => QQ
      diffl => true
      compdeg => 12
      modelmap => 0
i30 : whichLie()

o30 = L4

o30 : LieAlgebra
i31 : useLie M4

o31 = M4

o31 : LieAlgebra
i32 : homologyTableLie 12

o32 = 0

               12        12
o32 : Matrix ZZ   <--- ZZ
i33 : peekLie M4.modelmap

o33 = 0

The above result is true in characteristic zero and false in positive characteristic.

i34 : L5 = lieAlgebra({a,b},genSigns=>{1,0},genWeights=>{{2,0},{2,1}},field=>ZZ/3,diffl=>true)

o34 = L5

o34 : LieAlgebra
i35 : L5.genDiffs = {L5.zz,a}

o35 = {0, a}

o35 : List
i36 : homologyTableLie 12

o36 = | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 1 0 0 0 0 0 0 |
      | 0 0 0 0 0 1 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 |

               12        12
o36 : Matrix ZZ   <--- ZZ
i37 : homologyBasisLie(6,1)

o37 = {(b a a)}

o37 : List
i38 : homologyBasisLie(6,2)

o38 = {(b b a)}

o38 : List

In characteristic different from two, the differential of (b b a) is 3/2(b a a) and (b a a) is a cycle, which explains the result above (in characteristic 2, (b a) is a cycle which is not a boundary).

i39 : useLie L4

o39 = L4

o39 : LieAlgebra
i40 : d = diffLie()

o40 = d

o40 : DerLie
i41 : d b b a

o41 = (3/2)(b a a)

o41 : L4

Below is a differential Lie algebra which is non-free and where the differential has a linear part.

i42 : F6 = lieAlgebra({a,b,c,r3,r4,r42},
         genWeights => {{1,0},{1,0},{2,0},{3,1},{4,1},{4,2}},
         genSigns=>{0,0,0,1,1,0},diffl=>true)

o42 = F6

o42 : LieAlgebra
i43 : L6=diffLieAlgebra{F6.zz,F6.zz,F6.zz,a c,a a c,r4 - a r3}/{b c - a c,a b,b r4 - a r4}

o43 = L6

o43 : LieAlgebra
i44 : homologyTableLie 5

o44 = | 2 1 0 0 0 |
      | 0 0 0 1 1 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o44 : Matrix ZZ  <--- ZZ

The homology in homological degree zero is concentrated in degree 1 and 2. The function minPresLie gives a minimal presentation of the Lie algebra H0 (and it also changes the current Lie algebra).

i45 : peekLie (P= minPresLie 3)

o45 = gensLie => {a, b, c}
      genWeights => {{1, 0}, {1, 0}, {2, 0}}
      genSigns => {0, 0, 0}
      relsLie => {(b a), (b c), (a c)}
      genDiffs => {0, 0, 0}
      field => QQ
      diffl => false
      compdeg => 2

We now compute the minimal model of L6 and check that its homology is the same as for L6.

i46 : whichLie()

o46 = P

o46 : LieAlgebra
i47 : useLie L6

o47 = L6

o47 : LieAlgebra
i48 : M6 = minmodelLie 5

o48 = M6

o48 : LieAlgebra
i49 : useLie M6

o49 = M6

o49 : LieAlgebra
i50 : homologyTableLie 5

o50 = | 2 1 0 0 0 |
      | 0 0 0 1 1 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o50 : Matrix ZZ  <--- ZZ
i51 : peekLie M6

o51 = gensLie => {fr , fr , fr , fr , fr , fr , fr }
                    0    1    2    3    4    5    6
      genWeights => {{1, 0}, {1, 0}, {2, 0}, {2, 1}, {3, 1}, {3, 1}, {5, 2}}
      genSigns => {0, 0, 0, 1, 1, 1, 0}
      relsLie => {}
      genDiffs => {0, 0, 0, (fr_1 fr_0), (fr_1 fr_2), (fr_0 fr_2), (fr_0 fr_3 fr_2) + (fr_0 fr_0 fr_4) - (fr_0 fr_1 fr_5)}
      field => QQ
      diffl => true
      compdeg => 5
      modelmap => MapLie{fr_0 => a                   }
                         fr_1 => b
                         fr_2 => c
                         fr_3 => 0
                         fr_4 => r3
                         fr_5 => r3
                         fr_6 =>  - (a r42) + (b r42)
                         sourceLie => M6
                         targetLie => L6

The quasi-isomorphism is obtained as f=M.modelmap. If L has no differential, then f is surjective, but in general this is not true as is shown by L4 above and also by this example.

i52 : f = M6.modelmap

o52 = f

o52 : MapLie
i53 : peekLie f

o53 = MapLie{fr_0 => a                   }
             fr_1 => b
             fr_2 => c
             fr_3 => 0
             fr_4 => r3
             fr_5 => r3
             fr_6 =>  - (a r42) + (b r42)
             sourceLie => M6
             targetLie => L6
i54 : useLie L6

o54 = L6

o54 : LieAlgebra
i55 : dimTableLie 5

o55 = | 2 1 1 1 2 |
      | 0 0 1 3 5 |
      | 0 0 0 1 2 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o55 : Matrix ZZ  <--- ZZ
i56 : imageTableLie(5,f)

o56 = | 2 1 1 1 2 |
      | 0 0 1 2 4 |
      | 0 0 0 0 1 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o56 : Matrix ZZ  <--- ZZ

We check below that H(f) is iso in degree (5,1).

i57 : homologyBasisLie(5,1)

o57 = {(b a r3) - (b b r3)}

o57 : List
i58 : useLie M6

o58 = M6

o58 : LieAlgebra
i59 : homologyBasisLie(5,1)

o59 = {(fr_1 fr_3 fr_2) + (fr_1 fr_0 fr_4) - (fr_1 fr_1 fr_5)}

o59 : List
i60 : f oo

o60 = {(b a r3) - (b b r3)}

o60 : List

The generators for the minimmal model M of L yield basis elements for the cohomology ExtUL(k,k) (with a shift in the homological degree, k=L.field). Its dimensions may be obtained using extTableLie (observe that the first row gives ExtUL(k,k) in degree 1 to 5 and homological degree 1 ).

i61 : useLie L6

o61 = L6

o61 : LieAlgebra
i62 : extTableLie 5

o62 = | 2 1 0 0 0 |
      | 0 1 2 0 0 |
      | 0 0 0 0 1 |
      | 0 0 0 0 0 |
      | 0 0 0 0 0 |

               5        5
o62 : Matrix ZZ  <--- ZZ
i63 : M6.genWeights

o63 = {{1, 0}, {1, 0}, {2, 0}, {2, 1}, {3, 1}, {3, 1}, {5, 2}}

o63 : List

See also