If M,N are S-modules annihilated by the elements of the matrix ff = (f1..fc), and k is the residue field of S, then the script exteriorTorModule(f,M) returns TorS(M, k) as a module over an exterior algebra k<e1,...,ec>, where the ei have degree 1, while exteriorTorModule(f,M,N) returns TorS(M,N) as a module over a bigraded ring SE = S<e1,..,ec>, where the ei have degrees di,1, where di is the degree of fi. The module structure, in either case, is defined by the homotopies for the fi on the resolution of M, computed by the script makeHomotopies1.
The scripts call makeModule to compute a (non-minimal) presentation of this module.
From the description by matrix factorizations and the paper *** of Eisenbud, Peeva and Schreyer it follows that when M is a high syzygy and F is its resolution, then the presentation of Tor(M,S1/mm) always has generators in degrees 0,1, corresponding to the targets and sources of the stack of maps B(i), and that the resolution is componentwise linear in a suitable sense. In the following example, these facts are verified. The Tor module does NOT split into the direct sum of the submodules generated in degrees 0 and 1, however.
i1 : kk = ZZ/101 o1 = kk o1 : QuotientRing |
i2 : S = kk[a,b,c] o2 = S o2 : PolynomialRing |
i3 : f = matrix"a4,b4,c4" o3 = | a4 b4 c4 | 1 3 o3 : Matrix S <--- S |
i4 : R = S/ideal f o4 = R o4 : QuotientRing |
i5 : p = map(R,S) o5 = map(R,S,{a, b, c}) o5 : RingMap R <--- S |
i6 : M = coker map(R^2, R^{3:-1}, {{a,b,c},{b,c,a}}) o6 = cokernel | a b c | | b c a | 2 o6 : R-module, quotient of R |
i7 : betti (FF =res( M, LengthLimit =>6)) 0 1 2 3 4 5 6 o7 = total: 2 3 4 6 9 13 18 0: 2 3 . . . . . 1: . . 1 . . . . 2: . . 3 3 . . . 3: . . . 3 3 . . 4: . . . . 3 3 . 5: . . . . 3 9 6 6: . . . . . . 3 7: . . . . . 1 9 o7 : BettiTally |
i8 : MS = prune pushForward(p, coker FF.dd_6); |
i9 : T = exteriorTorModule(f,MS); |
i10 : betti T 0 1 o10 = total: 84 252 0: 13 39 1: 33 99 2: 29 87 3: 9 27 o10 : BettiTally |
i11 : betti res (PT = prune T) 0 1 2 3 4 o11 = total: 31 55 87 127 175 0: 13 24 39 58 81 1: 18 31 48 69 94 o11 : BettiTally |
i12 : ann PT o12 = ideal(e e e ) 0 1 2 o12 : Ideal of kk[e , e , e ] 0 1 2 |
i13 : PT0 = image (inducedMap(PT,cover PT)* ((cover PT)_{0..12})); |
i14 : PT1 = image (inducedMap(PT,cover PT)* ((cover PT)_{13..30})); |
i15 : betti res prune PT0 0 1 2 3 4 o15 = total: 13 24 39 58 81 0: 13 24 39 58 81 o15 : BettiTally |
i16 : betti res prune PT1 0 1 2 3 4 o16 = total: 18 28 39 51 64 1: 18 28 39 51 64 o16 : BettiTally |
i17 : betti res prune PT 0 1 2 3 4 o17 = total: 31 55 87 127 175 0: 13 24 39 58 81 1: 18 31 48 69 94 o17 : BettiTally |