next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Complexes :: map(Complex,Complex,HashTable)

map(Complex,Complex,HashTable) -- make a map of chain complexes

Synopsis

Description

A map of complexes $f : C \rightarrow D$ of degree $d$ is a sequence of maps $f_i : C_i \rightarrow D_{d+i}$. No relationship between the maps $f_i$ and and the differentials of either $C$ or $D$ is assumed.

We construct a map of chain complexes by specifying the individual maps between the terms.

i1 : R = ZZ/101[a,b,c];
i2 : C = freeResolution coker matrix{{a^2-b^2,b^3-c^3,c^4}}

      1      3      3      1
o2 = R  <-- R  <-- R  <-- R
                           
     0      1      2      3

o2 : Complex
i3 : D = freeResolution coker vars R

      1      3      3      1
o3 = R  <-- R  <-- R  <-- R
                           
     0      1      2      3

o3 : Complex
i4 : H = hashTable { 0 => map(D_0, C_0, 1),
         1 => map(D_1, C_1, {{a, 0, 0}, {-b, b^2, 0}, {0, -c^2, c^3}}),
         2 => map(D_2, C_2, {{a*b^2, 0, 0}, {-a*c^2, a*c^3, 0}, {b*c^2, -b*c^3, b^2*c^3}}),
         3 => map(D_3, C_3, {{a*b^2*c^3}})
         }

o4 = HashTable{0 => | 1 |                 }
               1 => {1} | a  0   0  |
                    {1} | -b b2  0  |
                    {1} | 0  -c2 c3 |
               2 => {2} | ab2  0    0    |
                    {2} | -ac2 ac3  0    |
                    {2} | bc2  -bc3 b2c3 |
               3 => {3} | ab2c3 |

o4 : HashTable
i5 : f = map(D, C, H)

          1             1
o5 = 0 : R  <--------- R  : 0
               | 1 |

          3                         3
     1 : R  <--------------------- R  : 1
               {1} | a  0   0  |
               {1} | -b b2  0  |
               {1} | 0  -c2 c3 |

          3                              3
     2 : R  <-------------------------- R  : 2
               {2} | ab2  0    0    |
               {2} | -ac2 ac3  0    |
               {2} | bc2  -bc3 b2c3 |

          1                     1
     3 : R  <----------------- R  : 3
               {3} | ab2c3 |

o5 : ComplexMap
i6 : assert isWellDefined f
i7 : assert isHomogeneous f
i8 : assert(degree f == 0)
i9 : assert isComplexMorphism f

The keys in the hash table index the terms in the source of the map. If a key is missing, that map is taken to be the zero map. We illustrate by constructing a map of chain complexes having nonzero degree, and omitting one key in the hash table.

i10 : E = D[-3]

       1      3      3      1
o10 = R  <-- R  <-- R  <-- R
                            
      3      4      5      6

o10 : Complex
i11 : H = hashTable { 0 => map(E_3, C_0, 1),
          1 => map(E_4, C_1, {{a, 0, 0}, {-b, b^2, 0}, {0, -c^2, c^3}}),
          3 => map(E_6, C_3, {{a*b^2*c^3}})
          }

o11 = HashTable{0 => | 1 |            }
                1 => {1} | a  0   0  |
                     {1} | -b b2  0  |
                     {1} | 0  -c2 c3 |
                3 => {3} | ab2c3 |

o11 : HashTable
i12 : g = map(E, C, H, Degree => 3)

           1             1
o12 = 3 : R  <--------- R  : 0
                | 1 |

           3                         3
      4 : R  <--------------------- R  : 1
                {1} | a  0   0  |
                {1} | -b b2  0  |
                {1} | 0  -c2 c3 |

           1                     1
      6 : R  <----------------- R  : 3
                {3} | ab2c3 |

o12 : ComplexMap
i13 : g_2

o13 = 0

              3       3
o13 : Matrix R  <--- R
i14 : assert(g_1 == f_1)
i15 : assert(g != f)
i16 : assert isWellDefined g
i17 : assert isHomogeneous g
i18 : assert(degree g == 3)
i19 : assert not isComplexMorphism g
i20 : assert not isCommutative g
i21 : assert(source g == C)
i22 : assert(target g == E)

This is the primary constructor used by all of the more user friendly methods for constructing a chain complex.

Caveat

This constructor minimizes computation and does very little error checking. To verify that a complex is well constructed, use isWellDefined(ComplexMap).

See also