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.