Let $C$ be a chain complex such that each term is a free module. Let $D$ be a chain complex which is exact at the $k$-th term for all $k > j$. Given a map of modules $f \colon C_i \to D_j$ such that the image of $f \circ \operatorname{dd}^C_{i+1}$ is contained in the image of $\operatorname{dd}^D_{j+1}$, this method constructs a morphism of chain complexes $g \colon C \to D$ of degree $j-i$ such that $g_i = f$.
$\phantom{WWWW} \begin{array}{cccccc} 0 & \!\!\leftarrow\!\! & C_{i} & \!\!\leftarrow\!\! & C_{i+1} & \!\!\leftarrow\!\! & C_{i+2} & \dotsb \\ & & \downarrow \, {\scriptstyle f} & & \downarrow \, {\scriptstyle g_{i+1}} && \downarrow \, {\scriptstyle g_{i+2}} \\ 0 & \!\!\leftarrow\!\! & D_{j} & \!\!\leftarrow\!\! & D_{j+1} & \!\!\leftarrow\!\! & D_{j+2} & \dotsb \\ \end{array} $
A map between modules extends to a map between their free resolutions.
i1 : S = ZZ/101[a..d]; |
i2 : I = ideal(a*b*c, b*c*d, a*d^2) 2 o2 = ideal (a*b*c, b*c*d, a*d ) o2 : Ideal of S |
i3 : C = S^{{-3}} ** freeResolution (I:a*c*d) 1 2 1 o3 = S <-- S <-- S 0 1 2 o3 : Complex |
i4 : D = freeResolution I 1 3 2 o4 = S <-- S <-- S 0 1 2 o4 : Complex |
i5 : f = map(D_0, C_0, matrix{{a*c*d}}) o5 = | acd | 1 1 o5 : Matrix S <--- S |
i6 : g = extend(D, C, f) 1 1 o6 = 0 : S <----------- S : 0 | acd | 3 2 1 : S <--------------- S : 1 {3} | 0 0 | {3} | a 0 | {3} | 0 c | 2 1 2 : S <------------- S : 2 {4} | 0 | {5} | 1 | o6 : ComplexMap |
i7 : assert isWellDefined g |
i8 : assert isComplexMorphism g |
i9 : assert(g_0 == f) |
i10 : E = cone g 1 4 4 1 o10 = S <-- S <-- S <-- S 0 1 2 3 o10 : Complex |
i11 : dd^E 1 4 o11 = 0 : S <----------------------- S : 1 | acd abc bcd ad2 | 4 4 1 : S <------------------------ S : 2 {3} | -b -d 0 0 | {3} | 0 0 -d 0 | {3} | a 0 a -ad | {3} | 0 c 0 bc | 4 1 2 : S <-------------- S : 3 {4} | d | {4} | -b | {4} | 0 | {5} | 1 | o11 : ComplexMap |
Extension of maps to complexes is also useful in constructing a free resolution of a linked ideal.
i12 : I = monomialCurveIdeal(S, {1,2,3}) 2 2 o12 = ideal (c - b*d, b*c - a*d, b - a*c) o12 : Ideal of S |
i13 : K = ideal(I_1^2, I_2^2) 2 2 2 2 4 2 2 2 o13 = ideal (b c - 2a*b*c*d + a d , b - 2a*b c + a c ) o13 : Ideal of S |
i14 : FI = freeResolution I 1 3 2 o14 = S <-- S <-- S 0 1 2 o14 : Complex |
i15 : FK = freeResolution K 1 2 1 o15 = S <-- S <-- S 0 1 2 o15 : Complex |
i16 : f = map(FI_0, FK_0, 1) o16 = | 1 | 1 1 o16 : Matrix S <--- S |
i17 : g = extend(FI, FK, f) 1 1 o17 = 0 : S <--------- S : 0 | 1 | 3 2 1 : S <--------------------- S : 1 {2} | b2-ac c2 | {2} | 0 -ad | {2} | 0 ac | 2 1 2 : S <---------------------------------- S : 2 {3} | -ab2c2+a2c3+ab3d-a2bcd | {3} | -ab3c+a2bc2+a2b2d-a3cd | o17 : ComplexMap |
i18 : assert isWellDefined g |
i19 : assert isComplexMorphism g |
i20 : assert(g_0 == f) |
i21 : C = cone (dual g)[- codim K] 1 4 4 1 o21 = S <-- S <-- S <-- S 0 1 2 3 o21 : Complex |
i22 : dd^C 1 4 o22 = 0 : S <----------------------------------------------------------------------------------------- S : 1 {-8} | -ab2c2+a2c3+ab3d-a2bcd -ab3c+a2bc2+a2b2d-a3cd b2c2-2abcd+a2d2 -b4+2ab2c-a2c2 | 4 4 1 : S <----------------------------------------- S : 2 {-3} | c -b a 0 | {-3} | -d c -b 0 | {-4} | b2-ac 0 0 b4-2ab2c+a2c2 | {-4} | c2 -ad ac b2c2-2abcd+a2d2 | 4 1 2 : S <------------------- S : 3 {-2} | -b2+ac | {-2} | -bc+ad | {-2} | -c2+bd | {0} | 1 | o22 : ComplexMap |
i23 : dd^(minimize C) 1 4 o23 = 0 : S <----------------------------------------------------------------------------------------- S : 1 {-8} | -ab2c2+a2c3+ab3d-a2bcd -ab3c+a2bc2+a2b2d-a3cd b2c2-2abcd+a2d2 -b4+2ab2c-a2c2 | 4 3 1 : S <------------------------- S : 2 {-3} | c -b a | {-3} | -d c -b | {-4} | b2-ac 0 0 | {-4} | c2 -ad ac | o23 : ComplexMap |
i24 : assert(ideal relations HH_0 C == K:I) |
Inspired by a yonedaMap computation, we extend a map of modules to a map between free resolutions having homological degree $-1$.
i25 : f = map(FK_0, FI_1, matrix {{a*c^2-a*b*d, -b*c^2+a*c*d, -c^3+a*d^2}}, Degree => 1) o25 = | ac2-abd -bc2+acd -c3+ad2 | 1 3 o25 : Matrix S <--- S |
i26 : assert isHomogeneous f |
i27 : assert isWellDefined f |
i28 : g = extend(FK, FI, f, (0,1)) 1 3 o28 = 0 : S <-------------------------------- S : 1 | ac2-abd -bc2+acd -c3+ad2 | 2 2 1 : S <--------------- S : 2 {4} | 0 0 | {4} | 1 0 | o28 : ComplexMap |
i29 : assert isWellDefined g |
i30 : assert isCommutative g |
i31 : assert(degree g === -1) |
i32 : assert isHomogeneous g |