next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Complexes :: isNullHomotopic(ComplexMap)

isNullHomotopic(ComplexMap) -- whether a map of complexes is null-homotopic

Synopsis

Description

A map of chain complexes $f \colon C \to D$ is null-homopic if there exists a map of chain complexes $h : C \to D$ of degree $\deg(f)+1$, such that we have the equality \[ f = \operatorname{dd}^D h + (-1)^{\deg(f)} h \operatorname{dd}^C. \]

As a first example, we construct a map of chain complexes in which the null homotopy is given by the identity.

i1 : R = ZZ/101[x,y,z];
i2 : M = cokernel matrix{{x,y,z^2}, {y^2,z,x^2}}

o2 = cokernel | x  y z2 |
              | y2 z x2 |

                            2
o2 : R-module, quotient of R
i3 : C = complex {id_M}

o3 = cokernel | x  y z2 | <-- cokernel | x  y z2 |
              | y2 z x2 |              | y2 z x2 |
                               
     0                        1

o3 : Complex
i4 : assert isNullHomotopic id_C
i5 : h = nullHomotopy id_C

o5 = 1 : cokernel | x  y z2 | <----------- cokernel | x  y z2 | : 0
                  | y2 z x2 |    | 1 0 |            | y2 z x2 |
                                 | 0 1 |

     2 : 0 <----- cokernel | x  y z2 | : 1
              0            | y2 z x2 |

o5 : ComplexMap
i6 : assert(h_0 == id_M)
i7 : assert isNullHomotopyOf(h, id_C)

A random map of chain complexes, arising as a boundary in the associated Hom complex, is automatically null homotopic.

i8 : C = (freeResolution M) ** R^1/ideal(x^3, z^3-x)

o8 = cokernel | x3 z3-x 0  0    | <-- cokernel {2} | x3 z3-x 0  0    0  0    | <-- cokernel {5} | x3 z3-x 0  0    0  0    | <-- cokernel {7} | x3 z3-x 0  0    |
              | 0  0    x3 z3-x |              {1} | 0  0    x3 z3-x 0  0    |              {7} | 0  0    x3 z3-x 0  0    |              {9} | 0  0    x3 z3-x |
                                               {2} | 0  0    0  0    x3 z3-x |              {9} | 0  0    0  0    x3 z3-x |      
     0                                                                                                                          3
                                      1                                            2

o8 : Complex
i9 : f = randomComplexMap(C, C[1], Boundary => true)

o9 = -1 : 0 <----- cokernel | x3 z3-x 0  0    | : -1
               0            | 0  0    x3 z3-x |

     0 : cokernel | x3 z3-x 0  0    | <-------------------------------------------------------------------------- cokernel {2} | x3 z3-x 0  0    0  0    | : 0
                  | 0  0    x3 z3-x |    | 19xy+20y2-29yz-8z2-5x        -46y+30z 30x2-24xy-38y2-16yz+15z2-29x |            {1} | 0  0    x3 z3-x 0  0    |
                                         | -8x2+48y2+19xz-10yz-29z2+36x 36y+7z   -33x2-29y2-24xz-38yz+20z2    |            {2} | 0  0    0  0    x3 z3-x |

     1 : cokernel {2} | x3 z3-x 0  0    0  0    | <-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cokernel {5} | x3 z3-x 0  0    0  0    | : 1
                  {1} | 0  0    x3 z3-x 0  0    |    {2} | 2x2y-29y3+29xz-2x                                                      25x2y3-39x2y2z-18x2yz2-34x2y+47xy2-19x2z+39xyz+18xz2                    -47x2y5+38x2y4z+2x2y3z2+43x2y3+47xy4+15x2y2z-38xy3z+28x2yz2-2xy2z2                                  |            {7} | 0  0    x3 z3-x 0  0    |
                  {2} | 0  0    0  0    x3 z3-x |    {1} | 10x2y2-24xy3-38y4+29x2yz-16y3z+43y2z2+24x2z+38xyz+16xz2+19x2-10xy-29xz -38x2y4-16x2y3z+9x2y2z2+34xy3z2-47y4z2+19x2y2-39xy3-18xy2z              -34x2y4z2-43xy5z2-47y6z2-15x2y4+38xy5-28x2y3z+2xy4z                                                 |            {9} | 0  0    0  0    x3 z3-x |
                                                     {2} | 8x2y+18y3-18xz-8x                                                      -49x2y3-34xy4+47y5-19xy3z+39y4z+18y3z2+34x2yz-47xy2z+19x2z2-39xyz2-18x2 34x2y5+43xy6+47y7+48x2y4z+15xy5z-38y6z+47x2y3z2+28xy4z2-2y5z2-43x2y3z-47xy4z-15x2y2z2+38xy3z2+2x2y2 |

     2 : cokernel {5} | x3 z3-x 0  0    0  0    | <--------------------------------------------------------------------------------------------------- cokernel {7} | x3 z3-x 0  0    | : 2
                  {7} | 0  0    x3 z3-x 0  0    |    {5} | 21x2-34xy+47y2-19xz+39yz+18z2 -19x2y2+43xy3+47y4+16x2yz+15xy2z-38y3z-7x2z2+28xyz2-2y2z2 |            {9} | 0  0    x3 z3-x |
                  {9} | 0  0    0  0    x3 z3-x |    {7} | 13                            -16x2-22xy-48y2-45xz+32yz-47z2                            |
                                                     {9} | 0                             -47                                                       |

