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