# FPureModule -- compute the submodule of the canonical module stable under the image of the trace of Frobenius

## Synopsis

• Usage:
FPureModule()
FPureModule(R)
FPureModule(t, f)
FPureModule(tList, fList)
• Inputs:
• R, ,
• f, , to make a pair
• t, , the formal exponent to which f is raised
• fList, a list, consisting of ring elements f_1,\ldots,f_n, for a pair
• tList, a list, consisting of formal exponents t_1,\ldots,t_n for the elements of fList
• Optional inputs:
• FrobeniusRootStrategy => , default value Substitution, selects the strategy for internal frobeniusRoot calls
• CanonicalIdeal => an ideal, default value null, specifies the canonical ideal (so the function does not recompute it)
• CurrentRing => a ring, default value null, specifies the ring to work with
• GeneratorList => a list, default value null, specifies the element (or elements) of the ambient polynomial ring that determines the Frobenius trace on the canonical module
• Outputs:
• , consisting of four elements: the HSLG module of R, (R,f^t), or (R,f_1^{t_1}\ldots f_n^{t_n}), represented as a submodule of a canonical module; the canonical module of which it is a submodule (given as an ideal of R); the element (or elements) of the ambient polynomial ring that determines the Frobenius trace on the canonical module; the number of times the trace of Frobenius was computed before the image stabilized.

## Description

Given a ring $R$ with canonical module $\omega$, this function computes the image of $F^e_* \omega \to \omega$ for $e >> 0$. This image is sometimes called the HSLG module (named for Hartshorne-Speiser, Lyubeznik, and Gabber), and it roughly tells us where a ring is non-$F$-injective. It can also be used to compute the maximal $F$-pure sub-Cartier module of a given rank-1 Cartier module (represented as an ideal). The name of the function is based on this interpretation.

Specifically, this function returns a sequence (FPMod, canMod, frobTrace, count), where canMod is a canonical module of the ring (expressed as an ideal), FPMod is the HSLG module, given as a submodule of canMod, frobTrace is a list of elements of the ambient polynomial ring representing the trace of Frobenius on the canonical module, and count is the number of times the trace of Frobenius was computed before the image stabilized, sometimes called the HSLG number of the canonical module as a Cartier module.

 i1 : R = ZZ/7[x,y,z]/(x^5 + y^5 + z^5); i2 : (FPMod, canMod, frobTrace, count) = FPureModule(R); i3 : canMod --the ambient canonical module o3 = ideal 1 o3 : Ideal of R i4 : FPMod --the F-pure submodule of the canonical module 3 2 2 2 2 3 2 2 3 o4 = ideal (z , y*z , x*z , y z, x*y*z, x z, y , x*y , x y, x ) o4 : Ideal of R i5 : frobTrace --the element representing trace of Frobenius 30 25 5 20 10 15 15 10 20 5 25 30 25 5 20 5 5 o5 = {x - x y + x y - x y + x y - x y + y - x z + 2x y z ------------------------------------------------------------------------ 15 10 5 10 15 5 5 20 5 25 5 20 10 15 5 10 - 3x y z - 3x y z + 2x y z - y z + x z - 3x y z - ------------------------------------------------------------------------ 10 10 10 5 15 10 20 10 15 15 10 5 15 5 10 15 15 15 x y z - 3x y z + y z - x z - 3x y z - 3x y z - y z ------------------------------------------------------------------------ 10 20 5 5 20 10 20 5 25 5 25 30 + x z + 2x y z + y z - x z - y z + z } o5 : List i6 : count --how many times it took until the image stabilized o6 = 2

Sometimes it is convenient to specify the ambient canonical module across multiple calls of FPureModule. This can be done by using the option CanonicalIdeal. One can also pass it something other than the canonical module as well (for example, a submodule of the canonical module).

Likewise, one can use the GeneratorList option to specify the dual Frobenius action on the canonical module (or ideal playing the role of the canonical module).

In the following example, the non-$F$-pure ideal of a $\mathbb{Q}$-Gorenstein ring is computed by hijacking this functionality.

 i7 : T = ZZ/7[a,b]; i8 : S = ZZ/7[x,y,z,w]; i9 : f = map(T, S, {a^3, a^2*b, a*b^2, b^3}); o9 : RingMap T <--- S i10 : R = S/(ker f); i11 : J = ideal 1_R; o11 : Ideal of R i12 : u = QGorensteinGenerator(1, R); i13 : FPureModule(CanonicalIdeal => J, GeneratorList => {u}) 2 6 12 3 4 13 3 5 11 4 3 12 5 13 o13 = (ideal 1, ideal 1, {x y z + x y z + x y z w + x y z w + x y*z w ----------------------------------------------------------------------- 12 6 2 3 6 9 2 4 4 10 2 5 2 11 2 6 12 2 13 4 3 + y z w + x y z w + x y z w + x y z w + x z w + y z w + ----------------------------------------------------------------------- 11 5 3 2 9 6 3 4 5 8 3 5 3 9 3 6 10 3 12 3 4 x*y z w + x y z w + x y z w + x y z w + x y*z w + x*y z w + ----------------------------------------------------------------------- 2 10 4 4 3 8 5 4 4 6 6 4 5 4 7 4 6 2 8 4 7 9 4 x y z w + x y z w + x y z w + x y z w + x y z w + x z w + ----------------------------------------------------------------------- 13 5 2 11 2 5 3 9 3 5 4 7 4 5 5 5 5 5 6 3 6 5 x*y z*w + x y z w + x y z w + x y z w + x y z w + x y z w + ----------------------------------------------------------------------- 7 7 5 2 12 6 3 10 6 4 8 2 6 5 6 3 6 6 4 4 6 x y*z w + x y w + x y z*w + x y z w + x y z w + x y z w + ----------------------------------------------------------------------- 7 2 5 6 8 6 6 4 9 7 5 7 7 6 5 2 7 7 3 3 7 8 4 7 x y z w + x z w + x y w + x y z*w + x y z w + x y z w + x y*z w ----------------------------------------------------------------------- 6 6 8 7 4 8 8 2 2 8 9 3 8 8 3 9 9 9 10 10 + x y w + x y z*w + x y z w + x z w + x y w + x y*z*w + x w }, ----------------------------------------------------------------------- 0) o13 : Sequence

Additionally, one can specify a pair ($R$, $f^{ t}$), as long as $t$ is a rational number with a denominator prime to the characteristic of the ring.

 i14 : R = ZZ/7[x,y]; i15 : M = FPureModule(5/6, y^2 - x^3); i16 : M#1 -- the canonical module o16 = ideal 1 o16 : Ideal of R i17 : M#0 -- the F-pure submodule o17 = ideal 1 o17 : Ideal of R i18 : N = FPureModule(9/10, y^2 - x^3); i19 : N#0 -- the F-pure submodule o19 = ideal (y, x) o19 : Ideal of R

Finally, one can specify a pair ($R$, $f_1^{t_1}\cdots f_n^{t_n}$), even when $R$ is not regular (although $R$ is required to be $\mathbb{Q}$-Gorenstein, with index not divisible by the characteristic).

 i20 : R = ZZ/3[x,y,z]/(x^2 - y*z); i21 : f = y; i22 : g = z; i23 : FPureModule({1/2, 1/2, 1/2}, {y, z, y + z}) 4 2 2 2 o23 = (ideal (z, y, x), ideal 1, {x + x y*z + y z }, 1) o23 : Sequence

The option FrobeniusRootStrategy is passed to internal frobeniusRoot calls.

• testModule -- find the parameter test module of a reduced ring
• isFInjective -- whether a ring is F-injective
• descendIdeal -- finds the maximal F-pure Cartier submodule of an ideal viewed as a Cartier module

## Ways to use FPureModule :

• "FPureModule(List,List)"
• "FPureModule(Number,RingElement)"
• "FPureModule(Ring)"
• FPureModule() (missing documentation)

## For the programmer

The object FPureModule is .