The function reductionNumber takes a pair of ideals $I,J$, homogeneous or inhomogeneous (in the latter case $I$ and $J$ are to be regarded as ideals in the localization of the polynomial ring at the origin.). The ideal $J$ must be a reduction of $I$ (that is, $J\subset{} I$ and $I$ is integrally dependent on $J$. This condition is checked by the function isReduction. It returns the smallest integer $k$ such that $JI^k = I^{k+1}$.
For further information, see the book: Huneke, Craig; Swanson, Irena: Integral closure of ideals, rings, and modules, London Mathematical Society Lecture Note Series, 336. Cambridge University Press, Cambridge, 2006.
i1 : setRandomSeed() |
i2 : kk = ZZ/32003; |
i3 : S = kk[a..c]; |
i4 : m = ideal vars S; o4 : Ideal of S |
i5 : i = (ideal"a,b")*m+ideal"c3" 2 2 3 o5 = ideal (a , a*b, a*c, a*b, b , b*c, c ) o5 : Ideal of S |
i6 : analyticSpread i o6 = 3 |
i7 : j=minimalReduction i 3 2 2 o7 = ideal (1851c + 10356a - 4344a*b + 15816b + 11567a*c - 15394b*c, ------------------------------------------------------------------------ 3 2 2 3 11958c - 11142a + 6959a*b - 2765b - 15224a*c - 2094b*c, 8725c + ------------------------------------------------------------------------ 2 2 1278a + 4039a*b - 10543b - 7124a*c - 12085b*c) o7 : Ideal of S |
i8 : reductionNumber (i,j) o8 = 1 |
It is possible for the routine to not finish in reasonable time, due to the probabilistic nature of the routine. What happens is that the routine minimalReduction occasionally, but rarely, returns an ideal which is not a minimal reduction. In this case, the routine goes into an infinite loop. This will be addressed in a future version of the package. In the meantime, simply interrupt the routine, and restart the computation.
The object reductionNumber is a method function.