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 |
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}, DegreeRank => 1] 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 |