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

ComplexMap || ComplexMap -- join or concatenate maps vertically

Synopsis

Description

Given complex maps with the same source, this method constructs the associated map from the source to the direct sum of the targets.

First, we define some non-trivial maps of chain complexes.

i1 : R = ZZ/101[a..d];
i2 : D1 = (freeResolution coker matrix{{a,b,c}})[1]

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

o2 : Complex
i3 : D2 = freeResolution coker matrix{{a*b,a*c,b*c}}

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

o3 : Complex
i4 : C = freeResolution coker matrix{{a^2,b^2,c*d}}

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

o4 : Complex
i5 : f = randomComplexMap(D1, C)

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

          3                           3
     1 : R  <----------------------- R  : 1
               {2} | 24  -29 -10 |
               {2} | -36 19  -29 |
               {2} | -30 19  -8  |

          1                                                                 3
     2 : R  <------------------------------------------------------------- R  : 2
               {3} | -22a-29b-24c-38d -16a+39b+21c+34d 19a-47b-39c-18d |

                   1
     3 : 0 <----- R  : 3
              0

o5 : ComplexMap
i6 : g = randomComplexMap(D2, C)

          1               1
o6 = 0 : R  <----------- R  : 0
               | -13 |

          3                          3
     1 : R  <---------------------- R  : 1
               {2} | -43 -47 16 |
               {2} | -15 38  22 |
               {2} | -28 2   45 |

          2                                                                 3
     2 : R  <------------------------------------------------------------- R  : 2
               {3} | -34a-48b-47c+47d -23a+39b+43c-17d 11a-38b+33c+40d |
               {3} | 19a-16b+7c+15d   -11a+48b+36c+35d 11a+46b-28c+d   |

                   1
     3 : 0 <----- R  : 3
              0

o6 : ComplexMap
i7 : h = f||g

          4                   1
o7 = 0 : R  <--------------- R  : 0
               {1} | 0   |
               {1} | 0   |
               {1} | 0   |
               {0} | -13 |

          6                           3
     1 : R  <----------------------- R  : 1
               {2} | 24  -29 -10 |
               {2} | -36 19  -29 |
               {2} | -30 19  -8  |
               {2} | -43 -47 16  |
               {2} | -15 38  22  |
               {2} | -28 2   45  |

          3                                                                 3
     2 : R  <------------------------------------------------------------- R  : 2
               {3} | -22a-29b-24c-38d -16a+39b+21c+34d 19a-47b-39c-18d |
               {3} | -34a-48b-47c+47d -23a+39b+43c-17d 11a-38b+33c+40d |
               {3} | 19a-16b+7c+15d   -11a+48b+36c+35d 11a+46b-28c+d   |

o7 : ComplexMap
i8 : assert isWellDefined h
i9 : assert(target h === target f ++ target g)
i10 : assert(source h === source f)

This is really a shorthand for constructing complex maps via block matrices.

i11 : assert(h === map(D1 ++ D2, C, {{f},{g}}))

See also