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
|