testModule -- find the parameter test module of a reduced ring

Synopsis

• Usage:
testModule()
testModule(R)
testModule(t, f)
testModule(tList, fList)
• Inputs:
• R, a ring,
• f, , the element in 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:
• AssumeDomain => , default value false, assumes the ring passed is an integral domain
• 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 three elements: the parameter test 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

Description

The function testModule computes the parameter test module of a ring $R$, returning a sequence with three elements: the parameter test submodule (as a submodule of the canonical module), the canonical module of which it is a subset, and the element (or elements) of the ambient polynomial ring that determines the Frobenius trace on the canonical module (see frobeniusTraceOnCanonicalModule).

 i1 : R = ZZ/7[x,y,z]/(x^3 + y^3 + z^3); i2 : testModule(R) 18 15 3 12 6 9 9 6 12 3 15 o2 = (ideal (z, y, x), ideal 1, x - x y + x y - x y + x y - x y + ------------------------------------------------------------------------ 18 15 3 12 3 3 9 6 3 6 9 3 3 12 3 15 3 12 6 y - x z + 2x y z - 3x y z - 3x y z + 2x y z - y z + x z - ------------------------------------------------------------------------ 9 3 6 6 6 6 3 9 6 12 6 9 9 6 3 9 3 6 9 9 9 3x y z - x y z - 3x y z + y z - x z - 3x y z - 3x y z - y z + ------------------------------------------------------------------------ 6 12 3 3 12 6 12 3 15 3 15 18 x z + 2x y z + y z - x z - y z + z ) o2 : Sequence

The canonical module returned is always embedded as an ideal of $R$, and not of the ambient polynomial ring. Likewise, the parameter test module is viewed as a subideal of that ideal of $R$.

Because the ring in the example above is a Gorenstein ring, the ambient canonical module is the unit ideal. In contrast, the ring in the next example is not Gorenstein.

 i3 : S = ZZ/3[x,y,u,v]; i4 : T = ZZ/3[a,b]; i5 : f = map(T, S, {a^3, a^2*b, a*b^2, b^3}); o5 : RingMap T <--- S i6 : R = S/(ker f); i7 : testModule(R) 5 4 2 2 2 3 2 2 4 2 5 3 o7 = (ideal (v, u), ideal (v, u), x*y*u v + y u v + x*y u v + x u v + y v ------------------------------------------------------------------------ 3 3 2 2 3 2 2 4 3 4 + x*y u*v + x y*u v + x y v + x u*v ) o7 : Sequence

Note that the output in this case has the parameter test module equal to the canonical module, as it should be, since the ring is $F$-rational. Let us now consider a non-Gorenstein example that is not $F$-rational.

 i8 : R = ZZ/5[x,y,z]/(y*z, x*z, x*y); i9 : (testMod, canMod, u) = testModule(R) 2 2 2 8 4 4 4 8 4 4 4 8 o9 = (ideal (z , y , x ), ideal (y + z, x + z), x y z + x y z + x y z ) o9 : Sequence i10 : testMod : canMod o10 = ideal (z, y, x) o10 : Ideal of R

This function can be used to compute parameter test ideals in Cohen-Macaulay rings, as an alternative to parameterTestIdeal.

 i11 : S = ZZ/2[X_1..X_5]; i12 : E = matrix {{X_1, X_2, X_2, X_5}, {X_4, X_4, X_3, X_1}}; 2 4 o12 : Matrix S <--- S i13 : R = S/minors(2, E); i14 : (testMod, canMod, u) = testModule(R); i15 : testMod : canMod o15 = ideal (X + X , X , X ) 3 4 2 1 o15 : Ideal of R i16 : parameterTestIdeal(R) o16 = ideal (X + X , X , X ) 3 4 2 1 o16 : Ideal of R

The function testModule can also be used to compute the parameter test module of a pair ($R, f^{ t}$), or ($R,f_1^{t_1}\cdots f_n^{t_n}$).

 i17 : R = ZZ/7[x,y]; i18 : f = y^2 - x^3; i19 : testModule(5/6, f) o19 = (ideal (y, x), ideal 1, 1) o19 : Sequence i20 : testModule(5/7, f) o20 = (ideal 1, ideal 1, 1) o20 : Sequence i21 : g = x^2 - y^3; i22 : testModule({1/2, 1/2}, {f, g}) o22 = (ideal (y, x), ideal 1, 1) o22 : Sequence

Sometimes it is convenient to specify the ambient canonical module, or the choice of element(s) that determines the Frobenius trace on the canonical module, across multiple calls of testModule. This can be done by using the options CanonicalIdeal and GeneratorList.

 i23 : R = ZZ/5[x,y,z]/(x*y, y*z, z*x); i24 : I = ideal(x - z, y - z); o24 : Ideal of R i25 : testModule(CanonicalIdeal => I) 2 2 2 8 4 4 4 8 4 4 4 8 o25 = (ideal (z , y , x ), ideal (y - z, x - z), x y z + x y z + x y z ) o25 : Sequence

Finally, the option FrobeniusRootStrategy is passed to any calls of frobeniusRoot, and the option AssumeDomain is used when computing a test element.

• testIdeal -- compute a test ideal in a Q-Gorenstein ring
• parameterTestIdeal -- compute the parameter test ideal of a Cohen-Macaulay ring
• FPureModule -- compute the submodule of the canonical module stable under the image of the trace of Frobenius

Ways to use testModule :

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

For the programmer

The object testModule is .