[top][index]
search for:

pushForward1 -- the main computational component of pushForward

pushForward1(f,M,options) -- Given a ring map f : R --> S, and an S-module M, yields a presentation matrix of the R-submodule of M generated by the given (S-module) generators of M.

Warning: this function will be removed, and its function incorporated into that of image and prune.

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 : pushForward1(f,S^1,MonomialOrder=>ProductOrder)

o5 = | bc-ad c3-bd2 ac2-b2d b3-a2c |

             1       4
o5 : 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.

i6 : f = map(S,R,matrix{{s^4, s^3*t, s*t^3, t^4}})

               4   3      3   4
o6 = map(S,R,{s , s t, s*t , t })

o6 : RingMap S <--- R
i7 : pushForward1(f,S^1,DegreeLimit=>4)

o7 = 0

             1
o7 : Matrix R  <--- 0

After interrupting a computation (using control-C), you may view the equations so far obtained by using the PairLimit option to prevent any further work from being done.

i8 : pushForward1(f,S^1,PairLimit=>0)

o8 = | bc-ad c3-bd2 ac2-b2d b3-a2c |

             1       4
o8 : Matrix R  <--- R

The type PushforwardComputation is used internally by our current implementation.

Ways to use pushForward1 :

  • pushForward1(RingMap,Module)
  • Optional arguments :

  • pushForward1(..., BasisElementLimit) -- stop when this number of basis elements is obtained
  • pushForward1(..., DegreeLimit => ...) -- compute only up to this degree
  • pushForward1(..., MonomialOrder => ...) -- specify the elimination order to use in pushForward1
  • pushForward1(..., PairLimit => ...) -- stop when this number of pairs is handled
  • pushForward1(..., StopBeforeComputation => ...) -- initialize but do not begin the computation
  • pushForward1(..., StopWithMinimalGenerators => ...) -- stop when minimal generators have been determined
  • pushForward1(..., Strategy => ...) -- specify which algorithm to use in the computation
  • pushForward1(..., UseHilbertFunction => ...) -- whether to use knowledge of the Hilbert function

  • [top][index]
    search for: