Computes the parameter test module (as a submodule of the canonical module). The function returns three values, the parameter test submodule, the canonical module of which it is a subset, and the element u (or us) used to compute this ideal via the method frobeniusTraceOnCanonicalModule.
i1 : R = ZZ/7[x,y,z]/ideal(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 |
Note this is a Gorenstein ring and so the ambient canonical module is the unit ideal.
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. Let’s a non-Gorenstein example which is not F-rational.
i8 : R = ZZ/5[x,y,z]/ideal(y*z, x*z, x*y); |
i9 : paraTestMod = 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 : (paraTestMod#0) : (paraTestMod#1) o10 = ideal (z, y, x) o10 : Ideal of R |
This function can be used to compute parameter test ideals in Cohen-Macaulay rings
i11 : R=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 R <--- R |
i13 : I=minors(2,E); o13 : Ideal of R |
i14 : tau=testModule(R/I); |
i15 : substitute( (tau#0):(tau#1),R) o15 = ideal (X + X , X , X ) 3 4 2 1 o15 : Ideal of R |
This function can also be used to compute the parameter test module of a pair (R, ft).
i16 : R = ZZ/7[x,y]; |
i17 : f = y^2 - x^3; |
i18 : testModule(5/6, f) o18 = (ideal (y, x), ideal 1, 1) o18 : Sequence |
i19 : testModule(5/7, f) o19 = (ideal 1, ideal 1, 1) o19 : Sequence |
This can also be used to compute (R, fs gt).
i20 : R = ZZ/7[x,y]; |
i21 : f = y^2 - x^3; |
i22 : g = x^2 - y^3; |
i23 : testModule({1/2, 1/2}, {f, g}) o23 = (ideal (y, x), ideal 1, 1) o23 : Sequence |
Finally, sometimes you would like to specify the ambient canonical module (and choice of u) across multiple calls of testModule. Those are what the canIdeal or u1 can be used to specify.