Let R = ring F = ring ff, and Rbar = R/(ideal ff). The complex F should admit a system of higher homotopies for the entry of ff, returned by the call makeHomotopies(ff,F).
The complex FF has terms
FF2*i = F0 ++ F2 ++ .. ++ Fi
FF2*i+1 = F1 ++ F3 ++..++F2*i+1
and maps made from the higher homotopies In the form Shamash(Rbar,F,len) the complex F is moved over to the ring Rbar.
i1 : S = ZZ/101[x,y,z] o1 = S o1 : PolynomialRing |
i2 : R = S/ideal"x3,y3" o2 = R o2 : QuotientRing |
i3 : M = R^1/ideal(x,y,z) o3 = cokernel | x y z | 1 o3 : R-module, quotient of R |
i4 : ff = matrix{{z^3}} o4 = | z3 | 1 1 o4 : Matrix R <--- R |
i5 : R1 = R/ideal ff o5 = R1 o5 : QuotientRing |
i6 : F = res M 1 3 5 7 9 o6 = R <-- R <-- R <-- R <-- R 0 1 2 3 4 o6 : ChainComplex |
i7 : betti F 0 1 2 3 4 o7 = total: 1 3 5 7 9 0: 1 3 3 1 . 1: . . 2 6 6 2: . . . . 3 o7 : BettiTally |
i8 : FF = Shamash(ff,F,4) / S \ / S \ / S \ / S \ / S \ | -------- | | -------- | | -------- | | -------- | | -------- | | 3 3 | | 3 3 | | 3 3 | | 3 3 | | 3 3 | | (x , y ) |1 | (x , y ) |3 | (x , y ) |6 | (x , y ) |10 | (x , y ) |15 o8 = |----------| <-- |----------| <-- |----------| <-- |----------| <-- |----------| | 3 | | 3 | | 3 | | 3 | | 3 | \ z / \ z / \ z / \ z / \ z / 0 1 2 3 4 o8 : ChainComplex |
i9 : GG = Shamash(R1,F,4) 1 3 6 10 15 o9 = R1 <-- R1 <-- R1 <-- R1 <-- R1 0 1 2 3 4 o9 : ChainComplex |
i10 : betti FF 0 1 2 3 4 o10 = total: 1 3 6 10 15 0: 1 3 3 1 . 1: . . 3 9 9 2: . . . . 6 o10 : BettiTally |
i11 : betti GG 0 1 2 3 4 o11 = total: 1 3 6 10 15 0: 1 3 3 1 . 1: . . 3 9 9 2: . . . . 6 o11 : BettiTally |
i12 : ring GG o12 = R1 o12 : QuotientRing |
i13 : apply(length GG, i->prune HH_i FF) o13 = {cokernel | z y x |, 0, 0, 0} o13 : List |
F is assumed to be a homological complex starting from F0. The matrix ff must be 1x1.