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

isFRegular -- whether a ring or pair is strongly F-regular

Synopsis

Description

Given a normal -Gorenstein ring R, the function isFRegular checks whether the ring is strongly F-regular. It can also prove that a non--Gorenstein ring is F-regular (but cannot show it is not); see below for how to access this functionality.

i1 : R = ZZ/5[x,y,z]/(x^2 + y*z);
i2 : isFRegular(R)

o2 = true
i3 : R = ZZ/7[x,y,z]/(x^3 + y^3 + z^3);
i4 : isFRegular(R)

o4 = false

The function isFRegular can also test strong F-regularity of pairs.

i5 : R = ZZ/5[x,y];
i6 : f = y^2 - x^3;
i7 : isFRegular(1/2, f)

o7 = true
i8 : isFRegular(5/6, f)

o8 = false
i9 : isFRegular(4/5, f)

o9 = false
i10 : isFRegular(4/5 - 1/100000, f)

o10 = true

When checking whether a ring or pair is strongly F-regular, the option IsLocal determines if this is to be checked at the origin or everywhere. The default value for IsLocal is false, which corresponds to checking F-regularity everywhere; setting IsLocal => true, F-regularity is checked only at the origin.

i11 : R = ZZ/7[x,y,z]/((x - 1)^3 + (y + 1)^3 + z^3);
i12 : isFRegular(R)

o12 = false
i13 : isFRegular(R, IsLocal => true)

o13 = true
i14 : S = ZZ/13[x,y,z]/(x^3 + y^3 + z^3);
i15 : isFRegular(S)

o15 = false
i16 : isFRegular(S, IsLocal => true)

o16 = false

Here is an example of IsLocal behavior with a pair.

i17 : R = ZZ/13[x,y];
i18 : f = (y - 2)^2 - (x - 3)^3;
i19 : isFRegular(5/6, f)

o19 = false
i20 : isFRegular(5/6, f, IsLocal => true)

o20 = true
i21 : g = y^2 - x^3;
i22 : isFRegular(5/6, g)

o22 = false
i23 : isFRegular(5/6, g, IsLocal => true)

o23 = false

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, isFRegular 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.

The function isFRegular can show that rings that are not -Gorenstein are F-regular (it cannot, however, show that such a ring is not F-regular). To do this, set the option QGorensteinIndex => infinity. One may also use the option DepthOfSearch to increase the depth of search.

i24 : S = ZZ/7[x,y,z,u,v,w];
i25 : I = minors(2, matrix {{x, y, z}, {u, v, w}});

o25 : Ideal of S
i26 : debugLevel = 1;
i27 : time isFRegular(S/I, QGorensteinIndex => infinity, DepthOfSearch => 1)
isFRegular: This ring does not appear to be F-regular.  Increasing DepthOfSearch will let the function search more deeply.
     -- used 0.0582398 seconds

o27 = false
i28 : time isFRegular(S/I, QGorensteinIndex => infinity, DepthOfSearch => 2)
     -- used 0.348466 seconds

o28 = true
i29 : debugLevel = 0;

See also

Ways to use isFRegular :