next | previous | forward | backward | up | index | toc

# minimalReduction -- Find a minimal reduction of an ideal

## Synopsis

• Usage:
J = minimalReduction I
• Inputs:
• Optional inputs:
• BasisElementLimit => ..., default value infinity, Bound the number of Groebner basis elements to compute in the saturation step
• DegreeLimit => ..., default value {}, Bound the degrees considered in the saturation step. Defaults to infinity
• MinimalGenerators => ..., default value true, Whether the saturation step returns minimal generators
• PairLimit => ..., default value infinity, Bound the number of s-pairs considered in the saturation step
• Strategy => ..., default value null, Choose a strategy for the saturation step
• Tries => ..., default value 20, Set the number of random tries to compute a minimal reduction
• Outputs:
• an ideal, A minimal reduction of I (defined below)

## Description

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 such that $I$ is integrally dependent on $J$. This minimal number is called the analyticSpread of $I$.

This routine is probabilistic: $J$ is computed as the ideal generated by the right number of random linear combinations of the generators of $I$. However, the routine checks rigorously that the output ideal is a reduction, and tries probabilistically again if it is not. If it cannot find a minimal reduction after a certain number of tries, it returns an error. The number of tries defaults to 20, but can be set with the optional argument Tries.

To say that $I$ is integrally dependent on $J$ means that $JI^k = I^{k+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.

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. for further information.

 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 3 2 2 3 2 o6 = ideal (- 10c + 24a + 36a*b + 19b - 30a*c + 19b*c, - 16c - 29a - ------------------------------------------------------------------------ 2 3 2 2 37a*b - 24b - 22a*c - 38b*c, - 18c + 39a + 40a*b - 47b + 34a*c - ------------------------------------------------------------------------ 39b*c) o6 : Ideal of S

Note that this is inhomogeneous-- it is generated by 3 random linear combinations of the generators of i. There is no homogeneous ideal with just 3 generators on which i is integrally dependent.

 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

## Caveat

It is possible that the ideal returned is not a minimal reduction, due to the probabilistic nature of the routine. This will be addressed in a future version of the package. The larger the size of the base field, the less likely this is to happen.

• analyticSpread -- Compute the analytic spread of a module or ideal
• reductionNumber -- Reduction number of one ideal with respect to another
• whichGm -- Largest Gm satisfied by an ideal

## Ways to use minimalReduction :

• minimalReduction(Ideal)

## For the programmer

The object minimalReduction is .