# bracket -- Computes the Lie product

## Synopsis

• Usage:
F = bracket(A,L,T)
F = bracket(A,L)
H = bracket(A,d,e)
• Inputs:
• Outputs:
• F, , linear form in A
• H, , gives all the products between (dual) elements of degrees d,e

## Description

Given a factor ring R = S/I, we take A to be the acyclic closure, up to some degree n, of the Koszul complex on the generators of I. The underlying algebra An := A.natural is thus a free algebra over S on generators T_i of various homological and internal degrees.

The Homotopy Lie algebra of the map S ->> R is the graded dual of the space of linear forms Lin(A) of A. Since we obtain A together with a set of generators T_i, we identify the Lie algebra with space of linear forms, using the T_i as a self-dual basis. Thus we express the bracket product of two linear forms as another linear form. This inner product on the linear forms of degree d extends naturally to an inner product between Lin(A)**Lin(A) and the quadratic forms of A. This inner product has signs coming from the homological grading, and is the only delicate part of the implementation.

The bracket function is the workhorse of this collection of routines. Suppose that f,g are three linear forms in the generators of A homogeneous in the homological grading, of homological degrees d-1, e-1 respectively, which we regard as dual basis elements of Pi^d and Pi^e, graded components of the homotopy Lie algebra Pi. We can compute the bracket product [f,g] as an element of Pi^{d+e}, or its action on a linear form F that is homogeneous of homological degree d+e-1 via the inner product<f**g, d(F)_2>, where d is the differential of A. The calls bracket(A,{f,g}) and bracket(A, {f,g}, F) compute these products

In the following example, we use the function allgens(A,d) to list the generators of A of homological degree d:

 i1 : kk = ZZ/101 o1 = kk o1 : QuotientRing i2 : S = kk[x,y,z] o2 = S o2 : PolynomialRing i3 : R = S/ideal(x^2,y^2,z^2-x*y,x*z, y*z) o3 = R o3 : QuotientRing i4 : lastCyclesDegree = 4 o4 = 4 i5 : KR = koszulComplexDGA(ideal R) o5 = {Ring => S } Underlying algebra => S[T ..T ] 1 5 2 2 2 Differential => {x , y , - x*y + z , x*z, y*z} o5 : DGAlgebra i6 : A = acyclicClosure(KR, EndDegree => lastCyclesDegree); i7 : p2 = allgens(A,1) -- dual generators of Pi^2 o7 = {T , T , T , T , T } 1 2 3 4 5 o7 : List i8 : p3 = allgens(A,2) -- dual generators of Pi^3 o8 = {T , T , T , T , T } 6 7 8 9 10 o8 : List i9 : a5 = allgens(A,4) -- generators of A of homological degree 5 o9 = {T , T , T , T , T , T , T , T , T , T , T , T , T , T , 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ------------------------------------------------------------------------ T , T , T , T , T , T , T , T , T , T } 35 36 37 38 39 40 41 42 43 44 o9 : List i10 : bracket(A, {sum p2, sum p3}) o10 = - 2T + T + T - T + 2T - T - 2T - 3T - 2T - T - T 21 22 23 24 25 26 27 28 29 30 31 ----------------------------------------------------------------------- + 2T + 3T + T + T - 2T - T - T - 2T - 2T + 2T 32 33 34 35 36 37 38 40 42 43 o10 : S[T ..T ] 1 99 i11 : bracket(A,{sum p2, sum p3}, sum a5) o11 = -8 o11 : S[T ..T ] 1 99

