horseshoeResolution(Complex) -- make the horseshoe resolution

Synopsis

• Function: horseshoeResolution
• Usage:
(beta, alpha) = horseshoeResolution C
(beta, alpha) = horseshoeResolution(g, f)
• Inputs:
• C, , (or a pair of maps) that is a short exact sequence of modules
• Optional inputs:
• LengthLimit => an integer, default value infinity, limit the lengths of the constructed free resolutions
• Outputs:
• , consisting of a pair of chain complex maps $\beta$ and $\alpha$

Description

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