# compareFPT -- determine whether a number is less than, greater than, or equal to the F-pure threshold

## Synopsis

• Usage:
compareFPT(t, f)
• Inputs:
• t, , a rational number to compare to the $F$-pure threshold
• f, , in a $\mathbb{Q}$-Gorenstein ring of positive characteristic $p$, whose index is not divisible by $p$
• Optional inputs:
• AssumeDomain => , default value true, indicates whether the ambient ring of f is an integral domain
• FrobeniusRootStrategy => , default value Substitution, passed to computations in the TestIdeals package
• AtOrigin => , default value false, tells the function whether to consider only the behavior at the origin
• MaxCartierIndex => an integer, default value 10, sets the maximum $\mathbb{Q}$-Gorenstein index to search for
• QGorensteinIndex => an integer, default value 0, specifies the $\mathbb{Q}$-Gorenstein index of the ring
• Verbose => , default value false, whether the output is to be verbose
• Outputs:
• an integer, namely -1, 1, or 0, according as t is less than, greater than, or equal to the $F$-pure threshold of f

## Description

Let $f$ be an element of a $\mathbb{Q}$-Gorenstein ring of positive characteristic $p$, whose index is not divisible by $p$. Given a rational number $t$, the command compareFPT(t, f) returns -1 if $t$ is less than the $F$-pure threshold of $f$, 1 if $t$ is greater than the $F$-pure threshold, or 0 if $t$ equals the $F$-pure threshold.

 i1 : R = ZZ/7[x,y]; i2 : f = x^3 - y^2; i3 : compareFPT(1/2, f) o3 = -1 i4 : compareFPT(5/6, f) o4 = 0 i5 : compareFPT(6/7, f) o5 = 1

As noted, this function can be used in a singular ring of characteristic $p>0$ that is strongly $F$-regular, as long as $p$ does not divide the $\mathbb{Q}$-Gorenstein index. For instance, in the following example, $x$ defines a Cartier divisor that is twice one of the rulings of the cone.

 i6 : R = ZZ/5[x,y,z]/(x*y - z^2); i7 : compareFPT(1/3, x) o7 = -1 i8 : compareFPT(1/2, x) o8 = 0 i9 : compareFPT(13/25, x) o9 = 1

Consider a Veronese subring (whose inclusion in the ambient polynomial ring is étale in codimension 1), so the $F$-pure threshold of the given polynomial (in this case 19/125) should be independent of which ring we are in.

 i10 : T = ZZ/5[a,b]; i11 : S = ZZ/5[x,y,z,w]; i12 : f = map(T, S, {a^3, a^2*b, a*b^2, b^3}); o12 : RingMap T <--- S i13 : R = S/ker f; i14 : g = x^7 - w^3; i15 : h = f(sub(g, S)) 21 9 o15 = a - b o15 : T i16 : compareFPT(19/125, g) o16 = 0 i17 : compareFPT(19/125, h) o17 = 0 i18 : compareFPT(19/124, g) o18 = 1 i19 : compareFPT(19/125 - 1/1000, g) o19 = -1

Setting the AtOrigin option to true (its default value is false) will tell the function to consider the $F$-pure threshold at the origin.

 i20 : R = ZZ/7[x,y]; i21 : f = (x + 1)^3 - (y + 3)^2; i22 : compareFPT(5/6, f) o22 = 0 i23 : compareFPT(5/6, f, AtOrigin => true) o23 = -1

If the ambient ring $R$ is not a domain, the option AssumeDomain should be set to false. We assume that the ring is a domain by default, in order to speed up the computation.

If the Gorenstein index of $R$ is known, the user should set the option QGorensteinIndex to this value. Otherwise, the function attempts to find the Gorenstein index of $R$, assuming it is between 1 and the value passed to the option MaxCartierIndex (default value 10).

The option FrobeniusRootStrategy is passed to internal calls of functions from the TestIdeals package. The two valid values for FrobeniusRootStrategy are Substitution and MonomialBasis.

Setting the option Verbose (default value false) to true produces verbose output.

• fpt -- attempt to compute the F-pure threshold of a polynomial at the origin or globally
• isFPT -- checks whether a given rational number is the F-pure threshold
• isFJumpingExponent -- whether a given number is an F-jumping exponent

## Ways to use compareFPT :

• "compareFPT(Number,RingElement)"

## For the programmer

The object compareFPT is .