The resolution of a module over a hypersurface ring (graded or local) is always periodic of period at most 2 (Eisenbud, "Homological Algebra Over A Complete Intersection", Trans. Am. Math. Soc. 260 (1980) 35--64), but the asymptotic structure of minimal resolutions over a complete intersection is a topic of active research. This package contains code that helps analyze (graded) examples.
Most of our routines work with a polynomial ring S and a complete intersection R = S/(ideal ff), where
ff = matrix{{f1,…,fc}}
is a 1-rowed matrix whose entries are (sufficiently general) generators of a complete intersection ideal. (Unless the complete intersection is homogeneous and generated by elements of a single degree, it may not be possible to choose sufficiently general homogeneous elements, even when the ideal of the complete intersection is homogeneous.)The routines fall into several groups:
1) One group centers around the construction of the matrix factorizations for high syzygies of a module N, introduced in the paper "Matrix Factorizations in Higher Codimension" by Eisenbud and Peeva. The routine “mfBound” determines which syzygy to take. The routine matrixFactorization constructs the higher matrix factorization of a module over R defined by Eisenbud and Peeva in The ranks of the stack of matrices bp that are used in the construction of the matrix factorization, and the various matrices themselves, are obtained from the routines BRanks, ARanks, bMaps, dMaps, psiMaps, hMaps (the notation is explained in the paper).
i1 : setRandomSeed 0 o1 = 0 |
i2 : c = 2; |
i3 : S = ZZ/101[x_1..x_c, a_(1,1)..a_(c,c)]; |
i4 : X = matrix{{x_1..x_c}}; 1 2 o4 : Matrix S <--- S |
i5 : ff = X*map(source X, , genericMatrix(S,a_(1,1),c,c)); 1 2 o5 : Matrix S <--- S |
i6 : R = S/ideal ff; |
i7 : mbound = mfBound coker (R**X) o7 = 3 |
i8 : F = res(coker (R**X) , LengthLimit =>mbound); |
i9 : M = coker F.dd_(mbound); |
i10 : MF = matrixFactorization(ff,M) o10 = {{2} | a_(1,2) a_(1,1) a_(2,2) a_(2,1) |, {3} | x_2 -a_(1,1) 0 {2} | -x_1 x_2 0 0 | {3} | x_1 a_(1,2) 0 {2} | 0 0 -x_1 x_2 | {3} | 0 0 x_2 {3} | 0 0 x_1 ----------------------------------------------------------------------- -a_(2,1) 0 |} a_(2,2) 0 | -a_(1,1) -a_(2,1) | a_(1,2) a_(2,2) | o10 : List |
i11 : netList BRanks MF +-+-+ o11 = |2|2| +-+-+ |1|2| +-+-+ |
i12 : netList ARanks MF +-+-+ o12 = |2|2| +-+-+ |3|4| +-+-+ |
i13 : netList bMaps MF +-----------------------+ o13 = |{2} | a_(1,2) a_(1,1) || |{2} | -x_1 x_2 || +-----------------------+ |{2} | -x_1 x_2 | | +-----------------------+ |
i14 : netList dMaps MF +---------------------------------------+ o14 = |{2} | a_(1,2) a_(1,1) | | |{2} | -x_1 x_2 | | +---------------------------------------+ |{2} | a_(1,2) a_(1,1) a_(2,2) a_(2,1) || |{2} | -x_1 x_2 0 0 || |{2} | 0 0 -x_1 x_2 || +---------------------------------------+ |
i15 : netList psiMaps MF +-----------------------+ o15 = |{2} | a_(2,2) a_(2,1) || |{2} | 0 0 || +-----------------------+ |
i16 : netList hMaps MF +-----------------------------+ o16 = |{3} | x_2 -a_(1,1) | | |{3} | x_1 a_(1,2) | | +-----------------------------+ |{3} | 0 -a_(2,1) 0 || |{3} | 0 a_(2,2) 0 || |{3} | x_2 -a_(1,1) -a_(2,1) || |{3} | x_1 a_(1,2) a_(2,2) || +-----------------------------+ |
i17 : betti res M 0 1 2 3 4 5 6 7 o17 = total: 3 4 5 6 7 8 9 10 2: 3 4 5 6 7 8 9 10 o17 : BettiTally |
i18 : infiniteBettiNumbers(MF,7) o18 = {3, 4, 5, 6, 7, 8, 9, 10} o18 : List |
i19 : betti res pushForward(map(R,S),M) 0 1 2 o19 = total: 3 5 2 2: 3 4 . 3: . 1 2 o19 : BettiTally |
i20 : finiteBettiNumbers MF o20 = {3, 5, 2} o20 : List |
i21 : G = makeFiniteResolution (MF,ff) 3 5 2 o21 = S <-- S <-- S 0 1 2 o21 : ChainComplex |
i22 : G' = res(pushForward(map(R,S),M)) 3 5 2 o22 = S <-- S <-- S <-- 0 0 1 2 3 o22 : ChainComplex |
The group of routines ExtModule, evenExtModule, oddExtmodule, extModuleData (which call the routine Ext(M,N) of Avramov-Grayson) are useful for analyzing the module ExtR(M,k). TateResolution returns the betti table of a specified part of the Tate resolution of a maximal Cohen-Macaulay module M first calling the routine cosysyzy.
The routines moduleAsExt and hfModuleAsExt give partial converse constructions (following Avramov-Jorgenson)
The routines twoMonomials and sumTwoMonomials provide some interesting examples.
The routine makeT constructs CI operators on a resolution over a complete intersection, while the routine makeHomotopies constructs a set of higher homotopies on the resolution of a module M for a sequence of elements in the annihilator of M(makeHomotopies1 constructs just the ordinare “first” homotopies).
The routine exteriorTorModule constructs the module TorS(M,k) as a module over the exterior algebra ∧(kn).
The routine S2 takes a graded module M and returns the map
M -> ⊕-p∞ H0(sheaf M(p)).
In all examples I know (as of 4/14/2013), if M is a module over the complete intersection R and E is the stable Ext module “stable Ext(M,k)”, the natural map from E to the S2-ification of E is surjective (that is, the first local cohomology of a truncation of E is 0 in the range of the truncation.