next | previous | forward | backward | up | top | index | toc | Macaulay2 website
DGAlgebras :: toComplexMap

toComplexMap -- Construct the ChainComplexMap associated to a DGAlgebraMap

Synopsis

Description

i1 : R = ZZ/101[a,b,c]/ideal{a^3+b^3+c^3,a*b*c}

o1 = R

o1 : QuotientRing
i2 : K1 = koszulComplexDGA(ideal vars R,Variable=>"Y")

o2 = {Ring => R                      }
      Underlying algebra => R[Y ..Y ]
                               1   3
      Differential => {a, b, c}

o2 : DGAlgebra
i3 : K2 = koszulComplexDGA(ideal {b,c},Variable=>"T")

o3 = {Ring => R                      }
      Underlying algebra => R[T ..T ]
                               1   2
      Differential => {b, c}

o3 : DGAlgebra
i4 : g = dgAlgebraMap(K1,K2,matrix{{Y_2,Y_3}})

o4 = map (R[Y ..Y ], R[T ..T ], {Y , Y , a, b, c})
             1   3      1   2     2   3

o4 : DGAlgebraMap
i5 : g' = toComplexMap g

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

          3                   2
     1 : R  <--------------- R  : 1
               {1} | 0 0 |
               {1} | 1 0 |
               {1} | 0 1 |

          3                 1
     2 : R  <------------- R  : 2
               {2} | 0 |
               {2} | 0 |
               {2} | 1 |

o5 : ChainComplexMap

The option EndDegree must be specified if the source of phi has any algebra generators of even degree. The option AssertWellDefined is used if one wishes to assert that the result of this computation is indeed a chain map. One can construct just the nth map in the chain map by providing the second ZZ parameter.

This function also works when working over different rings, such as the case when the DGAlgebraMap is produced via liftToDGMap and in the next example. In this case, the target module is produced via pushForward.

i6 : R = ZZ/101[a,b,c]/ideal{a^3,b^3,c^3}

o6 = R

o6 : QuotientRing
i7 : S = R/ideal{a^2*b^2*c^2}

o7 = S

o7 : QuotientRing
i8 : f = map(S,R)

o8 = map (S, R, {a, b, c})

o8 : RingMap S <--- R
i9 : A = acyclicClosure(R,EndDegree=>3)

o9 = {Ring => R                                  }
      Underlying algebra => R[T ..T ]
                               1   6
                                 2     2     2
      Differential => {a, b, c, a T , b T , c T }
                                   1     2     3

o9 : DGAlgebra
i10 : B = acyclicClosure(S,EndDegree=>3)

o10 = {Ring => S                                                                                                                              }
       Underlying algebra => S[T ..T  ]
                                1   16
                                  2     2     2       2 2     2 2      2 2      2 2     2 2        2 2       2 2        2       2       2
       Differential => {a, b, c, a T , b T , c T , a*b c T , b c T , -a b T , -a c T , b c T T , -a c T T , b c T T , -a T T , c T T , b T T }
                                    1     2     3         1       4        6        5       3 4        3 5       2 4      1 7     3 7     2 7

o10 : DGAlgebra
i11 : phi = liftToDGMap(B,A,f)

o11 = map (S[T ..T  ], R[T ..T ], {T , T , T , T , T , T , a, b, c})
              1   16      1   6     1   2   3   4   5   6

o11 : DGAlgebraMap
i12 : toComplexMap(phi,EndDegree=>3)

                                          1
o12 = 0 : cokernel | a2b2c2 | <--------- R  : 0
                                 | 1 |

                                                                    3
      1 : cokernel {1} | a2b2c2 0      0      | <----------------- R  : 1
                   {1} | 0      a2b2c2 0      |    {1} | 1 0 0 |
                   {1} | 0      0      a2b2c2 |    {1} | 0 1 0 |
                                                   {1} | 0 0 1 |

                                                                                                      6
      2 : cokernel {2} | a2b2c2 0      0      0      0      0      0      | <----------------------- R  : 2
                   {2} | 0      a2b2c2 0      0      0      0      0      |    {2} | 1 0 0 0 0 0 |
                   {2} | 0      0      a2b2c2 0      0      0      0      |    {2} | 0 1 0 0 0 0 |
                   {3} | 0      0      0      a2b2c2 0      0      0      |    {2} | 0 0 1 0 0 0 |
                   {3} | 0      0      0      0      a2b2c2 0      0      |    {3} | 0 0 0 1 0 0 |
                   {3} | 0      0      0      0      0      a2b2c2 0      |    {3} | 0 0 0 0 1 0 |
                   {6} | 0      0      0      0      0      0      a2b2c2 |    {3} | 0 0 0 0 0 1 |
                                                                               {6} | 0 0 0 0 0 0 |

                                                                                                                                                                             10
      3 : cokernel {3} | a2b2c2 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      | <------------------------------- R   : 3
                   {4} | 0      a2b2c2 0      0      0      0      0      0      0      0      0      0      0      0      0      0      |    {3} | 1 0 0 0 0 0 0 0 0 0 |
                   {4} | 0      0      a2b2c2 0      0      0      0      0      0      0      0      0      0      0      0      0      |    {4} | 0 1 0 0 0 0 0 0 0 0 |
                   {4} | 0      0      0      a2b2c2 0      0      0      0      0      0      0      0      0      0      0      0      |    {4} | 0 0 1 0 0 0 0 0 0 0 |
                   {4} | 0      0      0      0      a2b2c2 0      0      0      0      0      0      0      0      0      0      0      |    {4} | 0 0 0 1 0 0 0 0 0 0 |
                   {4} | 0      0      0      0      0      a2b2c2 0      0      0      0      0      0      0      0      0      0      |    {4} | 0 0 0 0 1 0 0 0 0 0 |
                   {4} | 0      0      0      0      0      0      a2b2c2 0      0      0      0      0      0      0      0      0      |    {4} | 0 0 0 0 0 1 0 0 0 0 |
                   {4} | 0      0      0      0      0      0      0      a2b2c2 0      0      0      0      0      0      0      0      |    {4} | 0 0 0 0 0 0 1 0 0 0 |
                   {4} | 0      0      0      0      0      0      0      0      a2b2c2 0      0      0      0      0      0      0      |    {4} | 0 0 0 0 0 0 0 1 0 0 |
                   {4} | 0      0      0      0      0      0      0      0      0      a2b2c2 0      0      0      0      0      0      |    {4} | 0 0 0 0 0 0 0 0 1 0 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      a2b2c2 0      0      0      0      0      |    {4} | 0 0 0 0 0 0 0 0 0 1 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      0      a2b2c2 0      0      0      0      |    {7} | 0 0 0 0 0 0 0 0 0 0 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      0      0      a2b2c2 0      0      0      |    {7} | 0 0 0 0 0 0 0 0 0 0 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      0      0      0      a2b2c2 0      0      |    {7} | 0 0 0 0 0 0 0 0 0 0 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      0      0      0      0      a2b2c2 0      |    {7} | 0 0 0 0 0 0 0 0 0 0 |
                   {7} | 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      a2b2c2 |    {7} | 0 0 0 0 0 0 0 0 0 0 |
                                                                                                                                              {7} | 0 0 0 0 0 0 0 0 0 0 |

o12 : ChainComplexMap

Ways to use toComplexMap :

For the programmer

The object toComplexMap is a method function with options.