As a first example, consider two Koszul complexes $C$ and $D$. From a random map $f : R^1 \to Hom(C, D)$, we construct the corresponding map of chain complexes $g : C \to D$.
i1 : R = ZZ/101[a,b,c] o1 = R o1 : PolynomialRing |
i2 : C = freeResolution ideal"a,b,c" 1 3 3 1 o2 = R <-- R <-- R <-- R 0 1 2 3 o2 : Complex |
i3 : D = freeResolution ideal"a2,b2,c2" 1 3 3 1 o3 = R <-- R <-- R <-- R 0 1 2 3 o3 : Complex |
i4 : H = Hom(C,D) 1 6 15 20 15 6 1 o4 = R <-- R <-- R <-- R <-- R <-- R <-- R -3 -2 -1 0 1 2 3 o4 : Complex |
i5 : f = randomComplexMap(H, complex R^{-2}) 20 1 o5 = 0 : R <----------------------------------------- R : 0 {0} | 24a2-36ab-29b2-30ac+19bc+19c2 | {1} | -10a-29b-8c | {1} | -22a-29b-24c | {1} | -38a-16b+39c | {1} | 21a+34b+19c | {1} | -47a-39b-18c | {1} | -13a-43b-15c | {1} | -28a-47b+38c | {1} | 2a+16b+22c | {1} | 45a-34b-48c | {2} | -47 | {2} | 47 | {2} | 19 | {2} | -16 | {2} | 7 | {2} | 15 | {2} | -23 | {2} | 39 | {2} | 43 | {3} | 0 | o5 : ComplexMap |
i6 : isWellDefined f o6 = true |
i7 : g = homomorphism f 1 1 o7 = 0 : R <------------------------------------- R : 0 | 24a2-36ab-29b2-30ac+19bc+19c2 | 3 3 1 : R <-------------------------------------------------- R : 1 {2} | -10a-29b-8c 21a+34b+19c -28a-47b+38c | {2} | -22a-29b-24c -47a-39b-18c 2a+16b+22c | {2} | -38a-16b+39c -13a-43b-15c 45a-34b-48c | 3 3 2 : R <----------------------- R : 2 {4} | -47 -16 -23 | {4} | 47 7 39 | {4} | 19 15 43 | 1 1 3 : R <----- R : 3 0 o7 : ComplexMap |
i8 : isWellDefined g o8 = true |
i9 : assert not isCommutative g |
The map $g : C \to D$ corresponding to a random map into $Hom(C,D)$ does not generally commute with the differentials. However, if the element of $Hom(C,D)$ is a cycle, then the corresponding map does commute.
i10 : f = randomComplexMap(H, complex R^{-2}, Cycle => true) 20 1 o10 = 0 : R <--------------------------- R : 0 {0} | -17a2-11b2+48c2 | {1} | -17a | {1} | -11a | {1} | 48a | {1} | -17b | {1} | -11b | {1} | 48b | {1} | -17c | {1} | -11c | {1} | 48c | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {2} | 0 | {3} | 0 | o10 : ComplexMap |
i11 : isWellDefined f o11 = true |
i12 : g = homomorphism f 1 1 o12 = 0 : R <----------------------- R : 0 | -17a2-11b2+48c2 | 3 3 1 : R <-------------------------- R : 1 {2} | -17a -17b -17c | {2} | -11a -11b -11c | {2} | 48a 48b 48c | 3 3 2 : R <----- R : 2 0 1 1 3 : R <----- R : 3 0 o12 : ComplexMap |
i13 : isWellDefined g o13 = true |
i14 : assert isCommutative g |
i15 : assert(degree g === 0) |
i16 : assert(source g === C) |
i17 : assert(target g === D) |
i18 : assert(homomorphism' g == f) |
A homomorphism of non-zero degree can be encoded in (at least) two ways.
i19 : f1 = randomComplexMap(H, complex R^1, Degree => -2) 6 1 o19 = -2 : R <------------------------------------------ R : 0 {-2} | 36a2+35ab-38b2+11ac+33bc+40c2 | {-2} | 11a2+46ab+b2-28ac-3bc+22c2 | {-2} | -47a2-23ab+2b2-7ac+29bc-47c2 | {-1} | 15a-37b-13c | {-1} | -10a+30b-18c | {-1} | 39a+27b-22c | o19 : ComplexMap |
i20 : f2 = map(target f1, (source f1)[2], i -> f1_(i+2)) 6 1 o20 = -2 : R <------------------------------------------ R : -2 {-2} | 36a2+35ab-38b2+11ac+33bc+40c2 | {-2} | 11a2+46ab+b2-28ac-3bc+22c2 | {-2} | -47a2-23ab+2b2-7ac+29bc-47c2 | {-1} | 15a-37b-13c | {-1} | -10a+30b-18c | {-1} | 39a+27b-22c | o20 : ComplexMap |
i21 : assert isWellDefined f2 |
i22 : g1 = homomorphism f1 1 o22 = -2 : 0 <----- R : 0 0 3 -1 : 0 <----- R : 1 0 1 3 0 : R <--------------------------------------------------------------------------------------------- R : 2 | 36a2+35ab-38b2+11ac+33bc+40c2 11a2+46ab+b2-28ac-3bc+22c2 -47a2-23ab+2b2-7ac+29bc-47c2 | 3 1 1 : R <------------------------ R : 3 {2} | 15a-37b-13c | {2} | -10a+30b-18c | {2} | 39a+27b-22c | o22 : ComplexMap |
i23 : g2 = homomorphism f2 1 o23 = -2 : 0 <----- R : 0 0 3 -1 : 0 <----- R : 1 0 1 3 0 : R <--------------------------------------------------------------------------------------------- R : 2 | 36a2+35ab-38b2+11ac+33bc+40c2 11a2+46ab+b2-28ac-3bc+22c2 -47a2-23ab+2b2-7ac+29bc-47c2 | 3 1 1 : R <------------------------ R : 3 {2} | 15a-37b-13c | {2} | -10a+30b-18c | {2} | 39a+27b-22c | o23 : ComplexMap |
i24 : assert(g1 == g2) |
i25 : assert isWellDefined g1 |
i26 : assert isWellDefined g2 |
i27 : homomorphism' g1 == f1 o27 = true |
i28 : homomorphism' g2 == f1 o28 = true |