Let $d$ be the value of the optional argument Degree, or zero, if not given. For each $i$, the terms $D_{i+d}$ and $C_i$ must be subquotients of the same ambient free module. This method returns the complex map induced by the identity on each of these free modules.
If Verify => true is given, then this method also checks that these identity maps induced well-defined maps. This can be a relatively expensive computation.
We illustrate this method by truncating a free resolution at two distinct internal degrees. We check that the various induced maps compose to give another induced map.
i1 : kk = ZZ/32003 o1 = kk o1 : QuotientRing |
i2 : R = kk[a,b,c] o2 = R o2 : PolynomialRing |
i3 : F = freeResolution (ideal gens R)^2 1 6 8 3 o3 = R <-- R <-- R <-- R 0 1 2 3 o3 : Complex |
i4 : C1 = truncate(3, F) 8 3 o4 = image | c3 bc2 ac2 b2c abc a2c b3 ab2 a2b a3 | <-- image {2} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- R <-- R {2} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | 0 {2} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | 2 3 {2} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | 1 o4 : Complex |
i5 : C2 = truncate(4, F) 3 o5 = image | c4 bc3 ac3 b2c2 abc2 a2c2 b3c ab2c a2bc a3c b4 ab3 a2b2 a3b a4 | <-- image {2} | c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image {3} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- R {2} | 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 3 {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | 1 {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | 2 o5 : Complex |
i6 : assert isWellDefined C1 |
i7 : assert isWellDefined C2 |
i8 : f = inducedMap(C1, C2) o8 = 0 : image | c3 bc2 ac2 b2c abc a2c b3 ab2 a2b a3 | <----------------------------------------- image | c4 bc3 ac3 b2c2 abc2 a2c2 b3c ab2c a2bc a3c b4 ab3 a2b2 a3b a4 | : 0 {3} | c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c 0 0 0 b 0 0 0 0 | {3} | 0 0 0 0 0 0 0 c 0 0 0 b 0 0 0 | {3} | 0 0 0 0 0 0 0 0 c 0 0 0 b 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c 0 0 0 b a | 1 : image {2} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <----------------------------------------------------------------------------------- image {2} | c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | : 1 {2} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {3} | 0 c 0 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 c 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | {3} | 0 0 0 0 0 0 0 c 0 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 | {3} | 0 0 0 0 0 0 0 0 c 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 b a | 8 2 : R <----------------------------------------------------------- image {3} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | : 2 {3} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | 3 3 3 : R <----------------- R : 3 {4} | 1 0 0 | {4} | 0 1 0 | {4} | 0 0 1 | o8 : ComplexMap |
i9 : assert isWellDefined f |
i10 : f1 = inducedMap(F, C1) 1 o10 = 0 : R <-------------------------------------------- image | c3 bc2 ac2 b2c abc a2c b3 ab2 a2b a3 | : 0 | c3 bc2 ac2 b2c abc a2c b3 ab2 a2b a3 | 6 1 : R <----------------------------------------------- image {2} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | : 1 {2} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | 8 8 2 : R <--------------------------- R : 2 {3} | 1 0 0 0 0 0 0 0 | {3} | 0 1 0 0 0 0 0 0 | {3} | 0 0 1 0 0 0 0 0 | {3} | 0 0 0 1 0 0 0 0 | {3} | 0 0 0 0 1 0 0 0 | {3} | 0 0 0 0 0 1 0 0 | {3} | 0 0 0 0 0 0 1 0 | {3} | 0 0 0 0 0 0 0 1 | 3 3 3 : R <----------------- R : 3 {4} | 1 0 0 | {4} | 0 1 0 | {4} | 0 0 1 | o10 : ComplexMap |
i11 : f2 = inducedMap(F, C2) 1 o11 = 0 : R <---------------------------------------------------------------------- image | c4 bc3 ac3 b2c2 abc2 a2c2 b3c ab2c a2bc a3c b4 ab3 a2b2 a3b a4 | : 0 | c4 bc3 ac3 b2c2 abc2 a2c2 b3c ab2c a2bc a3c b4 ab3 a2b2 a3b a4 | 6 1 : R <----------------------------------------------------------------------------------------------------------------------- image {2} | c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | : 1 {2} | c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c2 bc ac b2 ab a2 | 8 2 : R <----------------------------------------------------------- image {3} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | : 2 {3} | c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c b a | 3 3 3 : R <----------------- R : 3 {4} | 1 0 0 | {4} | 0 1 0 | {4} | 0 0 1 | o11 : ComplexMap |
i12 : assert isWellDefined f1 |
i13 : assert isWellDefined f2 |
i14 : assert(f2 == f1 * f) |