Macaulay2 » Documentation
Packages » CompleteIntersectionResolutions :: ExtModuleData
next | previous | forward | backward | up | index | toc

ExtModuleData -- Even and odd Ext modules and their regularity

Synopsis

Description

Suppose that M is a module over a complete intersection R so that

E := ExtModule M

is a module generated in degrees >=0 over a polynomial ring T' generated in degree 2, and

E0 := evenExtModule M and E1 := oddExtModule M

are modules generated in degree >= 0 over a polynomial ring T with generators in degree 1.

The script returns

L = \{E0,E1, regularity E0, regularity E1\}

and prints a message if |reg0-reg1|>1.

If we set r = max(2*reg0, 1+2*reg1), and F is a resolution of M, then coker F.dd_{(r+1)} is the first szygy module of M such that regularity evenExtModule M =0 AND regularity oddExtModule M =0

We have been using regularity ExtModule M as a substitute for r, but that's not always the same.

The regularities of the even and odd Ext modules *can* differ by more than 1. An example can be produced with setRandomSeed 0 S = ZZ/101[a,b,c,d] ff =matrix"a4,b4,c4,d4" R = S/ideal ff N = coker random(R^{0,1}, R^{ -1,-2,-3,-4}) --gives reg Ext^even = 4, reg Ext^odd = 3 L = ExtModuleData N; but takes some time to compute.

i1 : setRandomSeed 100

o1 = 100
i2 : S = ZZ/101[a,b,c,d];
i3 : f = map(S^1, S^4, (i,j) -> S_j^3)

o3 = | a3 b3 c3 d3 |

             1      4
o3 : Matrix S  <-- S
i4 : R = S/ideal f;
i5 : M = R^1/ideal"ab2+cd2";
i6 : betti (F = res(M, LengthLimit => 5))

            0 1 2  3  4  5
o6 = total: 1 1 5 16 35 64
         0: 1 . .  .  .  .
         1: . . .  .  .  .
         2: . 1 .  .  .  .
         3: . . 1  .  .  .
         4: . . 3  8  5  .
         5: . . 1  8 25 32
         6: . . .  .  5 32

o6 : BettiTally
i7 : E = ExtModuleData M;
i8 : E_2

o8 = 2
i9 : E_3

o9 = 1
i10 : r = max(2*E_2,2*E_3+1)

o10 = 4
i11 : Er = ExtModuleData coker F.dd_r;
i12 : regularity Er_0

o12 = 0
i13 : regularity Er_1

o13 = 0
i14 : regularity evenExtModule(coker F.dd_(r-1))

o14 = 1
i15 : ff = f*random(source f, source f);

              1      4
o15 : Matrix S  <-- S
i16 : matrixFactorization(ff, coker F.dd_(r+1));

This succeeds, but we could get an error from

matrixFactorization(ff, coker F.dd_r)

if one of the CI operators were not surjective.

Caveat

ExtModule creates a ring inside the script, so if it's run twice you get modules over different rings. This should be changed.

See also

Ways to use ExtModuleData :

For the programmer

The object ExtModuleData is a method function.