Description
For a complex map $f : C \to D$ of degree $d$, this method checks whether, for all $i$, we have $dd^D_{i+d} * f_i = (-1)^d * (f_{i-1} * dd^C_i)$.
We first construct a random complex map which commutes with the differential.
i1 : S = ZZ/101[a,b,c];
|
i2 : C = freeResolution coker vars S
1 3 3 1
o2 = S <-- S <-- S <-- S
0 1 2 3
o2 : Complex
|
i3 : D = C ** C
1 6 15 20 15 6 1
o3 = S <-- S <-- S <-- S <-- S <-- S <-- S
0 1 2 3 4 5 6
o3 : Complex
|
i4 : f1 = randomComplexMap(D, C, Boundary => true, InternalDegree => 1)
1 1
o4 = 0 : S <------------------- S : 0
| -5a-17b-11c |
6 3
1 : S <-------------------------------------------------- S : 1
{1} | 2a-28b+50c -28a+39b-13c -23a-b-48c |
{1} | 26a-16b+42c 41a-20b-19c 23a-11b-16c |
{1} | 18a+31b+19c -5a-23b-48c 50a-38b-19c |
{1} | -7a-25b-38c 28a-36b+16c 23a-b-4c |
{1} | 10a+16b-21c -49a+3b-41c -21a+11b+32c |
{1} | -41a+49b-19c 2a-29b+48c -3a+5b+8c |
15 3
2 : S <-------------------------------------------------- S : 2
{2} | 33a+7b-12c 16a-20b+41c -39a-42b+11c |
{2} | 30a+40b-7c -2a+46b+14c 4a+20b+35c |
{2} | -3a-39b+2c -39a-30b+47c 22a-34b-43c |
{2} | -28a+39b+9c -23a+32b+46c 47b-47c |
{2} | 8a-25b+14c 7a-33b+16c 39a+3b-11c |
{2} | -35a+8b+10c -49a-20b+7c -4a+33b+22c |
{2} | 31a+35b-8c -17a-20b-19c -8a-43b+4c |
{2} | -28a+16b-29c 42a+43c -39a-11b-37c |
{2} | 15a+8b-39c -25a+30b -25a-4b-16c |
{2} | 8a-14b-7c 3a+33b-36c -22a+41b+48c |
{2} | -24a+49b+2c -37a+44b+5c -19a+7b-24c |
{2} | 50a+18b 43a+23b-19c 49a-38b+48c |
{2} | -18a+42c -38a+33b+34c -8a-2b-22c |
{2} | 10a-b-10c 46b-45c -22a-32b-6c |
{2} | -25a+39c -45a+44b-21c -50a+12b-25c |
20 1
3 : S <------------------------ S : 3
{3} | 9a+22b+11c |
{3} | -39a-32b+46c |
{3} | 4a+9b-28c |
{3} | 13a+32b+c |
{3} | -26a+20b-3c |
{3} | 22a-24b+22c |
{3} | -49a+30b-47c |
{3} | -11a+48b-23c |
{3} | -8a+15b-7c |
{3} | 43a-39b+2c |
{3} | -8a+29c |
{3} | 36a-33b-47c |
{3} | -3a+49b+15c |
{3} | -22a+33b-37c |
{3} | -30a+19b-13c |
{3} | 41a-17b-10c |
{3} | 16a+20b+30c |
{3} | -28a-44b-18c |
{3} | -6a+39b+39c |
{3} | 35a-36b+27c |
o4 : ComplexMap
|
i5 : isCommutative f1
o5 = true
|
i6 : assert(degree f1 == 0)
|
i7 : assert isNullHomotopic f1
|
i8 : assert(source f1 == C and target f1 == D)
|
We next generate a complex map that is commutative and (likely) induces a nontrivial map on homology.
i9 : f2 = randomComplexMap(D, C, Cycle => true)
1 1
o9 = 0 : S <----------- S : 0
| -40 |
6 3
1 : S <----------------------- S : 1
{1} | -44 -48 22 |
{1} | 41 2 1 |
{1} | 18 -1 -9 |
{1} | 4 48 -22 |
{1} | -41 -42 -1 |
{1} | -18 1 -31 |
15 3
2 : S <----------------------- S : 2
{2} | -11 -3 -35 |
{2} | -41 22 6 |
{2} | -49 -25 31 |
{2} | -48 22 0 |
{2} | 13 4 35 |
{2} | 40 -31 -6 |
{2} | 33 -3 -13 |
{2} | -41 0 1 |
{2} | 31 25 -40 |
{2} | -41 -35 -47 |
{2} | -49 35 29 |
{2} | 0 -18 1 |
{2} | -9 -4 -13 |
{2} | -40 35 -47 |
{2} | -31 35 -2 |
20 1
3 : S <--------------- S : 3
{3} | -9 |
{3} | -35 |
{3} | 6 |
{3} | 40 |
{3} | 3 |
{3} | -31 |
{3} | 25 |
{3} | -2 |
{3} | -41 |
{3} | -49 |
{3} | -13 |
{3} | 4 |
{3} | 30 |
{3} | -47 |
{3} | 27 |
{3} | -40 |
{3} | 37 |
{3} | -35 |
{3} | -31 |
{3} | -39 |
o9 : ComplexMap
|
i10 : isCommutative f2
o10 = true
|
i11 : assert(degree f2 == 0)
|
i12 : assert isComplexMorphism f2
|
When the degree of the complex map is odd, isCommutative determines whether the map is anti-commutative. We illustrate this for one square.
i13 : f3 = randomComplexMap(D, C, Cycle => true, Degree=>1, InternalDegree => 1)
6 1
o13 = 1 : S <--------------- S : 0
{1} | -26 |
{1} | -50 |
{1} | 1 |
{1} | 26 |
{1} | 50 |
{1} | -1 |
15 3
2 : S <----------------------- S : 1
{2} | 35 -16 -48 |
{2} | 17 49 -40 |
{2} | 1 44 11 |
{2} | 26 0 0 |
{2} | 15 16 48 |
{2} | -18 -49 40 |
{2} | 35 10 -48 |
{2} | 0 50 0 |
{2} | -1 -45 -11 |
{2} | 17 49 -14 |
{2} | 1 44 -40 |
{2} | 0 0 -1 |
{2} | -15 10 -48 |
{2} | 18 49 -14 |
{2} | 1 45 -40 |
20 3
3 : S <----------------------- S : 2
{3} | 29 -48 31 |
{3} | 16 48 0 |
{3} | -49 40 0 |
{3} | 28 37 -31 |
{3} | 35 0 48 |
{3} | 46 -48 -30 |
{3} | 1 0 -11 |
{3} | -29 -18 -47 |
{3} | 0 17 49 |
{3} | 0 1 44 |
{3} | -10 48 0 |
{3} | -15 0 48 |
{3} | -10 -37 -30 |
{3} | -49 14 0 |
{3} | 28 22 -47 |
{3} | 0 18 49 |
{3} | 46 18 -40 |
{3} | 1 0 40 |
{3} | 0 1 45 |
{3} | 10 22 40 |
15 1
4 : S <--------------- S : 3
{4} | -31 |
{4} | -48 |
{4} | -29 |
{4} | -48 |
{4} | 30 |
{4} | -37 |
{4} | 47 |
{4} | -49 |
{4} | 28 |
{4} | -18 |
{4} | 46 |
{4} | 1 |
{4} | 40 |
{4} | -22 |
{4} | 10 |
o13 : ComplexMap
|
i14 : isCommutative f3
o14 = true
|
i15 : assert(degree f3 == 1)
|
i16 : part1 = dd^D_3 * f3_2
o16 = {2} | 16a+35b 48a+35c 48b-16c |
{2} | -49a+17b 40a+17c 40b+49c |
{2} | -44a+b -11a+c -11b+44c |
{2} | 26b 26c 0 |
{2} | -16a+15b -48a+15c -48b+16c |
{2} | 49a-18b -40a-18c -40b-49c |
{2} | -10a+35b 48a+35c 48b+10c |
{2} | -50a 0 50c |
{2} | 45a-b 11a-c 11b-45c |
{2} | -49a+17b 14a+17c 14b+49c |
{2} | -44a+b 40a+c 40b+44c |
{2} | 0 a b |
{2} | -10a-15b 48a-15c 48b+10c |
{2} | -49a+18b 14a+18c 14b+49c |
{2} | -45a+b 40a+c 40b+45c |
15 3
o16 : Matrix S <-- S
|
i17 : part2 = f3_1 * dd^C_2
o17 = {2} | -16a-35b -48a-35c -48b+16c |
{2} | 49a-17b -40a-17c -40b-49c |
{2} | 44a-b 11a-c 11b-44c |
{2} | -26b -26c 0 |
{2} | 16a-15b 48a-15c 48b-16c |
{2} | -49a+18b 40a+18c 40b+49c |
{2} | 10a-35b -48a-35c -48b-10c |
{2} | 50a 0 -50c |
{2} | -45a+b -11a+c -11b+45c |
{2} | 49a-17b -14a-17c -14b-49c |
{2} | 44a-b -40a-c -40b-44c |
{2} | 0 -a -b |
{2} | 10a+15b -48a+15c -48b-10c |
{2} | 49a-18b -14a-18c -14b-49c |
{2} | 45a-b -40a-c -40b-45c |
15 3
o17 : Matrix S <-- S
|
i18 : assert(part1 + part2 == 0)
|
If the debugLevel is greater than zero, then the location of the first failure of commutativity is displayed.
i19 : f4 = randomComplexMap(D, C)
1 1
o19 = 0 : S <--------- S : 0
| 7 |
6 3
1 : S <----------------------- S : 1
{1} | 30 8 -18 |
{1} | 13 8 42 |
{1} | -17 -29 23 |
{1} | -13 30 -28 |
{1} | 3 -46 15 |
{1} | -41 49 18 |
15 3
2 : S <----------------------- S : 2
{2} | -16 -28 30 |
{2} | -46 47 4 |
{2} | 12 -28 22 |
{2} | -18 6 5 |
{2} | 27 -9 -20 |
{2} | -21 -33 -13 |
{2} | 23 28 -29 |
{2} | -37 -29 15 |
{2} | -23 26 -4 |
{2} | 44 5 12 |
{2} | -39 -37 3 |
{2} | 20 -33 9 |
{2} | 19 -28 -2 |
{2} | 0 42 20 |
{2} | -47 44 -26 |
20 1
3 : S <--------------- S : 3
{3} | 33 |
{3} | 16 |
{3} | 10 |
{3} | 31 |
{3} | 28 |
{3} | -6 |
{3} | 21 |
{3} | -30 |
{3} | -4 |
{3} | -14 |
{3} | -33 |
{3} | -42 |
{3} | -44 |
{3} | -5 |
{3} | -16 |
{3} | -35 |
{3} | -39 |
{3} | -4 |
{3} | -24 |
{3} | -32 |
o19 : ComplexMap
|
i20 : isCommutative f4
o20 = false
|
i21 : debugLevel = 1
o21 = 1
|
i22 : isCommutative f4
-- block (1, 0) fails to commute
o22 = false
|