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.
ExtModule creates a ring inside the script, so if it's run twice you get modules over different rings. This should be changed.
The object ExtModuleData is a method function.