o9 : ComplexMap
i10 : assert isNullHomotopic f
i11 : h = nullHomotopy f

o11 = 0 : cokernel | x3 z3-x 0  0    | <----------------------------------- cokernel | x3 z3-x 0  0    | : -1
                   | 0  0    x3 z3-x |    | 24yz+46        -24y2-30     |            | 0  0    x3 z3-x |
                                          | -2x2yz+24z2-36 2x2y2-24yz-7 |

      1 : cokernel {2} | x3 z3-x 0  0    0  0    | <--------------------------------------------------- cokernel {2} | x3 z3-x 0  0    0  0    | : 0
                   {1} | 0  0    x3 z3-x 0  0    |    {2} | 2x2y2+41               0 -29            |            {1} | 0  0    x3 z3-x 0  0    |
                   {2} | 0  0    0  0    x3 z3-x |    {1} | -24y3+24xz+19x-10y-29z 0 -24x2y-38y-16z |            {2} | 0  0    0  0    x3 z3-x |
                                                      {2} | -8                     0 -40            |

      2 : cokernel {5} | x3 z3-x 0  0    0  0    | <------------------------------------------------------------------------------------------------------ cokernel {5} | x3 z3-x 0  0    0  0    | : 1
                   {7} | 0  0    x3 z3-x 0  0    |    {5} | 43 9x2+34xy-47y2+19xz-39yz-18z2 -34x2y2-43xy3-47y4-48x2yz-15xy2z+38y3z-47x2z2-28xyz2+2y2z2 |            {7} | 0  0    x3 z3-x 0  0    |
                   {9} | 0  0    0  0    x3 z3-x |    {7} | 0  0                            0                                                          |            {9} | 0  0    0  0    x3 z3-x |
                                                      {9} | 0  0                            47                                                         |

      3 : cokernel {7} | x3 z3-x 0  0    | <--------------------------------------------- cokernel {7} | x3 z3-x 0  0    | : 2
                   {9} | 0  0    x3 z3-x |    {7} | 13 -16x2-22xy-48y2-45xz+32yz-47z2 |            {9} | 0  0    x3 z3-x |
                                              {9} | 0  0                              |

o11 : ComplexMap
i12 : assert isNullHomotopyOf(h, f)
i13 : g = randomComplexMap(C, C[1])

