# pushFwd(RingMap) -- push forward of a finite ring map

## Synopsis

• Function: pushFwd
• Usage:
pushFwd f
pushFwd B
• Inputs:
• f, , or a ring B, and the map is taken to be the natural map from coefficientRing B
• Optional inputs:
• NoPrune => ..., default value false, NoPrune option for pushFwd
• Outputs:
• ,

## Description

If $f: A \to B$ is a ring map, and $B$ is finitely generated as an $A$-module, then the function returns a sequence $(M, g, pf)$ containing (1) $M \cong B^1$ as $A$-modules, (2) a 1-row matrix $g$ of elements of B whose entries generate B as A-module, (3) a function $pf$ that assigns to each element $b \in B$, a matrix $A^1 \to M$, where the image of 1 is the element $b \in M$.

 i1 : kk = QQ; i2 : S = kk[a..d]; i3 : I = monomialCurveIdeal(S, {1,3,4}) 3 2 2 2 3 2 o3 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c) o3 : Ideal of S i4 : B = S/I o4 = B o4 : QuotientRing i5 : A = kk[a,d]; i6 : f = map(B,A) o6 = map (B, A, {a, d}) o6 : RingMap B <--- A i7 : (M,g,pf) = pushFwd f; i8 : M o8 = cokernel {0} | 0 | {1} | 0 | {2} | -d | {1} | 0 | {2} | a | 5 o8 : A-module, quotient of A i9 : g o9 = | 1 b b2 c c2 | 1 5 o9 : Matrix B <--- B i10 : use B o10 = B o10 : QuotientRing i11 : pf(a*b - c^2) o11 = {0} | 0 | {1} | a | {2} | 0 | {1} | 0 | {2} | -1 | o11 : Matrix

## Caveat

This function is meant to be internally used.