Given an ideal in a polynomial ring, or a quotient of a polynomial ring whose base ring is either QQ or ZZ/p, this function computes the minimal associated primes of the ideal I. Geometrically, it decomposes the algebraic set defined by I.
i1 : R = ZZ/32003[a..e] o1 = R o1 : PolynomialRing |
i2 : I = ideal"a2b-c3,abd-c2e,ade-ce2" 2 3 2 2 o2 = ideal (a b - c , a*b*d - c e, a*d*e - c*e ) o2 : Ideal of R |
i3 : C = minprimes I; |
i4 : netList C +---------------------------+ o4 = |ideal (c, a) | +---------------------------+ | 2 3 | |ideal (e, d, a b - c ) | +---------------------------+ |ideal (e, c, b) | +---------------------------+ |ideal (d, c, b) | +---------------------------+ |ideal (d - e, b - c, a - c)| +---------------------------+ |ideal (d + e, b - c, a + c)| +---------------------------+ |
i5 : C2 = minprimes(I, Strategy=>"NoBirational", Verbosity=>2) 2 3 o5 = {ideal (c, a), ideal (e, d, a b - c ), ideal (e, c, b), ideal (d, c, b), ------------------------------------------------------------------------ ideal (d - e, b - c, a - c), ideal (d + e, b - c, a + c)} o5 : List |
i6 : C1 = minprimes(I, Strategy=>"Birational", Verbosity=>2) 2 3 o6 = {ideal (c, a), ideal (e, d, a b - c ), ideal (e, c, b), ideal (d, c, b), ------------------------------------------------------------------------ ideal (d - e, b - c, a - c), ideal (d + e, b - c, a + c)} o6 : List |
Example. The homogenized equations of the affine twisted cubic curve define the union of the projective twisted cubic curve and a line at infinity:
i7 : R = QQ[w,x,y,z]; |
i8 : I=ideal(x^2-y*w, x^3-z*w^2) 2 3 2 o8 = ideal (x - w*y, x - w z) o8 : Ideal of R |
i9 : minimalPrimes I 2 2 o9 = {ideal (x, w), ideal (y - x*z, x*y - w*z, x - w*y)} o9 : List |
Note that the ideal is decomposed over the given field of coefficients and not over the extension field where the decomposition into absolutely irreducible factors occurs:
i10 : I = ideal(x^2 + y^2) 2 2 o10 = ideal(x + y ) o10 : Ideal of R |
i11 : minimalPrimes I 2 2 o11 = {ideal(x + y )} o11 : List |
For monomial ideals, the method used is essentially what is shown in the example.
i12 : I = monomialIdeal ideal"wxy,xz,yz" o12 = monomialIdeal (w*x*y, x*z, y*z) o12 : MonomialIdeal of R |
i13 : minimalPrimes I o13 = {monomialIdeal (x, y), monomialIdeal (w, z), monomialIdeal (x, z), ----------------------------------------------------------------------- monomialIdeal (y, z)} o13 : List |
i14 : P = intersect(monomialIdeal(w,x,y), monomialIdeal(x,z), monomialIdeal(y,z)) o14 = monomialIdeal (x*y, w*z, x*z, y*z) o14 : MonomialIdeal of R |
i15 : minI = apply(P_*, monomialIdeal @@ support) o15 = {monomialIdeal (x, y), monomialIdeal (w, z), monomialIdeal (x, z), ----------------------------------------------------------------------- monomialIdeal (y, z)} o15 : List |
It is sometimes useful to compute P instead, where each generator encodes a single minimal prime. This can be obtained directly, as in the following code.
i16 : dual radical I o16 = monomialIdeal (x*y, w*z, x*z, y*z) o16 : MonomialIdeal of R |
i17 : P == oo o17 = true |
The object minimalPrimes is a method function with options.