next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
TestIdeals :: testIdeal

testIdeal -- compute a test ideal in a Q-Gorenstein ring

Synopsis

Description

Given a normal -Gorenstein ring R, testIdeal(R) simply computes the test ideal τ(R).

i1 : R = ZZ/5[x,y,z]/(x^3 + y^3 + z^3);
i2 : testIdeal(R)

o2 = ideal (z, y, x)

o2 : Ideal of R
i3 : S = ZZ/5[x,y,z,w];
i4 : T = ZZ/5[a,b];
i5 : f = map(T, S, {a^3, a^2*b, a*b^2, b^3});

o5 : RingMap T <--- S
i6 : R = S/(ker f);
i7 : testIdeal(R)

o7 = ideal 1

o7 : Ideal of R

Given a nonnegative rational number t and an element f of a normal -Gorenstein ring R, testIdeal(t,f) computes the test ideal τ(R, f t).

i8 : R = ZZ/5[x,y,z];
i9 : f = y^2 - x^3;
i10 : apply({1/2, 4/5, 5/6, 1}, t -> testIdeal(t, f) )

                                                   3    2
o10 = {ideal 1, ideal (y, x), ideal (y, x), ideal(x  - y )}

o10 : List
i11 : R = ZZ/7[x,y,z];
i12 : f = y^2 - x^3;
i13 : apply({1/2, 4/5, 5/6, 1}, t -> testIdeal(t, f) )

                                              3    2
o13 = {ideal 1, ideal 1, ideal (y, x), ideal(x  - y )}

o13 : List

The ring R need not be a polynomial ring, as the next example illustrates.

i14 : R = ZZ/11[x,y,z]/(x^2 - y*z);
i15 : testIdeal(1/2, y)

o15 = ideal (y, x)

o15 : Ideal of R
i16 : testIdeal(1/3, y)

o16 = ideal 1

o16 : Ideal of R

Given nonnegative rational numbers t1, t2, ... and ring elements f1, f2, ..., testIdeal({t1,t2,...},{f1,f2,...}) computes the test ideal τ(R, f1t1 f2t2).

i17 : R = ZZ/7[x,y];
i18 : L = {x, y, x + y};
i19 : f = x*y*(x + y);
i20 : testIdeal({2/3, 2/3, 2/3}, L)

o20 = ideal (y, x)

o20 : Ideal of R
i21 : testIdeal(2/3, f)

o21 = ideal (y, x)

o21 : Ideal of R
i22 : testIdeal({3/4, 2/3, 3/5}, L)

o22 = ideal (y, x)

o22 : Ideal of R

It is often more efficient to pass a list, as opposed to finding a common denominator and passing a single element, since testIdeal can do things in a more intelligent way for such a list.

i23 : time testIdeal({3/4, 2/3, 3/5}, L)
     -- used 0.418664 seconds

o23 = ideal (y, x)

o23 : Ideal of R
i24 : time testIdeal(1/60, x^45*y^40*(x + y)^36)
     -- used 0.586073 seconds

o24 = ideal (y, x)

o24 : Ideal of R

The option AssumeDomain (default value false) is used when finding a test element. The option FrobeniusRootStrategy (default value Substitution) is passed to internal frobeniusRoot calls.

When working in a -Gorenstein ring R, testIdeal looks for a positive integer N such that N KR is Cartier. The option MaxCartierIndex (default value 10) controls the maximum value of N to consider in this search. If the smallest such N turns out to be greater than the value passed to MaxCartierIndex, then testIdeal returns an error.

The -Gorenstein index can be specified by the user through the option QGorensteinIndex; when this option is used, the search for N is bypassed, and the option MaxCartierIndex ignored.

See also

Ways to use testIdeal :