Given a short exact sequence of modules
$\phantom{WWWW} 0 \leftarrow N \xleftarrow{g} M \xleftarrow{f} L \leftarrow 0, $
the horsehoe lemma produces simultaneous free resolutions of $N$, $M$ and $L$, which form a short exact sequence of complexes. This method returns these two chain complex maps.
We illustrate this method by constructing simultaneous free resolutions of three monomial ideals.
i1 : S = ZZ/101[a,b,c]; |
i2 : I = ideal(a^3, b^3, c^3) 3 3 3 o2 = ideal (a , b , c ) o2 : Ideal of S |
i3 : J = I + ideal(a*b*c) 3 3 3 o3 = ideal (a , b , c , a*b*c) o3 : Ideal of S |
i4 : K = I : ideal(a*b*c) 2 2 2 o4 = ideal (c , b , a ) o4 : Ideal of S |
i5 : C = complex{ map(comodule J, comodule I, 1), map(comodule I, (comodule K) ** S^{-3}, {{a*b*c}}) } o5 = cokernel | a3 b3 c3 abc | <-- cokernel | a3 b3 c3 | <-- cokernel {3} | c2 b2 a2 | 0 1 2 o5 : Complex |
i6 : assert isShortExactSequence C |
i7 : (beta, alpha) = horseshoeResolution C 1 2 2 o7 = (0 : S <----------- S : 0 , 0 : S | 0 1 | 4 7 1 : S <------------------------- S : 1 7 {3} | 0 0 0 1 0 0 0 | 1 : S {3} | 0 0 0 0 1 0 0 | {3} | 0 0 0 0 0 1 0 | {3} | 0 0 0 0 0 0 1 | 6 9 2 : S <----------------------------- S : 2 {5} | 0 0 0 1 0 0 0 0 0 | {5} | 0 0 0 0 1 0 0 0 0 | {5} | 0 0 0 0 0 1 0 0 0 | 9 {6} | 0 0 0 0 0 0 1 0 0 | 2 : S {6} | 0 0 0 0 0 0 0 1 0 | {6} | 0 0 0 0 0 0 0 0 1 | 3 4 3 : S <------------------- S : 3 {7} | 0 1 0 0 | {7} | 0 0 1 0 | {7} | 0 0 0 1 | 4 3 : S ------------------------------------------------------------------------ 1 <------------- S : 0 ) {3} | 1 | {0} | 0 | 3 <----------------- S : 1 {5} | 1 0 0 | {5} | 0 1 0 | {5} | 0 0 1 | {3} | 0 0 0 | {3} | 0 0 0 | {3} | 0 0 0 | {3} | 0 0 0 | 3 <----------------- S : 2 {7} | 1 0 0 | {7} | 0 1 0 | {7} | 0 0 1 | {5} | 0 0 0 | {5} | 0 0 0 | {5} | 0 0 0 | {6} | 0 0 0 | {6} | 0 0 0 | {6} | 0 0 0 | 1 <------------- S : 3 {9} | 1 | {7} | 0 | {7} | 0 | {7} | 0 | o7 : Sequence |
i8 : assert isShortExactSequence(beta, alpha) |
i9 : assert(prune HH source alpha == complex C_2) |
i10 : assert(prune HH target alpha == complex C_1) |
i11 : assert(prune HH target beta == complex C_0) |
i12 : assert isFree target alpha |
The constructed resolution of the middle term $C_1$ is almost never minimal.
i13 : target alpha 2 7 9 4 o13 = S <-- S <-- S <-- S 0 1 2 3 o13 : Complex |
i14 : freeResolution C_1 1 3 3 1 o14 = S <-- S <-- S <-- S 0 1 2 3 o14 : Complex |
i15 : minimize target alpha 1 3 3 1 o15 = S <-- S <-- S <-- S 0 1 2 3 o15 : Complex |
The optional argument LengthLimit allows one to truncate the constructed free resolutions.
i16 : (beta, alpha) = horseshoeResolution(C, LengthLimit => 2) 1 2 2 o16 = (0 : S <----------- S : 0 , 0 : S | 0 1 | 4 7 1 : S <------------------------- S : 1 7 {3} | 0 0 0 1 0 0 0 | 1 : S {3} | 0 0 0 0 1 0 0 | {3} | 0 0 0 0 0 1 0 | {3} | 0 0 0 0 0 0 1 | 6 9 2 : S <----------------------------- S : 2 {5} | 0 0 0 1 0 0 0 0 0 | {5} | 0 0 0 0 1 0 0 0 0 | {5} | 0 0 0 0 0 1 0 0 0 | 9 {6} | 0 0 0 0 0 0 1 0 0 | 2 : S {6} | 0 0 0 0 0 0 0 1 0 | {6} | 0 0 0 0 0 0 0 0 1 | ----------------------------------------------------------------------- 1 <------------- S : 0 ) {3} | 1 | {0} | 0 | 3 <----------------- S : 1 {5} | 1 0 0 | {5} | 0 1 0 | {5} | 0 0 1 | {3} | 0 0 0 | {3} | 0 0 0 | {3} | 0 0 0 | {3} | 0 0 0 | 3 <----------------- S : 2 {7} | 1 0 0 | {7} | 0 1 0 | {7} | 0 0 1 | {5} | 0 0 0 | {5} | 0 0 0 | {5} | 0 0 0 | {6} | 0 0 0 | {6} | 0 0 0 | {6} | 0 0 0 | o16 : Sequence |
i17 : assert isShortExactSequence(beta, alpha) |
i18 : prune HH source alpha 1 o18 = cokernel {3} | c2 b2 a2 | <-- 0 <-- S 0 1 2 o18 : Complex |
i19 : assert isFree target alpha |