# Revision history [back]

Hooray, there is SAGBI bases in Sage! Namely, Singular provides them. See singular manual

It is not totally staight forward to use it in Sage, because your base ring is a function field, and even though Singular itself can deal with it, lib_singular (which is used for many polynomial rings) cannot handle it, yet.

So, you could try it via the pexpect interface (see the Sage reference manual):

sage: R.<S0,S1,S2,S3,S4,S5> = QQ[]
sage: P.<X0,X1,X2, Y0,Y1,Y2> = Frac(R)[]
sage: I = P * [
X0  + Y0 - S0,
X0 *  X1  + Y0 *  Y1   -     S1,
X0* ( X1^2 + 2 * X2 )+ Y0* ( Y1^2 + 2* Y2 )-   2* S2,
X0* ( X1^3 + 6 * X2* X1 )+ Y0 *( Y1^3 + 6* Y2 *Y1 )  -   6 *S3,
X0* ( X1^4 + 12* X2* X1^2 + 12* X2^2 )+ Y0 *( Y1^4 + 12* Y2* Y1^2 + 12* Y2^2 )-  24* S4,
X0* ( X1^5 + 20* X2* X1^3 + 60* X2^2* X1 )  + Y0 *( Y1^5 + 20 *Y2* Y1^3 + 60* Y2^2 *Y1 )  - 120* S5]
sage: PI = singular(I)
sage: PI
X0+Y0+(-S0),
X0*X1+Y0*Y1+(-S1),
X0*X1^2+Y0*Y1^2+2*X0*X2+2*Y0*Y2+(-2*S2),
X0*X1^3+Y0*Y1^3+6*X0*X1*X2+6*Y0*Y1*Y2+(-6*S3),
X0*X1^4+Y0*Y1^4+12*X0*X1^2*X2+12*Y0*Y1^2*Y2+12*X0*X2^2+12*Y0*Y2^2+(-24*S4),
X0*X1^5+Y0*Y1^5+20*X0*X1^3*X2+20*Y0*Y1^3*Y2+60*X0*X1*X2^2+60*Y0*Y1*Y2^2+(-120*S5)
sage: singular.LIB("sagbi.lib")
sage: G = PI.sagbi()


However, it doesn't seem to be an easy problem - I give no guarantee that it will soon finish. Also, it seems that it can not be used with a degree bound; at least, the Singular manual does not mention it.