minimalReduction takes an ideal I that is homogeneous or inhomogeneous (in the latter case the ideal is to be regarded as an ideal in the localization of the polynomial ring at the origin.). It returns an ideal J contained in I, with a minimal number of generators (= analyticSpread I), such that I is integrally dependent on J.
This routine is probabilistic: J is computed as the ideal generated by the right number of random linear combinations of the generators of I.
To say that I is integrally dependent on J means that JIk = Ik+1 for some non-negative integer k. The smallest k with this property is called the reduction number of I, and can be computed with reductionNumber i.
i1 : kk = ZZ/101; |
i2 : S = kk[a..c]; |
i3 : m = ideal vars S; o3 : Ideal of S |
i4 : i = (ideal"a,b")*m+ideal"c3" 2 2 3 o4 = ideal (a , a*b, a*c, a*b, b , b*c, c ) o4 : Ideal of S |
i5 : analyticSpread i o5 = 3 |
i6 : minimalReduction i Warning: minimal reduction is not necessarily homogeneous 3 2 2 3 2 o6 = ideal (50c + 42a - 41a*b - 15b + 39a*c - 22b*c, 2c + 45a + a*b + ------------------------------------------------------------------------ 2 3 2 2 19b - 39a*c - 38b*c, - 32c - 4a - 42a*b - 32b - 16a*c + 31b*c) o6 : Ideal of S |
i7 : f = gens i o7 = | a2 ab ac ab b2 bc c3 | 1 7 o7 : Matrix S <--- S |
i8 : for a from 0 to 3 do(jhom=ideal (f*random(source f, S^{3-a:-2,a:-3})); print(i^6 == (i^5)*jhom)) false false false false |