# ExtModuleData -- Even and odd Ext modules and their regularity

## Synopsis

• Usage:
L = ExtModuleData M
• Inputs:
• M, , Module over a complete intersection S
• Outputs:
• L, a list, L = \{evenExtModule, oddExtModule, reg0, reg1\}

## 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.