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.052888 seconds 1 428 o8 : Matrix R <--- R |
i9 : time J1 = saturate(I); -- used 0.475681 seconds o9 : Ideal of R |
i10 : time J = saturate(I, MinimalGenerators => false); -- used 0.000136558 seconds o10 : Ideal of R |
i11 : numgens J o11 = 7 |
i12 : numgens J1 o12 = 7 |
The object MinimalGenerators is a symbol.