# Complex ** Complex -- tensor product of complexes

## Synopsis

• Operator: **
• Usage:
D = C1 ** C2
• Inputs:
• C1, , or
• C2, , or
• Outputs:
• D, , tensor product of C1 and C2

## Description

The tensor product is a complex $D$ whose $i$th component is the direct sum of $C1_j \otimes C2_k$ over all $i = j+k$. The differential on $C1_j \otimes C2_k$ is the differential $dd^{C1} \otimes id_{C2} + (-1)^j id_{C1} \otimes dd^{C2}$.

As the next example illustrates, the Koszul complex can be constructed via iterated tensor products.

 i1 : S = ZZ/101[a..c] o1 = S o1 : PolynomialRing i2 : Ca = complex {matrix{{a}}} 1 1 o2 = S <-- S 0 1 o2 : Complex i3 : Cb = complex {matrix{{b}}} 1 1 o3 = S <-- S 0 1 o3 : Complex i4 : Cc = complex {matrix{{c}}} 1 1 o4 = S <-- S 0 1 o4 : Complex i5 : Cab = Cb ** Ca 1 2 1 o5 = S <-- S <-- S 0 1 2 o5 : Complex i6 : dd^Cab 1 2 o6 = 0 : S <----------- S : 1 | a b | 2 1 1 : S <-------------- S : 2 {1} | b | {1} | -a | o6 : ComplexMap i7 : assert isWellDefined Cab i8 : Cabc = Cc ** Cab 1 3 3 1 o8 = S <-- S <-- S <-- S 0 1 2 3 o8 : Complex i9 : Cc ** Cb ** Ca 1 3 3 1 o9 = S <-- S <-- S <-- S 0 1 2 3 o9 : Complex i10 : dd^Cabc 1 3 o10 = 0 : S <------------- S : 1 | a b c | 3 3 1 : S <-------------------- S : 2 {1} | b c 0 | {1} | -a 0 c | {1} | 0 -a -b | 3 1 2 : S <-------------- S : 3 {2} | c | {2} | -b | {2} | a | o10 : ComplexMap i11 : assert isWellDefined Cabc

If one of the arguments is a module, it is considered as a complex concentrated in homological degree 0.

 i12 : Cabc ** (S^1/(a,b,c)) o12 = cokernel | a b c | <-- cokernel {1} | a b c 0 0 0 0 0 0 | <-- cokernel {2} | a b c 0 0 0 0 0 0 | <-- cokernel {3} | a b c | {1} | 0 0 0 a b c 0 0 0 | {2} | 0 0 0 a b c 0 0 0 | 0 {1} | 0 0 0 0 0 0 a b c | {2} | 0 0 0 0 0 0 a b c | 3 1 2 o12 : Complex i13 : S^2 ** Cabc 2 6 6 2 o13 = S <-- S <-- S <-- S 0 1 2 3 o13 : Complex

Because the tensor product can be regarded as the total complex of a double complex, each term of the tensor product comes with pairs of indices, labelling the summands.

 i14 : indices Cabc_1 o14 = {{0, 1}, {1, 0}} o14 : List i15 : components Cabc_1 2 1 o15 = {S , S } o15 : List i16 : Cabc_1_[{1,0}] o16 = {1} | 0 | {1} | 0 | {1} | 1 | 3 1 o16 : Matrix S <--- S i17 : indices Cabc_2 o17 = {{0, 2}, {1, 1}} o17 : List i18 : components Cabc_2 1 2 o18 = {S , S } o18 : List i19 : Cabc_2_[{0,2}] o19 = {2} | 1 | {2} | 0 | {2} | 0 | 3 1 o19 : Matrix S <--- S