A random complex map $f : C \to D$ is obtained from a random element in the complex $Hom(C,D)$.
i1 : S = ZZ/101[a..c] o1 = S o1 : PolynomialRing |
i2 : C = freeResolution coker matrix{{a*b, a*c, b*c}} 1 3 2 o2 = S <-- S <-- S 0 1 2 o2 : Complex |
i3 : D = freeResolution coker vars S 1 3 3 1 o3 = S <-- S <-- S <-- S 0 1 2 3 o3 : Complex |
i4 : f = randomComplexMap(D,C) 1 1 o4 = 0 : S <---------- S : 0 | 24 | 3 3 1 : S <-------------------------------------------------- S : 1 {1} | -36a-30b-29c -29a-24b-38c -39a-18b-13c | {1} | 19a+19b-10c -16a+39b+21c -43a-15b-28c | {1} | -29a-8b-22c 34a+19b-47c -47a+38b+2c | 3 2 2 : S <------------------------------------- S : 2 {2} | 16a+22b+45c 7a+15b-23c | {2} | -34a-48b-47c 39a+43b-17c | {2} | 47a+19b-16c -11a+48b+36c | o4 : ComplexMap |
i5 : assert isWellDefined f |
i6 : assert not isCommutative f |
i7 : assert not isNullHomotopic f |
When the random element in the complex $Hom(C,D)$ lies in the kernel of the differential, the associated map of complexes commutes with the differential.
i8 : g = randomComplexMap(D,C, Cycle => true) 1 1 o8 = 0 : S <----------- S : 0 | -50 | 3 3 1 : S <------------------------------------- S : 1 {1} | 40b-35c -46b+18c 28b+3c | {1} | 11a-11c 46a+22c -28a-37c | {1} | 35a+11b 33a-22b -3a-13b | 3 2 2 : S <------------------------------------- S : 2 {2} | 46b-49c -28a-46b+17c | {2} | -30b-35c -3a+b | {2} | -38a-22b-11c -47a+22b | o8 : ComplexMap |
i9 : assert isWellDefined g |
i10 : assert isCommutative g |
i11 : assert isComplexMorphism g |
i12 : assert not isNullHomotopic g |
When the random element in the complex $Hom(C,D)$ lies in the image of the differential, the associated map of complexes is a null homotopy.
i13 : h = randomComplexMap(D,C, Boundary => true) 1 1 o13 = 0 : S <----- S : 0 0 3 3 1 : S <------------------------------------- S : 1 {1} | 23b+7c -29b+47c 37b+13c | {1} | -23a-2c 29a-15c -37a+10c | {1} | -7a+2b -47a+15b -13a-10b | 3 2 2 : S <----------------------------------- S : 2 {2} | 29b-48c -37a-29b-18c | {2} | 24b+7c -13a-36b | {2} | 30a+15b-2c -28a-15b | o13 : ComplexMap |
i14 : assert isWellDefined h |
i15 : assert isCommutative h |
i16 : assert isComplexMorphism h |
i17 : assert isNullHomotopic h |
i18 : nullHomotopy h 3 1 o18 = 1 : S <----- S : 0 0 3 3 2 : S <----------------------- S : 1 {2} | -23 29 -37 | {2} | -7 -47 -13 | {2} | 2 15 -10 | 1 2 3 : S <------------------ S : 2 {3} | 30 -18 | o18 : ComplexMap |
When the degree of the random element in the complex $Hom(C,D)$ is non-zero, the associated map of complexes has the same degree.
i19 : p = randomComplexMap(D, C, Cycle => true, Degree => -1) 1 o19 = -1 : 0 <----- S : 0 0 1 3 0 : S <----------------------------------------------------------------------------------------------- S : 1 | 19a2-30ab+36b2+40ac+4bc-32c2 36a2+42ab-33b2+13ac-30bc+9c2 20a2+12ab-44b2-13ac-16bc+26c2 | 3 2 1 : S <----------------------------------------------------------------------- S : 2 {1} | -10ab-31b2-20ac+31bc-39c2 -20a2+24ab-48b2-30ac-15bc+39c2 | {1} | -26a2-11ab+33b2+34bc+4c2 33ab-33b2-49ac-19bc+17c2 | {1} | 39a2+27ab+32b2-22ac-9bc-32c2 43a2-8ab-11b2+36ac-8bc | o19 : ComplexMap |
i20 : assert isWellDefined p |
i21 : assert isCommutative p |
i22 : assert not isComplexMorphism p |
i23 : assert(degree p === -1) |
By default, the random element is constructed as a random linear combination of the basis elements in the appropriate degree of $Hom(C,D)$. Given an internal degree, the random element is constructed as maps of modules with this degree.
i24 : q = randomComplexMap(D, C, Boundary => true, InternalDegree => 2) 1 1 o24 = 0 : S <----------------------------------- S : 0 | -3a2+19ab+16b2-36ac+7bc-9c2 | 3 3 1 : S <--------------------------------------------------------------------------------------------------------------------------------------------------------------------- S : 1 {1} | 32a2b-22ab2-40b3-25a2c-36abc-3b2c+2ac2-29bc2+49c3 47a2b-27ab2-37b3+36a2c+49abc-37b2c+18ac2-22bc2-30c3 -28a2b+18ab2-b3-10a2c+45abc+26b2c-30ac2+9bc2+13c3 | {1} | -35a3+41a2b-45ab2+6a2c-25abc+13b2c-31ac2-4bc2-30c3 -47a3+27a2b+37ab2+a2c-19abc+37b2c+42ac2-47bc2+49c3 28a3-18a2b+ab2+43a2c+21abc+8b2c-30ac2+bc2-30c3 | {1} | 25a3-6a2b+35ab2-13b3-2a2c-50abc+4b2c-49ac2+30bc2 -39a3-31a2b-29ab2-37b3+47a2c-13abc+47b2c+21ac2-49bc2 10a3+10a2b-28ab2+8b3+30a2c-15abc+6b2c-13ac2+21bc2 | 3 2 2 : S <------------------------------------------------------------------------------------------------------------------------------ S : 2 {2} | -47a2b+27ab2+37b3-11a2c+9abc-33b2c-24ac2-11bc2+3c3 28a3+29a2b-26ab2-37b3+46a2c-21abc+50b2c-22ac2+49bc2-16c3 | {2} | 7a2b+21ab2+30b3-25a2c-30abc+30b2c+2ac2-2bc2+49c3 10a3+46a2b+44ab2+14b3+30a2c+31abc+30b2c-13ac2-14bc2 | {2} | -46a3+49a2b+42ab2-37b3-18a2c+23abc-41b2c-28ac2+48bc2-30c3 3a3-41a2b+23ab2+37b3+8a2c-11abc-47b2c+14ac2+49bc2 | o24 : ComplexMap |
i25 : assert all({0,1,2}, i -> degree q_i === {2}) |
i26 : assert isHomogeneous q |
i27 : assert isWellDefined q |
i28 : assert isCommutative q |
i29 : assert isComplexMorphism q |
i30 : source q === C o30 = true |
i31 : target q === D o31 = true |
i32 : assert isNullHomotopic q |