This function truncates the source and target of $f$, and returns the induced map between them.
i1 : R = ZZ/101[a..d, Degrees=>{{1,3},{1,0},{1,3},{1,2}}] o1 = R o1 : PolynomialRing |
i2 : C = res coker vars R 1 4 6 4 1 o2 = R <-- R <-- R <-- R <-- R <-- 0 0 1 2 3 4 5 o2 : ChainComplex |
i3 : g1 = truncate({1,1},C.dd_1) o3 = {1, 2} | 0 b 0 0 0 1 | {1, 3} | 0 0 b 0 1 0 | {1, 3} | 1 0 0 b 0 0 | o3 : Matrix |
i4 : g2 = truncate({1,1},C.dd_2) o4 = {1, 3} | -b -c 0 -d 0 0 | {2, 2} | 0 0 0 0 -1 0 | {2, 3} | 0 0 -1 0 0 0 | {2, 3} | 1 0 0 0 0 0 | {1, 3} | 0 a b 0 0 -d | {1, 2} | 0 0 0 a b c | o4 : Matrix |
i5 : g3 = truncate({1,1},C.dd_3) o5 = {2, 3} | c d 0 0 | {2, 6} | -b 0 d 0 | {2, 3} | a 0 0 d | {2, 5} | 0 -b -c 0 | {2, 2} | 0 a 0 -c | {2, 5} | 0 0 a b | o5 : Matrix |
i6 : g4 = truncate({1,1},C.dd_4) o6 = {3, 6} | -d | {3, 5} | c | {3, 8} | -b | {3, 5} | a | o6 : Matrix |
i7 : assert(g1 * g2 == 0) |
i8 : assert(g2 * g3 == 0) |
i9 : assert(g3 * g4 == 0) |
This functor is exact.
i10 : assert(ker g1 == image g2) |
i11 : assert(ker g2 == image g3) |
i12 : assert(ker g3 == image g4) |