Macaulay2 » Documentation
Packages » Complexes :: isCommutative(ComplexMap)
next | previous | forward | backward | up | index | toc

isCommutative(ComplexMap) -- whether a complex map commutes with the differentials

Synopsis

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

See also

Ways to use this method: