Given a ring R with canonical module ω, this computes the image of Fe* ω→ω for e >> 0. This image is sometimes called the HSLG-module. It roughly tells you where a ring is non-F-injective.
Specifically, this function returns a list of the following entries. HSLGmodule, canonicalModule, u, HSLCount where canonicalModule is the canonical module of the ring (expressed as an ideal), HSLGmodule is a submodule of that canonical module, u is an element of the ambient polynomial ring representing the trace of Frobenius on the canonical module and HSLCount is how many times the trace of Frobenius was computed before the image stabilized.
i1 : R = ZZ/7[x,y,z]/ideal(x^5+y^5+z^5); |
i2 : HSLList = HSLGModule(R); |
i3 : HSLList#1 --the ambient canonical module o3 = ideal 1 o3 : Ideal of R |
i4 : HSLList#0 --the HSLGsubmodule 3 2 2 2 2 3 2 2 3 o4 = ideal (0, z , y*z , x*z , y z, x*y*z, x z, y , x*y , x y, x ) o4 : Ideal of R |
i5 : HSLList#2 --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 : HSLList#3 --how many times it took until the image stabilized o6 = 2 |
If you don’t want the function to compute the canonicalModule, you can also pass it. This can be useful if you pass it something other than the canonical module as well (for example, a submodule of the canonical module).
Additionally, you can specify a pair (R, ft) as long as t is a rational number without p in its denominator.
i7 : R = ZZ/7[x,y]; |
i8 : HSLList = HSLGModule(5/6, y^2-x^3); |
i9 : HSLList#1 --the canonical module o9 = ideal 1 o9 : Ideal of R |
i10 : HSLList#0 o10 = ideal (0, 1) o10 : Ideal of R |
i11 : HSLList = HSLGModule(9/10, y^2-x^3); |
i12 : HSLList#0 o12 = ideal (0, y, x) o12 : Ideal of R |
Additionally, we can compute HSLG-modules of things like τ(R, fs gt) even when R is not regular.
i13 : R = ZZ/3[x,y,z]/ideal(x^2-y*z); |
i14 : f = y; |
i15 : g = z; |
i16 : HSLGModule({1/2, 1/2, 1/2}, {y,z,y+z}) 4 2 2 2 o16 = {ideal (0, z, y, x), ideal 1, {x + x y*z + y z }, 1} o16 : List |