The other invocation of bracket produces a HashTable displaying all the bracket products of elements of Pi^d and Pi^e as functions on the generators of homological degree d+e-1 of A:

 i12 : H = bracket(A,2,3); (5, 5, 24) {T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T , T } 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 i13 : #keys H o13 = 600 i14 : H' = select(keys H, k->H#k != 0); i15 : H' o15 = {({T , T }, - T T - T T + y*T + z*T ), ({T , T }, T T - z*T + 4 8 2 7 4 8 12 14 3 9 3 9 15 ----------------------------------------------------------------------- y*T ), ({T , T }, - T T - T T - T T + z*T + x*T ), ({T , T }, - 17 3 6 3 6 5 7 1 8 12 14 1 7 ----------------------------------------------------------------------- T T + x*T ), ({T , T }, - T T - T T + y*T ), ({T , T }, - T T + 1 7 13 5 9 2 8 5 9 15 3 10 4 8 ----------------------------------------------------------------------- T T - z*T + x*T ), ({T , T }, - T T - T T + y*T + z*T ), 3 10 18 19 2 7 2 7 4 8 12 14 ----------------------------------------------------------------------- ({T , T }, - T T + T T - z*T + x*T ), ({T , T }, - T T - T T 4 8 4 8 3 10 18 19 2 10 5 8 2 10 ----------------------------------------------------------------------- + y*T ), ({T , T }, - T T + x*T ), ({T , T }, - T T - T T + 19 4 10 4 10 18 5 8 5 8 2 10 ----------------------------------------------------------------------- y*T ), ({T , T }, T T + x*T - z*T ), ({T , T }, - T T - T T - 19 3 8 3 8 15 17 1 8 3 6 5 7 ----------------------------------------------------------------------- T T + z*T + x*T ), ({T , T }, T T - T T - z*T + z*T ), ({T , 1 8 12 14 4 9 4 9 5 10 17 19 2 ----------------------------------------------------------------------- T }, - T T - T T + y*T ), ({T , T }, - T T - T T - T T + z*T + 8 2 8 5 9 15 5 7 3 6 5 7 1 8 12 ----------------------------------------------------------------------- x*T ), ({T , T }, T T + T T + T T + y*T - z*T ), ({T , T }, 14 4 9 2 6 3 8 4 9 14 17 3 10 ----------------------------------------------------------------------- T T + T T - z*T + y*T ), ({T , T }, T T + T T - z*T + 5 6 3 10 18 20 5 6 5 6 3 10 18 ----------------------------------------------------------------------- y*T ), ({T , T }, - T T - T T + z*T + z*T ), ({T , T }, - T T 20 4 10 5 7 4 10 12 20 1 6 1 6 ----------------------------------------------------------------------- - T T + x*T ), ({T , T }, T T + T T - z*T + x*T ), ({T , T }, 4 7 11 3 9 5 8 3 9 15 16 4 6 ----------------------------------------------------------------------- T T + T T - z*T + y*T ), ({T , T }, - T T + y*T ), ({T , T }, 4 6 3 7 11 13 5 10 5 10 18 4 6 ----------------------------------------------------------------------- T T - T T + x*T ), ({T , T }, - T T - T T + x*T ), ({T , T }, 4 6 1 10 20 4 7 1 6 4 7 11 2 6 ----------------------------------------------------------------------- T T + T T + T T + y*T - z*T ), ({T , T }, T T - T T - z*T + 2 6 3 8 4 9 14 17 5 10 4 9 5 10 17 ----------------------------------------------------------------------- z*T ), ({T , T }, T T + T T + T T + y*T - z*T ), ({T , T }, T T 19 3 8 2 6 3 8 4 9 14 17 3 6 3 6 ----------------------------------------------------------------------- + y*T - z*T ), ({T , T }, - T T - T T + z*T + z*T ), ({T , 11 12 5 7 5 7 4 10 12 20 3 ----------------------------------------------------------------------- T }, T T + T T - z*T + y*T ), ({T , T }, - T T + y*T ), ({T , 7 4 6 3 7 11 13 2 9 2 9 16 1 ----------------------------------------------------------------------- T }, - T T - T T - z*T + x*T ), ({T , T }, - T T + z*T ), ({T , 9 5 6 1 9 14 17 4 7 4 7 13 1 ----------------------------------------------------------------------- T }, T T - T T + x*T ), ({T , T }, - T T + z*T ), ({T , T }, 10 4 6 1 10 20 5 9 5 9 16 3 7 ----------------------------------------------------------------------- T T - z*T + x*T ), ({T , T }, - T T - T T - z*T + x*T ), ({T , 3 7 11 12 5 6 5 6 1 9 14 17 5 ----------------------------------------------------------------------- T }, T T + T T - z*T + x*T )} 8 5 8 3 9 15 16 o15 : List i16 : H#(H'_0) o16 = -1 o16 : S[T ..T ] 1 99

From this we see that [T_5, T_6] sends T_37 to -1 in kk.

Another, often simpler view of the pairing is given by bracketMatrix, where the rows and columns correspond to the generators of Pi^d and Pi^e, and the entries are the bracket products, interpreted as elements of Pi^{d+e}. Note the anti-symmetry, which holds when d or e are even and the symmetry in the case both are odd.

 i17 : bracketMatrix(A,1,2) o17 = | 0 -T_8 -T_6 -T_7 -T_10 | | -T_6 0 -T_8 T_10 -T_9 | | T_7 T_9 0 T_6 T_8 | 3 5 o17 : Matrix (S[T ..T ]) <--- (S[T ..T ]) 1 99 1 99 i18 : bracketMatrix(A,2,1) o18 = | 0 T_6 -T_7 | | T_8 0 -T_9 | | T_6 T_8 0 | | T_7 -T_10 -T_6 | | T_10 T_9 -T_8 | 5 3 o18 : Matrix (S[T ..T ]) <--- (S[T ..T ]) 1 99 1 99 i19 : bracketMatrix(A,1,1) o19 = | 2T_1 -T_3 T_4 | | -T_3 2T_2 T_5 | | T_4 T_5 2T_3 | 3 3 o19 : Matrix (S[T ..T ]) <--- (S[T ..T ]) 1 99 1 99