o13 = -1 : 0 <----- cokernel | x3 z3-x 0  0    | : -1
                0            | 0  0    x3 z3-x |

      0 : cokernel | x3 z3-x 0  0    | <-------------------------------------------------------------------------------- cokernel {2} | x3 z3-x 0  0    0  0    | : 0
                   | 0  0    x3 z3-x |    | 15x2-23xy+43y2+39xz-17yz-11z2 40x+11y+46z 22x2-47xy-7y2-23xz+2yz+29z2    |            {1} | 0  0    x3 z3-x 0  0    |
                                          | 48x2+36xy+11y2+35xz-38yz+33z2 -28x+y-3z   -47x2+15xy-13y2-37xz-10yz+30z2 |            {2} | 0  0    0  0    x3 z3-x |

      1 : cokernel {2} | x3 z3-x 0  0    0  0    | <-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cokernel {5} | x3 z3-x 0  0    0  0    | : 1
                   {1} | 0  0    x3 z3-x 0  0    |    {2} | -18x2y+27xy2-9y3+39x2z-22xyz-32y2z+32xz2-20yz2      4x2y3+22xy4-8y5+13x2y2z-49xy3z+43y4z-26x2yz2-11xy2z2-8y3z2   -49x2y5+30xy6-40y7-13x2y4z-47xy5z+37y6z+4x2y3z2+27xy4z2-35y5z2  |            {7} | 0  0    x3 z3-x 0  0    |
                   {2} | 0  0    0  0    x3 z3-x |    {1} | 24x2y2-15xy3+33y4-30x2yz+39xy2z-49y3z-48x2z2-33y2z2 36x2y4-30xy5-28y6-3x2y3z+41xy4z-6y5z-22x2y2z2+16xy3z2+35y4z2 -31x2y6-48xy7+30y8-39x2y5z-29xy6z-37y7z-31x2y4z2-48xy5z2+47y6z2 |            {9} | 0  0    0  0    x3 z3-x |
                                                      {2} | -19x2y-20xy2+36y3+17x2z+44xyz+9y2z-39xz2-39yz2      -9x2y3+40xy4+25y5-35x2y2z+3xy3z-2y4z+6x2yz2-31xy2z2-41y3z2   -49x2y5+46xy6-22y7+28x2y4z+xy5z+10y6z-18x2y3z2+40xy4z2+7y5z2    |

      2 : cokernel {5} | x3 z3-x 0  0    0  0    | <-------------------------------------------------------------------------------------------------- cokernel {7} | x3 z3-x 0  0    | : 2
                   {7} | 0  0    x3 z3-x 0  0    |    {5} | 30x2+13xy-13y2-17xz+3yz-41z2 8x2y2-46xy3+42y4-29x2yz+49xy2z+23y3z+30x2z2-18xyz2-28y2z2 |            {9} | 0  0    x3 z3-x |
                   {9} | 0  0    0  0    x3 z3-x |    {7} | 8                            15x2+18xy-46y2-16xz+12yz-18z2                             |
                                                      {9} | 0                            27                                                        |

o13 : ComplexMap
i14 : assert not isNullHomotopic g

This procedure also works for complex maps whose degree is non-zero.

i15 : f = randomComplexMap(C, C[2], Boundary => true, Degree => 1)

