Given a normal $\mathbb{Q}$-Gorenstein ring $R$, the function isFRegular checks whether the ring is strongly $F$-regular. It can also prove that a non-$\mathbb{Q}$-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 AtOrigin determines if this is to be checked at the origin or everywhere. The default value for AtOrigin is false, which corresponds to checking $F$-regularity everywhere; setting AtOrigin => 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, AtOrigin => true) o13 = true |
i14 : S = ZZ/13[x,y,z]/(x^3 + y^3 + z^3); |
i15 : isFRegular(S) o15 = false |
i16 : isFRegular(S, AtOrigin => true) o16 = false |
Here is an example of AtOrigin 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, AtOrigin => true) o20 = true |
i21 : g = y^2 - x^3; |
i22 : isFRegular(5/6, g) o22 = false |
i23 : isFRegular(5/6, g, AtOrigin => 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 $\mathbb{Q}$-Gorenstein ring $R$, isFRegular looks for a positive integer $N$ such that $N K_R$ 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 $\mathbb{Q}$-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 $\mathbb{Q}$-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.0672969 seconds o27 = false |
i28 : time isFRegular(S/I, QGorensteinIndex => infinity, DepthOfSearch => 2) -- used 0.267444 seconds o28 = true |
i29 : debugLevel = 0; |
The object isFRegular is a method function with options.