# Implementing different groebner_basis() algorithms

I'm not sure if this is the correct forum to ask this type of question, but I'll try anyway.

I am curious if there is a way to do the following in Sage. I would like a way to make a Groebner basis calculation to not worry about calculations involving polynomials of too high degree. Macaulay2's gb command has the ability to specify this with an option called HardDegreeLimit, for instance. The Sage documentation on groebner_basis seems to imply that I can use Macaulay2's gb command with this option, but I don't know how to make it work. Singular's std command also has a degBound option, but I again don't know how to use this in my Sage implementation.

edit retag close merge delete

Sort by » oldest newest most voted

With the current Groebner basis commands in Sage, there is not a good way to do this. None of the underlying methods like _groebner_basis_macaulay2 support a degree limit.

As a workaround, you can do something like the following:

sage: P.<a,b,c> = PolynomialRing(QQ,3, order='lex')
sage: I = sage.rings.ideal.Katsura(P,3)
sage: I.groebner_basis()  #compute the normal Groebner basis
[a - 60*c^3 + 158/7*c^2 + 8/7*c - 1, b + 30*c^3 - 79/7*c^2 + 3/7*c, c^4 - 10/21*c^3 + 1/84*c^2 + 1/84*c]
sage: singular.eval('degBound = 2;')  #set the degree bound in Singular
'degBound = 2;'
sage: gb = Sequence(map(P, singular(I).std())); gb
[10*b*c - b + 12*c^2 - 4*c, 4*b^2 + 2*b*c - b, a + 2*b + 2*c - 1]
sage: singular.eval('degBound = 0;')  #reset it back to 0 (unlimited)
'degBound = 0;'


more

I agree with your answer, but I think your example is misleading. The Singular manual states that "degBound should not be used for a global ordering with inhomogeneous input". I'm pretty sure that the output for a non-homogeneous ideal is potentially not the degree truncation of an actual GB.

( 2010-08-23 14:57:44 -0500 )edit

## Stats

Seen: 261 times

Last updated: Aug 23 '10