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

isComplexMorphism(ComplexMap) -- whether a complex map is a morphism of complexes

Synopsis

Description

For a complex map $f : C \to D$ of degree $d$, this method checks whether $d = 0$ and, 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 morphism.

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 : isComplexMorphism 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 morphism that (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 : isComplexMorphism f2

o10 = true
i11 : assert(degree f2 == 0)
i12 : assert isComplexMorphism f2

When the degree is non-zero, the map is not a complex morphism. If the debugLevel is greater than zero, then information about the failure is displayed.

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 : assert(degree f3 == 1)
i15 : isComplexMorphism f3

o15 = false
i16 : debugLevel = 1

o16 = 1
i17 : isComplexMorphism f3
-- the complex map has non-zero degree

o17 = false
i18 : assert isCommutative f3
i19 : f4 = randomComplexMap(D, C)
 -- (basis,List,List,Module) with Strategy => Torsion from FunctionClosure[/usr/local/share/Macaulay2/Core/basis.m2:270:33-276:27]
 -- (basis,List,List,Module) with Strategy => Default from basisDefaultStrategy
 -- (inducedMap,Module,Module,Matrix) with Strategy => Default from FunctionClosure[/usr/local/share/Macaulay2/Core/matrix.m2:658:85-666:19]
 -- (inducedMap,Module,Module,Matrix) with Strategy => Default from FunctionClosure[/usr/local/share/Macaulay2/Core/matrix.m2:658:85-666:19]
 -- (inducedMap,Module,Module,Matrix) with Strategy => Default from FunctionClosure[/usr/local/share/Macaulay2/Core/matrix.m2:658:85-666:19]
 -- (inducedMap,Module,Module,Matrix) with Strategy => Default from FunctionClosure[/usr/local/share/Macaulay2/Core/matrix.m2:658:85-666:19]

           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 : assert(degree f4 == 0)
i21 : debugLevel = 0

o21 = 0
i22 : isComplexMorphism f4

o22 = false
i23 : debugLevel = 1

o23 = 1
i24 : isComplexMorphism f4
-- block (1, 0) fails to commute

o24 = false

See also

Ways to use this method: