The following returns two minimal generators (Serre's Theorem: a codim 2 Gorenstein ideal is a complete intersection.)
i1 : S = ZZ/101[a,b] o1 = S o1 : PolynomialRing |
i2 : i = ideal(a^4,b^4)
4 4
o2 = ideal (a , b )
o2 : Ideal of S
|
i3 : quotient(i, a^3+b^3)
3 3
o3 = ideal (a*b, a - b )
o3 : Ideal of S
|
Without trimming we would get 4 generators instead.
i4 : quotient(i, a^3+b^3, MinimalGenerators => false)
3 3
o4 = ideal (a*b, a - b )
o4 : Ideal of S
|
Sometimes the extra time to find the minimal generators is too large. This allows one to bypass this part of the computation.
i5 : needsPackage "Truncations" o5 = Truncations o5 : Package |
i6 : R = ZZ/101[x_0..x_4] o6 = R o6 : PolynomialRing |
i7 : I = truncate(8, monomialCurveIdeal(R,{1,4,5,9}));
o7 : Ideal of R
|
i8 : time gens gb I;
-- used 0.0455416 seconds
1 428
o8 : Matrix R <--- R
|
i9 : time J1 = saturate(I);
-- used 0.448459 seconds
o9 : Ideal of R
|
i10 : time J = saturate(I, MinimalGenerators => false);
-- used 0.000134482 seconds
o10 : Ideal of R
|
i11 : numgens J o11 = 7 |
i12 : numgens J1 o12 = 7 |
The object MinimalGenerators is a symbol.