next | previous | forward | backward | up | top | index | toc | home

pushForward1(RingMap,Module) -- the main computational component of pushForward

Synopsis

Description

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

See also