o15 = -1 : 0 <----- cokernel | x3 z3-x 0  0    | : -2
                0            | 0  0    x3 z3-x |

      0 : cokernel | x3 z3-x 0  0    | <-------------------------------------------------------------------- cokernel {2} | x3 z3-x 0  0    0  0    | : -1
                   | 0  0    x3 z3-x |    | 39xy+44y2-19yz+36x      26y-37z -37x2-47xy+28y2-6yz-12z2+28x |            {1} | 0  0    x3 z3-x 0  0    |
                                          | 34y2+39xz-20yz-19z2+23x 23y+24z -14x2+28y2-47xz+28yz+17z2    |            {2} | 0  0    0  0    x3 z3-x |

      1 : cokernel {2} | x3 z3-x 0  0    0  0    | <---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cokernel {5} | x3 z3-x 0  0    0  0    | : 0
                   {1} | 0  0    x3 z3-x 0  0    |    {2} | -24x2y+28y3-28xz+24x                                                 2x2y3-5x2y2z+37x2yz2+28x2y+26xy2-29x2z+5xyz-37xz2                     -30x2y5-4x2y4z-22x2y3z2-28x2y3+30xy4+42x2y2z+4xy3z+44x2yz2+22xy2z2                                  |            {7} | 0  0    x3 z3-x 0  0    |
                   {2} | 0  0    0  0    x3 z3-x |    {1} | 20x2y2-47xy3+28y4+19x2yz-6y3z-14y2z2+47x2z-28xyz+6xz2+39x2-20xy-19xz 28x2y4-6x2y3z-14x2y2z2-28xy3z2-26y4z2+29x2y2-5xy3+37xy2z              29x2y4z2+28xy5z2-30y6z2-42x2y4-4xy5-44x2y3z-22xy4z                                                  |            {9} | 0  0    0  0    x3 z3-x |
                                                      {2} | -24y3+24xz                                                           -24x2y3+28xy4+26y5-29xy3z+5y4z-37y3z2-28x2yz-26xy2z+29x2z2-5xyz2+37x2 -29x2y5-28xy6+30y7+15x2y4z+42xy5z+4y6z-4x2y3z2+44xy4z2+22y5z2+28x2y3z-30xy4z-42x2y2z2-4xy3z2-22x2y2 |

      2 : cokernel {5} | x3 z3-x 0  0    0  0    | <----------------------------------------------------------------------------------------------- cokernel {7} | x3 z3-x 0  0    | : 1
                   {7} | 0  0    x3 z3-x 0  0    |    {5} | 33x2+28xy+26y2-29xz+5yz-37z2 3x2y2-28xy3+30y4+9x2yz+42xy2z+4y3z-2x2z2+44xyz2+22y2z2 |            {9} | 0  0    x3 z3-x |
                   {9} | 0  0    0  0    x3 z3-x |    {7} | -33                          5x2-20xy-32y2-13xz+6yz-2z2                             |
                                                      {9} | 0                            12                                                     |

o15 : ComplexMap
i16 : assert isNullHomotopic f
i17 : h = nullHomotopy f

o17 = 0 : cokernel | x3 z3-x 0  0    | <-------------------------------------- cokernel | x3 z3-x 0  0    | : -2
                   | 0  0    x3 z3-x |    | -47yz+26        47y2-37        |            | 0  0    x3 z3-x |
                                          | -24x2yz-47z2+23 24x2y2+47yz+24 |

      1 : cokernel {2} | x3 z3-x 0  0    0  0    | <------------------------------------------------ cokernel {2} | x3 z3-x 0  0    0  0    | : -1
                   {1} | 0  0    x3 z3-x 0  0    |    {2} | 24x2y2-10             0 -28          |            {1} | 0  0    x3 z3-x 0  0    |
                   {2} | 0  0    0  0    x3 z3-x |    {1} | 47y3-47xz-39x+20y+19z 0 47x2y-28y+6z |            {2} | 0  0    0  0    x3 z3-x |
                                                      {2} | 0                     0 38           |

      2 : cokernel {5} | x3 z3-x 0  0    0  0    | <----------------------------------------------------------------------------------------------------- cokernel {5} | x3 z3-x 0  0    0  0    | : 0
                   {7} | 0  0    x3 z3-x 0  0    |    {5} | 14 14x2+28xy+26y2-29xz+5yz-37z2 -29x2y2-28xy3+30y4+15x2yz+42xy2z+4y3z-4x2z2+44xyz2+22y2z2 |            {7} | 0  0    x3 z3-x 0  0    |
                   {9} | 0  0    0  0    x3 z3-x |    {7} | 0  0                            0                                                         |            {9} | 0  0    0  0    x3 z3-x |
                                                      {9} | 0  0                            12                                                        |

      3 : cokernel {7} | x3 z3-x 0  0    | <------------------------------------------ cokernel {7} | x3 z3-x 0  0    | : 1
                   {9} | 0  0    x3 z3-x |    {7} | 33 -5x2+20xy+32y2+13xz-6yz+2z2 |            {9} | 0  0    x3 z3-x |
                                              {9} | 0  0                           |

o17 : ComplexMap
i18 : assert isNullHomotopyOf(h, f)

See also

Ways to use this method: