next | previous | forward | backward | up | top | index | toc | Macaulay2 website
MinimalPrimes > radical > radicalContainment

radicalContainment -- whether an element is contained in the radical of an ideal

Synopsis

Description

This method determines if a given element g is contained in the radical of a given ideal I. There are 2 algorithms implemented for doing so: the first (default) uses the Rabinowitsch trick in the proof of the Nullstellensatz, and is called with Strategy => "Rabinowitsch". The second algorithm, for homogeneous ideals, uses a theorem of Kollar to obtain an effective upper bound on the required power to check containment, together with repeated squaring, and is called with Strategy => "Kollar". The latter algorithm is generally quite fast if a Grobner basis of I has already been computed. A recommended way to do so is to check ordinary containment, i.e. g % I == 0, before calling this function.

i1 : d = (4,5,6,7)

o1 = (4, 5, 6, 7)

o1 : Sequence
i2 : n = #d

o2 = 4
i3 : R = QQ[x_0..x_n]

o3 = R

o3 : PolynomialRing
i4 : I = ideal homogenize(matrix{{x_1^(d#0)} | apply(toList(1..n-2), i -> x_i - x_(i+1)^(d#i)) | {x_(n-1) - x_0^(d#-1)}}, x_n)

             4     5      4     6      5     7      6
o4 = ideal (x , - x  + x x , - x  + x x , - x  + x x )
             1     2    1 4     3    2 4     0    3 4

o4 : Ideal of R
i5 : D = product(I_*/degree/sum)

o5 = 840
i6 : x_0^(D-1) % I != 0 and x_0^D % I == 0

o6 = true
i7 : elapsedTime radicalContainment(x_0, I)
 -- 0.108506 seconds elapsed

o7 = true
i8 : elapsedTime radicalContainment(x_0, I, Strategy => "Kollar")
 -- 0.00172681 seconds elapsed

o8 = true
i9 : elapsedTime radicalContainment(x_n, I, Strategy => "Kollar")
 -- 0.00138118 seconds elapsed

o9 = false

See also

Ways to use radicalContainment :

For the programmer

The object radicalContainment is a method function with options.