Given a short exact sequence of chain complexes
$\phantom{WWWW} 0 \leftarrow C \xleftarrow{g} B \xleftarrow{f} A \leftarrow 0, $
this function returns the unique morphism $h \colon H(C) \to H(A)[-1]$ of complexes that naturally fits into the long exact sequence
$\phantom{WWWW} \dotsb \leftarrow H(C)[-1] \xleftarrow{H(g)[-1]} H(B)[-1] \xleftarrow{H(f)[-1]} H(A)[-1] \xleftarrow{h} H(C) \xleftarrow{H(g)} H(B) \xleftarrow{H(f)} H(A) \leftarrow \dotsb. $
$\phantom{WWWW}$
As a first example, consider a free resolution $F$ of $S/I$. Applying the Hom functor $\operatorname{Hom}(F, -)$ to a short exact sequence of modules
$\phantom{WWWW} 0 \leftarrow S/h \leftarrow S \xleftarrow{h} S(- \deg h) \leftarrow 0 $
gives rise to a short exact sequence of complexes. The corresponding long exact sequence in homology has the form
$\phantom{WWWW} \dotsb \leftarrow \operatorname{Ext}^{d+1}(S/I, S(-\deg h)) \xleftarrow{\delta} \operatorname{Ext}^d(S/I, S/h) \leftarrow \operatorname{Ext}^d(S/I, S) \leftarrow \operatorname{Ext}^d(S/I, S(-\deg h)) \leftarrow \dotsb. $
i1 : S = ZZ/101[a..d, Degrees=>{2:{1,0},2:{0,1}}]; |
i2 : h = a*c^2 + a*c*d + b*d^2; |
i3 : I = (ideal(a,b) * ideal(c,d))^[2] 2 2 2 2 2 2 2 2 o3 = ideal (a c , a d , b c , b d ) o3 : Ideal of S |
i4 : F = freeResolution comodule I; |
i5 : g = Hom(F, map(S^1/h, S^1, 1)) 1 o5 = -3 : cokernel {-4, -4} | ac2+acd+bd2 | <------------------ S : -3 {-4, -4} | 1 | 4 -2 : cokernel {-4, -2} | ac2+acd+bd2 0 0 0 | <------------------------ S : -2 {-4, -2} | 0 ac2+acd+bd2 0 0 | {-4, -2} | 1 0 0 0 | {-2, -4} | 0 0 ac2+acd+bd2 0 | {-4, -2} | 0 1 0 0 | {-2, -4} | 0 0 0 ac2+acd+bd2 | {-2, -4} | 0 0 1 0 | {-2, -4} | 0 0 0 1 | 4 -1 : cokernel {-2, -2} | ac2+acd+bd2 0 0 0 | <------------------------ S : -1 {-2, -2} | 0 ac2+acd+bd2 0 0 | {-2, -2} | 1 0 0 0 | {-2, -2} | 0 0 ac2+acd+bd2 0 | {-2, -2} | 0 1 0 0 | {-2, -2} | 0 0 0 ac2+acd+bd2 | {-2, -2} | 0 0 1 0 | {-2, -2} | 0 0 0 1 | 1 0 : cokernel | ac2+acd+bd2 | <--------- S : 0 | 1 | o5 : ComplexMap |
i6 : f = Hom(F, map(S^1, S^{-degree h}, {{h}})) 1 1 o6 = -3 : S <---------------------------- S : -3 {-4, -4} | ac2+acd+bd2 | 4 4 -2 : S <---------------------------------------------------------------- S : -2 {-4, -2} | ac2+acd+bd2 0 0 0 | {-4, -2} | 0 ac2+acd+bd2 0 0 | {-2, -4} | 0 0 ac2+acd+bd2 0 | {-2, -4} | 0 0 0 ac2+acd+bd2 | 4 4 -1 : S <---------------------------------------------------------------- S : -1 {-2, -2} | ac2+acd+bd2 0 0 0 | {-2, -2} | 0 ac2+acd+bd2 0 0 | {-2, -2} | 0 0 ac2+acd+bd2 0 | {-2, -2} | 0 0 0 ac2+acd+bd2 | 1 1 0 : S <------------------- S : 0 | ac2+acd+bd2 | o6 : ComplexMap |
i7 : assert isWellDefined g |
i8 : assert isWellDefined f |
i9 : assert isShortExactSequence(g, f) |
i10 : delta = connectingMap(g, f) o10 = -2 : cokernel {-3, -2} | d2 -c2 -b2 a2 | <-------------------------------------- subquotient ({-4, -2} | c2 ac+bd -bc b2 0 a2 0 ab 0 0 |, {-4, -2} | -b2 a2 0 0 ac2+acd+bd2 0 0 0 |) : -2 {-3, -2} | 0 -d c 0 0 0 0 -a 0 0 | {-4, -2} | d2 -ad ac+ad 0 b2 0 a2 0 0 0 | {-4, -2} | 0 0 -b2 a2 0 ac2+acd+bd2 0 0 | {-2, -4} | 0 0 0 d2 -c2 0 0 0 a2 ac2+acd+bd2 | {-2, -4} | -d2 0 c2 0 0 0 ac2+acd+bd2 0 | {-2, -4} | 0 0 0 0 0 -d2 c2 c2+cd b2 0 | {-2, -4} | 0 -d2 0 c2 0 0 0 ac2+acd+bd2 | -1 : subquotient ({-3, 0} | c2 b2 0 a2 0 0 |, {-3, 0} | -b2 a2 0 0 |) <----------------------------------------------- subquotient ({-2, -2} | ac2+acd+bd2 0 0 0 -a2cd-abd2 a3c+a2bd -a2bc acd3+bd4 c2d4 |, {-2, -2} | -a2cd-abd2 ac2+acd+bd2 0 0 0 |) : -1 {-3, 0} | d2 0 b2 0 a2 0 | {-3, 0} | 0 0 -b2 a2 | {-3, 2} | 0 0 0 0 0 0 0 -ab -ac2-acd+bd2 | {-2, -2} | 0 ac2+acd+bd2 0 0 b2c2 ab2c+b3d -b3c bc4+bc3d c6+2c5d+c4d2 | {-2, -2} | b2c2 0 ac2+acd+bd2 0 0 | {-1, -2} | 0 d2 -c2 0 0 a2 | {-1, -2} | -d2 0 c2 0 | {-1, 0} | 0 0 0 0 0 0 0 0 0 | {-2, -2} | 0 0 ac2+acd+bd2 0 a2d2 -a3d a3c+a3d -ad4 d6 | {-2, -2} | a2d2 0 0 ac2+acd+bd2 0 | {-1, -2} | 0 0 0 -d2 c2 b2 | {-1, -2} | 0 -d2 0 c2 | {-1, 0} | 0 0 0 0 0 0 0 0 0 | {-2, -2} | 0 0 0 ac2+acd+bd2 b2d2 -ab2d ab2c+ab2d bc2d2+bcd3 c4d2+2c3d3+c2d4 | {-2, -2} | b2d2 0 0 0 ac2+acd+bd2 | {-1, 0} | 0 0 0 0 0 0 0 0 0 | {-1, 0} | 0 0 0 0 0 0 0 0 0 | {1, -2} | 0 0 0 0 0 d -c 0 0 | o10 : ComplexMap |
i11 : assert isWellDefined delta |
i12 : assert(degree delta == 0) |
i13 : assert(source delta_(-1) == Ext^1(comodule I, S^1/h)) |
i14 : assert(target delta_(-1) == Ext^2(comodule I, S^{{-1,-2}})) |
i15 : L = longExactSequence(g,f) o15 = cokernel {-4, -4} | d2 -c2 -b2 a2 ac2+acd+bd2 | <-- cokernel {-4, -4} | d2 -c2 -b2 a2 | <-- cokernel {-3, -2} | d2 -c2 -b2 a2 | <-- subquotient ({-4, -2} | c2 ac+bd -bc b2 0 a2 0 ab 0 0 |, {-4, -2} | -b2 a2 0 0 ac2+acd+bd2 0 0 0 |) <-- subquotient ({-4, -2} | c2 b2 0 a2 0 0 |, {-4, -2} | -b2 a2 0 0 |) <-- subquotient ({-3, 0} | c2 b2 0 a2 0 0 |, {-3, 0} | -b2 a2 0 0 |) <-- subquotient ({-2, -2} | ac2+acd+bd2 0 0 0 -a2cd-abd2 a3c+a2bd -a2bc acd3+bd4 c2d4 |, {-2, -2} | -a2cd-abd2 ac2+acd+bd2 0 0 0 |) <-- subquotient ({-2, -2} | a2c2 |, {-2, -2} | a2c2 |) <-- subquotient ({-1, 0} | a2c2 |, {-1, 0} | a2c2 |) <-- subquotient (| ac2+acd+bd2 |, | ac2+acd+bd2 |) <-- image 0 <-- image 0 <-- 0 {-4, -2} | d2 -ad ac+ad 0 b2 0 a2 0 0 0 | {-4, -2} | 0 0 -b2 a2 0 ac2+acd+bd2 0 0 | {-4, -2} | d2 0 b2 0 a2 0 | {-4, -2} | 0 0 -b2 a2 | {-3, 0} | d2 0 b2 0 a2 0 | {-3, 0} | 0 0 -b2 a2 | {-2, -2} | 0 ac2+acd+bd2 0 0 b2c2 ab2c+b3d -b3c bc4+bc3d c6+2c5d+c4d2 | {-2, -2} | b2c2 0 ac2+acd+bd2 0 0 | {-2, -2} | b2c2 | {-2, -2} | b2c2 | {-1, 0} | b2c2 | {-1, 0} | b2c2 | -9 -8 -7 {-2, -4} | 0 0 0 d2 -c2 0 0 0 a2 ac2+acd+bd2 | {-2, -4} | -d2 0 c2 0 0 0 ac2+acd+bd2 0 | {-2, -4} | 0 d2 -c2 0 0 a2 | {-2, -4} | -d2 0 c2 0 | {-1, -2} | 0 d2 -c2 0 0 a2 | {-1, -2} | -d2 0 c2 0 | {-2, -2} | 0 0 ac2+acd+bd2 0 a2d2 -a3d a3c+a3d -ad4 d6 | {-2, -2} | a2d2 0 0 ac2+acd+bd2 0 | {-2, -2} | a2d2 | {-2, -2} | a2d2 | {-1, 0} | a2d2 | {-1, 0} | a2d2 | 0 1 2 3 {-2, -4} | 0 0 0 0 0 -d2 c2 c2+cd b2 0 | {-2, -4} | 0 -d2 0 c2 0 0 0 ac2+acd+bd2 | {-2, -4} | 0 0 0 -d2 c2 b2 | {-2, -4} | 0 -d2 0 c2 | {-1, -2} | 0 0 0 -d2 c2 b2 | {-1, -2} | 0 -d2 0 c2 | {-2, -2} | 0 0 0 ac2+acd+bd2 b2d2 -ab2d ab2c+ab2d bc2d2+bcd3 c4d2+2c3d3+c2d4 | {-2, -2} | b2d2 0 0 0 ac2+acd+bd2 | {-2, -2} | b2d2 | {-2, -2} | b2d2 | {-1, 0} | b2d2 | {-1, 0} | b2d2 | -6 -5 -4 -3 -2 -1 o15 : Complex |
i16 : assert isWellDefined L |
i17 : assert(HH L == 0) |
i18 : assert(dd^L_-9 === delta_-3) |
i19 : assert(dd^L_-8 === HH_-3 g) |
i20 : assert(dd^L_-7 === HH_-3 f) |
i21 : assert(dd^L_-6 === delta_-2) |
i22 : assert(dd^L_-5 === HH_-2 g) |
i23 : assert(dd^L_-4 === HH_-2 f) |
i24 : assert(dd^L_-3 === delta_-1) |
Applying the Hom functor $\operatorname{Hom}(-, S)$ to the horseshoe resolution of a short exact sequence of modules
$\phantom{WWWW} 0 \leftarrow S/(I+J) \leftarrow S/I \oplus S/J \leftarrow S/I \cap J \leftarrow 0 $
gives rise to a short exact sequence of complexes. The corresponding long exact sequence in homology has the form
$\phantom{WWWW} \dotsb \leftarrow \operatorname{Ext}^{d+1}(S/(I+J), S) \xleftarrow{\delta} \operatorname{Ext}^d(S/I \cap J, S) \leftarrow \operatorname{Ext}^d(S/I \oplus S/J, S) \leftarrow \operatorname{Ext}^d(S/(I+J), S) \leftarrow \dotsb. $
i25 : S = ZZ/101[a..d]; |
i26 : I = ideal(c^3-b*d^2, b*c-a*d) 3 2 o26 = ideal (c - b*d , b*c - a*d) o26 : Ideal of S |
i27 : J = ideal(a*c^2-b^2*d, b^3-a^2*c) 2 2 3 2 o27 = ideal (a*c - b d, b - a c) o27 : Ideal of S |
i28 : ses = complex{ map(S^1/(I+J), S^1/I ++ S^1/J, {{1,1}}), map(S^1/I ++ S^1/J, S^1/intersect(I,J), {{1},{-1}}) } o28 = cokernel | c3-bd2 bc-ad ac2-b2d b3-a2c | <-- cokernel | c3-bd2 bc-ad 0 0 | <-- cokernel | ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d | | 0 0 ac2-b2d b3-a2c | 0 2 1 o28 : Complex |
i29 : assert isWellDefined ses |
i30 : assert(HH ses == 0) |
i31 : (g,f) = horseshoeResolution ses 1 2 2 o31 = (0 : S <----------- S : 0 , 0 : S | 0 1 | 4 8 1 : S <--------------------------- S : 1 8 {2} | 0 0 0 0 1 0 0 0 | 1 : S {3} | 0 0 0 0 0 1 0 0 | {3} | 0 0 0 0 0 0 1 0 | {3} | 0 0 0 0 0 0 0 1 | 4 7 2 : S <------------------------- S : 2 {4} | 0 0 0 1 0 0 0 | {4} | 0 0 0 0 1 0 0 | {4} | 0 0 0 0 0 1 0 | {4} | 0 0 0 0 0 0 1 | 7 2 : S 1 1 3 : S <------------- S : 3 {5} | 1 | ----------------------------------------------------------------------- 1 <--------- S : 0 ) | 1 | | 0 | 4 <------------------- S : 1 {4} | 1 0 0 0 | {4} | 0 1 0 0 | {4} | 0 0 1 0 | {4} | 0 0 0 1 | {2} | 0 0 0 0 | {3} | 0 0 0 0 | {3} | 0 0 0 0 | {3} | 0 0 0 0 | 3 <----------------- S : 2 {5} | 1 0 0 | {5} | 0 1 0 | {6} | 0 0 1 | {4} | 0 0 0 | {4} | 0 0 0 | {4} | 0 0 0 | {4} | 0 0 0 | o31 : Sequence |
i32 : assert isShortExactSequence(g,f) |
i33 : (Hf, Hg) = (Hom(f, S), Hom(g, S)); |
i34 : assert isShortExactSequence(Hf, Hg) |
i35 : delta = connectingMap(Hf, Hg) o35 = -2 : cokernel {-5} | d -c -b a | <------------------ cokernel {-5} | d -c b -a | : -2 {-5} | 1 0 0 | {-5} | 0 0 -d c | {-6} | -ac b2 0 0 | o35 : ComplexMap |
i36 : assert isWellDefined delta |
i37 : assert isComplexMorphism delta |
i38 : assert(source delta_-2 == Ext^2(comodule intersect(I,J), S)) |
i39 : assert(target delta_-2 == Ext^3(comodule (I+J), S)) |
i40 : L = longExactSequence(Hf, Hg) o40 = 0 <-- cokernel {-5} | -1 0 0 d -c -b a | <-- cokernel {-5} | d -c -b a | <-- cokernel {-5} | d -c b -a | <-- subquotient ({-5} | 0 0 d c b a |, {-5} | d -c b -a 0 0 0 0 |) <-- subquotient ({-4} | c b 0 a 0 0 |, {-4} | -b2 c a 0 |) <-- subquotient ({-4} | b3c-ab2d |, {-4} | b3c-ab2d |) <-- subquotient ({-4} | b3c-ab2d 0 |, {-4} | b3c-ab2d 0 |) <-- subquotient ({-2} | bc-ad |, {-2} | bc-ad |) <-- image 0 <-- image 0 <-- image 0 <-- 0 {-5} | 0 0 -d c | {-5} | 0 1 0 0 0 0 | {-5} | 0 0 -d c 0 0 0 0 | {-4} | d 0 b 0 a 0 | {-4} | -ac d b 0 | {-4} | abc2-a2cd | {-4} | abc2-a2cd | {-4} | abc2-a2cd 0 | {-4} | abc2-a2cd 0 | {-3} | b3-a2c | {-3} | b3-a2c | -6 -5 -4 {-6} | -ac b2 0 0 | {-6} | 1 0 0 0 0 0 | {-6} | -ac b2 0 0 0 0 0 0 | {-4} | 0 d -c 0 0 a | {-4} | -bd 0 -c a | {-4} | ac3-b2cd | {-4} | ac3-b2cd | {-4} | ac3-b2cd 0 | {-4} | ac3-b2cd 0 | {-3} | ac2-b2d | {-3} | ac2-b2d | 3 4 5 6 {-4} | 0 0 1 0 0 0 | {-4} | 1 0 0 0 -b2 c a 0 | {-4} | 0 0 0 -d c b | {-4} | -c2 0 -d b | {-4} | ac2d-b2d2 | {-4} | ac2d-b2d2 | {-4} | ac2d-b2d2 0 | {-4} | ac2d-b2d2 0 | {-3} | c3-bd2 | {-3} | c3-bd2 | -3 {-4} | 0 0 0 -1 0 0 | {-4} | 0 1 0 0 -ac d b 0 | {-2} | bc-ad bc-ad | {-2} | 0 bc-ad | {-4} | 0 0 0 0 -1 0 | {-4} | 0 0 -1 0 -bd 0 -c a | -1 0 {-3} | 0 b3-a2c | {-3} | -b3+a2c b3-a2c | 2 {-4} | 0 0 0 0 0 1 | {-4} | 0 0 0 -1 -c2 0 -d b | {-3} | 0 ac2-b2d | {-3} | -ac2+b2d ac2-b2d | {-3} | c3-bd2 c3-bd2 | {-3} | 0 c3-bd2 | -2 1 o40 : Complex |
i41 : assert isWellDefined L |
i42 : assert(HH L == 0) |
i43 : assert(dd^L_-6 === delta_-3) |
i44 : assert(dd^L_-5 === HH_-3 Hf) |
i45 : assert(dd^L_-4 === HH_-3 Hg) |
i46 : assert(dd^L_-3 === delta_-2) |
i47 : assert(dd^L_-2 === HH_-2 Hf) |
i48 : assert(dd^L_-1 === HH_-2 Hg) |
i49 : assert(dd^L_0 === delta_-1) |