next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
TestIdeals :: testModule

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

Synopsis

Description

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.

Ways to use testModule :