Given complex maps with the same target, this method constructs the associated map from the direct sum of the sources to the target.
First, we define some non-trivial maps of chain complexes.
i1 : R = ZZ/101[a..d]; |
i2 : C1 = (freeResolution coker matrix{{a,b,c}})[1] 1 3 3 1 o2 = R <-- R <-- R <-- R -1 0 1 2 o2 : Complex |
i3 : C2 = freeResolution coker matrix{{a*b,a*c,b*c}} 1 3 2 o3 = R <-- R <-- R 0 1 2 o3 : Complex |
i4 : D = freeResolution coker matrix{{a^2,b^2,c*d}} 1 3 3 1 o4 = R <-- R <-- R <-- R 0 1 2 3 o4 : Complex |
i5 : f = randomComplexMap(D, C1) 1 o5 = -1 : 0 <----- R : -1 0 1 3 0 : R <------------------------------------------------------- R : 0 | 24a-36b-30c-29d 19a+19b-10c-29d -8a-22b-29c-24d | 3 3 1 : R <---------------------- R : 1 {2} | -38 21 -47 | {2} | -16 34 -39 | {2} | 39 19 -18 | 3 1 2 : R <----- R : 2 0 o5 : ComplexMap |
i6 : g = randomComplexMap(D, C2) 1 1 o6 = 0 : R <----------- R : 0 | -13 | 3 3 1 : R <---------------------- R : 1 {2} | -43 -47 16 | {2} | -15 38 22 | {2} | -28 2 45 | 3 2 2 : R <----- R : 2 0 o6 : ComplexMap |
i7 : h = f|g 1 4 o7 = 0 : R <----------------------------------------------------------- R : 0 | 24a-36b-30c-29d 19a+19b-10c-29d -8a-22b-29c-24d -13 | 3 6 1 : R <--------------------------------- R : 1 {2} | -38 21 -47 -43 -47 16 | {2} | -16 34 -39 -15 38 22 | {2} | 39 19 -18 -28 2 45 | o7 : ComplexMap |
i8 : assert isWellDefined h |
i9 : assert(source h === source f ++ source g) |
i10 : assert(target h === target f) |
This is really a shorthand for constructing complex maps via block matrices.
i11 : assert(h === map(D, C1 ++ C2, {{f,g}})) |