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

testIdeal -- computes the test ideal of f^t in a Q-Gorenstein ring

Synopsis

Description

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

i1 : R = ZZ/5[x,y,z]/ideal(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 normal Q-Gorenstein ring R, a rational number t ≥0 and a ring element f ∈R, we can also compute the test ideal τ(R, ft).

i8 : R = ZZ/5[x,y,z];
i9 : f = y^2 - x^3;
i10 : testIdeal(1/2, f)

o10 = ideal 1

o10 : Ideal of R
i11 : testIdeal(5/6, f)

o11 = ideal (y, x)

o11 : Ideal of R
i12 : testIdeal(4/5, f)

o12 = ideal (y, x)

o12 : Ideal of R
i13 : testIdeal(1, f)

             3    2
o13 = ideal(x  - y )

o13 : Ideal of R
i14 : R = ZZ/7[x,y,z];
i15 : f = y^2 - x^3;
i16 : testIdeal(1/2, f)

o16 = ideal 1

o16 : Ideal of R
i17 : testIdeal(5/6, f)

o17 = ideal (y, x)

o17 : Ideal of R
i18 : testIdeal(4/5, f)

o18 = ideal 1

o18 : Ideal of R
i19 : testIdeal(1, f)

             3    2
o19 = ideal(x  - y )

o19 : Ideal of R

It even works if the ambient ring is not a polynomial ring.

i20 : R = ZZ/11[x,y,z]/ideal(x^2-y*z);
i21 : f = y;
i22 : testIdeal(1/2, f)

o22 = ideal (y, x)

o22 : Ideal of R
i23 : testIdeal(1/3, f)

o23 = ideal 1

o23 : Ideal of R

Alternately, you can instead pass a list of rational numbers {t1, t2, ...} and a list of ring elements {f1, f2, ...}. In this case it will compute the test ideal τ(R, f1t1 f2t2 ...).

i24 : R = ZZ/7[x,y];
i25 : L = {x,y,(x+y)};
i26 : f = x*y*(x+y);
i27 : testIdeal({1/2,1/2,1/2}, L)

o27 = ideal 1

o27 : Ideal of R
i28 : testIdeal(1/2, f)

o28 = ideal 1

o28 : Ideal of R
i29 : testIdeal({2/3,2/3,2/3}, L)

o29 = ideal (y, x)

o29 : Ideal of R
i30 : testIdeal(2/3, f)

o30 = ideal (y, x)

o30 : Ideal of R
i31 : time testIdeal({3/4,2/3,3/5}, L)
     -- used 0.123662 seconds

o31 = ideal (y, x)

o31 : Ideal of R
i32 : time testIdeal(1/60, x^45*y^40*(x+y)^36)
     -- used 0.193807 seconds

o32 = ideal (y, x)

o32 : Ideal of R

As above, frequently passing a list will be faster (as opposed to finding a common denominator and passing a single element) since the testIdeal can do things in a more intelligent way for such a list.

Ways to use testIdeal :