Warning: this function may be removed, and its function incorporated into that of
image and
minimalPresentation.
This is a very basic operation, and is used by several other functions. See, for example,
pushForward. Therefore we intend to eliminate it, and merge its function into
image after introducing generalized module homomorphisms which map an R-module to an S-module.
As an example, the following fragment computes the ideal of the rational normal curve. This could also be done using
monomialCurveIdeal.
i1 : R = ZZ/101[a..d];
|
i2 : S = ZZ/101[s,t];
|
i3 : F = map(S,R,matrix{{s^4, s^3*t, s*t^3, t^4}})
4 3 3 4
o3 = map(S,R,{s , s t, s*t , t })
o3 : RingMap S <--- R
|
i4 : pushForward1(F,S^1)
o4 = | bc-ad c3-bd2 ac2-b2d b3-a2c |
1 4
o4 : Matrix R <--- R
|
The following code performs the Groebner computation using a product order rather than the default elimination order.
i5 : F = map(S,R,matrix{{s^4, s^3*t, s*t^3, t^4}})
4 3 3 4
o5 = map(S,R,{s , s t, s*t , t })
o5 : RingMap S <--- R
|
i6 : time pushForward1(F,S^1,MonomialOrder=>ProductOrder)
-- used 0.012001 seconds
o6 = | bc-ad c3-bd2 ac2-b2d b3-a2c |
1 4
o6 : Matrix R <--- R
|
The computation is stashed inside the ring map, until the computation has finished completely. This means that you may interrupt this command, and later restart it. You may alo obtain partial results, as follows.
i7 : F = map(S,R,matrix{{s^4, s^3*t, s*t^3, t^4}})
4 3 3 4
o7 = map(S,R,{s , s t, s*t , t })
o7 : RingMap S <--- R
|
i8 : pushForward1(F,S^1,DegreeLimit=>8)
o8 = | bc-ad |
1 1
o8 : Matrix R <--- R
|
After interrupting a computation (using control-C), you may view the equations so far obtained by using the
StopBeforeComputation option to prevent any further work from being done.
i9 : pushForward1(F,S^1,StopBeforeComputation => true)
o9 = | bc-ad |
1 1
o9 : Matrix R <--- R
|
The type
PushforwardComputation is used internally by our current implementation.
Further examples