Hi, up to now there was no command in Singular to
compute the gin. But according to the tutorial paper of Mark Green and Michael Stillman (from the book "Groebner bases and Applications", Cambridge University Press, 1998), it can be coded in Singular as follows:
Code:
LIB "random.lib";
LIB "poly.lib";
proc gin(ideal I)
{
matrix M = randommat(1,nvars(basering), maxideal(1), 1000); // the random coeffs will be in range [-1000,1000]
ideal m = ideal(M); map F = basering, m;
ideal J = F(I);
J = groebner(J);
J = normalize(lead(J));
return(J);
}
For instance, try the examples from the tutorial:
Code:
// for revlex gin:
ring r = 0,(a,b,c,d),dp;
ideal I = a^3+c^2*d, b^3-a*d^2;
gin(I);
Code:
// for lex gin:
ring r = 0,(a,b,c,d),lp;
ideal I = a^3+c^2*d, b^3-a*d^2;
gin(I); // be patient, it takes some time
This agrees with the answers, computed e.g. with Macaulay2.
Regards,
Viktor Levandovskyy