If M is a graded module over a ring S, then the S2-ification of M is ∑d ∈ZZ H0((sheaf M)(d)), which may be computed as limd->∞ Hom(Id,M), where Id is any sequence of ideals contained in higher and higher powers of S+. There is a natural restriction map f: M = Hom(S,M) →Hom(Id,M). We compute all this using the ideals Id generated by the d-th powers of the variables in S.
Since the result may not be finitely generated (this happens if and only if M has an associated prime of dimension 1), we compute only up to a specified degree bound b. For the result to be correct down to degree b, it is sufficient to compute Hom(I,M) where I ⊂(S+)r-b.
i1 : kk=ZZ/101 o1 = kk o1 : QuotientRing |
i2 : S = kk[a,b,c,d] o2 = S o2 : PolynomialRing |
i3 : M = truncate(3,S^1) o3 = image | a3 a2b a2c a2d ab2 abc abd ac2 acd ad2 b3 b2c b2d bc2 bcd bd2 c3 c2d cd2 d3 | 1 o3 : S-module, submodule of S |
i4 : betti S2(0,M) 0 1 o4 = total: 1 20 0: 1 . 1: . . 2: . 20 o4 : BettiTally |
i5 : betti S2(1,M) 0 1 o5 = total: 1 20 0: 1 . 1: . . 2: . 20 o5 : BettiTally |
i6 : M = S^1/intersect(ideal"a,b,c", ideal"b,c,d",ideal"c,d,a",ideal"d,a,b") o6 = cokernel | cd bd ad bc ac ab | 1 o6 : S-module, quotient of S |
i7 : prune source S2(0,M) o7 = cokernel | cd bd ad bc ac ab | 1 o7 : S-module, quotient of S |
i8 : prune target S2(0,M) o8 = cokernel {-1} | d c b 0 0 0 0 0 0 0 0 0 | {-1} | 0 0 0 d c a 0 0 0 0 0 0 | {-1} | 0 0 0 0 0 0 d b a 0 0 0 | {-1} | 0 0 0 0 0 0 0 0 0 c b a | 4 o8 : S-module, quotient of S |
At one time DE hoped that, if M were a module over the complete intersection R with residue field k, then the natural map from "complete" Ext module "(widehat Ext)R(M,k)" to the the S2-ification of ExtR(M,k) would be surjective; equivalently, if N were a sufficiently negative syzygy of M, then the first local cohomology module of ExtR(M,k) would be zero. This is false, as shown by the following example:
i9 : needsPackage "CompleteIntersectionResolutions" o9 = CompleteIntersectionResolutions o9 : Package |
i10 : S = ZZ/101[x_0..x_2]; |
i11 : ff = apply(3, i->x_i^2); |
i12 : R = S/ideal ff; |
i13 : M = cokernel matrix {{x_0, x_1*x_2}}; |
i14 : b = 5; |
i15 : Mb = prune syzygyModule(-b,M); |
i16 : E = prune evenExtModule Mb; |
i17 : S2map = S2(0,E); o17 : Matrix |
i18 : SE = prune target S2map; |
i19 : extra = prune coker S2map; |
i20 : KE = prune ker S2map; |
i21 : betti res(Mb, LengthLimit => 10) 0 1 2 3 4 5 6 7 8 9 10 o21 = total: 20 14 9 5 2 1 2 4 7 11 16 -6: 20 14 9 5 2 . . . . . . -5: . . . . . 1 1 1 1 1 1 -4: . . . . . . 1 3 6 10 15 o21 : BettiTally |
i22 : apply (5, i-> hilbertFunction(i, KE)) o22 = {20, 9, 2, 0, 0} o22 : List |
i23 : apply (5, i-> hilbertFunction(i, E)) o23 = {20, 9, 2, 2, 7} o23 : List |
i24 : apply (5, i-> hilbertFunction(i, SE)) o24 = {1, 1, 1, 2, 7} o24 : List |
i25 : apply (5, i-> hilbertFunction(i, extra)) o25 = {1, 1, 1, 0, 0} o25 : List |
Text S2-ification is related to computing cohomology and to computing integral closure; there are scripts in those packages that produce an S2-ification, but one takes a ring as argument and the other doesn’t produce the comparison map.