Macaulay2 » Documentation
Packages » PushForward > pushFwd(RingMap,Matrix)
next | previous | forward | backward | up | index | toc

pushFwd(RingMap,Matrix) -- push forward of a module map via a finite ring map

Synopsis

Description

If $M_1$ and $M_2$ are both finite generated as $A$-modules, via $f$, this returns the induced map on $A$-modules.

i1 : kk = QQ

o1 = QQ

o1 : Ring
i2 : A = kk[a,b]

o2 = A

o2 : PolynomialRing
i3 : B = kk[z,t]

o3 = B

o3 : PolynomialRing
i4 : f = map(B,A,{z^2,t^2})

                  2   2
o4 = map (B, A, {z , t })

o4 : RingMap B <-- A
i5 : M = B^1/ideal(z^3,t^3)

o5 = cokernel | z3 t3 |

                            1
o5 : B-module, quotient of B
i6 : g = map(M,M,matrix{{z*t}})

o6 = | zt |

o6 : Matrix M <-- M
i7 : p = pushFwd(f,g)

o7 = | 0 0 ab 0 |
     | 0 0 0  b |
     | 1 0 0  0 |
     | 0 a 0  0 |

o7 : Matrix
i8 : source p == pushFwd(f, source g)

o8 = true
i9 : target p == pushFwd(f, target g)

o9 = true
i10 : kerg = pushFwd(f,ker g)

o10 = cokernel | b a  0 0 0 0 0 |
               | 0 -b a 0 0 0 0 |
               | 0 0  0 b a 0 0 |
               | 0 0  0 0 0 b a |

                             4
o10 : A-module, quotient of A
i11 : kerp = prune ker p

o11 = cokernel {1} | b a  0 0 0 0 0 |
               {1} | 0 -b a 0 0 0 0 |
               {1} | 0 0  0 b a 0 0 |
               {1} | 0 0  0 0 0 b a |

                             4
o11 : A-module, quotient of A
i12 : k = ZZ/32003

o12 = k

o12 : QuotientRing
i13 : A = k[x,y]/(y^4-2*x^3*y^2-4*x^5*y+x^6-y^7)

o13 = A

o13 : QuotientRing
i14 : A = k[x,y]/(y^3-x^7)

o14 = A

o14 : QuotientRing
i15 : B = integralClosure(A, Keep =>{})

o15 = B

o15 : PolynomialRing
i16 : describe B

o16 = k[w   , Degrees => {3}, Heft => {1}, MonomialOrder => {MonomialSize => 32}]
         3,0                                                {GRevLex => {3}    }
                                                            {4:(GRevLex => {}) }
                                                            {Position => Up    }
i17 : f = map(B^1, B^1, matrix{{w_(3,0)}})

o17 = | w_(3,0) |

              1      1
o17 : Matrix B  <-- B
i18 : g = pushFwd(icMap A, f)

o18 = | 0 0 x |
      | 1 0 0 |
      | 0 1 0 |

o18 : Matrix
i19 : pushFwd(icMap A, f^2) == g*g

o19 = true
i20 : A = kk[x]

o20 = A

o20 : PolynomialRing
i21 : B = A[y, Join => false]/(y^3-x^7)

o21 = B

o21 : QuotientRing
i22 : pushFwd B^1

       3
o22 = A

o22 : A-module, free
i23 : pushFwd matrix{{y}}

o23 = | 0 0 x7 |
      | 1 0 0  |
      | 0 1 0  |

              3      3
o23 : Matrix A  <-- A

Pushforward is linear and respects composition:

i24 : B = A[y,z,Join => false]/(y^3 - x*z, z^3-y^7);
i25 : pushFwd B^1

       9
o25 = A

o25 : A-module, free
i26 : fy = pushFwd matrix{{y}}

o26 = | 0 0 0 0 0 0 0 0 0  |
      | 1 0 0 0 0 0 0 0 0  |
      | 0 1 0 0 0 0 0 0 0  |
      | 0 0 0 0 1 0 0 0 0  |
      | 0 0 0 0 0 1 0 0 0  |
      | 0 0 x 0 0 0 0 0 0  |
      | 0 0 0 x 0 0 0 0 0  |
      | 0 0 0 0 0 0 1 0 x3 |
      | 0 0 0 0 0 0 0 1 0  |

              9      9
o26 : Matrix A  <-- A
i27 : fz = pushFwd matrix{{z}};

              9      9
o27 : Matrix A  <-- A
i28 : fx = pushFwd matrix{{x_B}};

              9      9
o28 : Matrix A  <-- A
i29 : g =  pushFwd matrix{{y*z -x_B*z^2}}

o29 = | 0  0  0  0      0     0     0      0      0      |
      | 0  0  0  0      0     0     0      0      0      |
      | 0  0  0  0      0     0     0      0      0      |
      | 0  1  0  0      0     0     0      0      0      |
      | 1  0  0  0      0     0     0      0      0      |
      | 0  0  0  0      0     0     0      0      0      |
      | -x 0  x  0      0     0     0      0      0      |
      | 0  -x 0  -x6+x3 0     -x3+1 0      -x8+x5 0      |
      | 0  0  -x 0      -x3+1 0     -x5+x2 0      -x8+x5 |

              9      9
o29 : Matrix A  <-- A
i30 : g == fy*fz-fx*fz^2

o30 = true
i31 : fz^3-fy^7 == 0

o31 = true

See also

Ways to use this method: