Description
Since Tor is a bifunctor, there are two different connecting maps. The first comes from applying the covariant functor $M \otimes_S -$ to a short exact sequence of modules. The second comes from applying the covariant functor $- \otimes_S M$ to a short exact sequence of modules. More explicitly, given the short exact sequence
$\phantom{WWWW} 0 \leftarrow C \xleftarrow{g} B \xleftarrow{f} A \leftarrow 0, $
the $i$-th connecting homomorphism is, in the first case, a map $\operatorname{Tor}^S_i(M, C) \to \operatorname{Tor}^S_{i-1}(M, A)$ and, in the second case, a map $\operatorname{Tor}^S_i(A, M) \to \operatorname{Tor}^S_{i-1}(C, M)$.
As a first example, let $\Bbbk$ be the base field as an $S$-module. Applying the functor $\Bbbk \otimes_S -$ to 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 the long exact sequence of Tor modules having the form
$\phantom{WWWW} \dotsb \leftarrow \operatorname{Tor}_{i-1}(\Bbbk, S/(I+J)) \xleftarrow{\delta_{i}} \operatorname{Tor}_i(\Bbbk, S/I \cap J) \leftarrow \operatorname{Tor}_i(\Bbbk, S/I \oplus S/J) \leftarrow \operatorname{Tor}_i(\Bbbk, S/(I+J)) \leftarrow \dotsb. $
i1 : S = ZZ/101[a..d];
|
i2 : I = ideal(c^3-b*d^2, b*c-a*d)
3 2
o2 = ideal (c - b*d , b*c - a*d)
o2 : Ideal of S
|
i3 : J = ideal(a*c^2-b^2*d, b^3-a^2*c)
2 2 3 2
o3 = ideal (a*c - b d, b - a c)
o3 : Ideal of S
|
i4 : g = map(S^1/(I+J), S^1/I ++ S^1/J, {{1,1}});
o4 : Matrix
|
i5 : f = map(S^1/I ++ S^1/J, S^1/intersect(I,J), {{1},{-1}});
o5 : Matrix
|
i6 : assert isShortExactSequence(g,f)
|
i7 : kk = coker vars S
o7 = cokernel | a b c d |
1
o7 : S-module, quotient of S
|
i8 : delta = connectingTorMap(kk, g, f)
o8 = 2 : subquotient ({1} | -b 0 -c 0 0 -d bc2-acd c2d c3 -b2d |, {1} | -b -c 0 -d 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 0 0 0 0 |) <------------------------------------------------- subquotient ({2} | c d 0 0 bc-ad 0 -d2 cd bd 0 0 0 d2 c2 c3-bd2 ac2-b2d b3-a2c 0 0 |, {2} | c d 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |) : 2
{1} | a -c 0 0 -d 0 0 -bd2 -bcd b2c | {1} | a 0 -c 0 -d 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | -b 0 0 d 0 bc-ad c2 -bd -ac 0 -cd d2 0 0 0 0 0 0 0 | {2} | -b 0 d 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 b a -d 0 0 0 0 0 0 | {1} | 0 a b 0 0 -d 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | a 0 d 0 0 0 -bd bc b2 0 c2 -cd 0 0 0 0 0 c3-bd2 d3 | {2} | a 0 0 d 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 c b a 0 0 0 0 | {1} | 0 0 0 a b c 0 0 0 0 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d | {2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 -b 0 -c 0 0 0 0 0 bc-ad c2 -cd -bd -ac 0 0 0 0 0 | {2} | 0 -b -c 0 0 0 0 0 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 a -c 0 0 0 0 0 0 0 -bd c2 bc b2 0 0 0 0 -cd2 | {2} | 0 a 0 -c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c3 | {2} | 0 0 a b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
3 : subquotient ({2} | c d 0 0 0 c3 ac2d-b2d2 ac3-b2cd b2c2-abcd abc2-a2cd b3c-ab2d 0 0 -bc3+b2d2 0 0 -c3d -c4 b2cd 0 -bc2d+acd2 0 -c2d2 |, {2} | c d 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |) <--------------------------------------- subquotient ({3} | -d bc-ad 0 0 -d2 -c2 c3-bd2 ac2-b2d b3-a2c 0 0 0 0 0 |, {3} | -d c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 0 0 0 0 |) : 3
{2} | -b 0 0 d -c2d -bc2+acd 0 0 0 0 0 ac2d-b2d2 ac3-b2cd b2c2-abcd abc2-a2cd b3c-ab2d bc2d bc3 -b3d 0 0 0 0 | {2} | -b 0 d 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | c 0 bc-ad 0 cd bd 0 0 0 c3-bd2 ac2-b2d b3-a2c 0 0 | {3} | c 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 0 0 0 0 |
{2} | a 0 d 0 bd2 0 0 0 0 0 0 0 0 0 0 0 -b2d2 -b2cd b3c 0 0 0 0 | {2} | a 0 0 d 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | -b 0 0 bc-ad -bd -ac 0 0 0 0 0 0 c3-bd2 0 | {3} | -b 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c 0 0 0 0 |
{2} | 0 -b 0 -c c3 -b2d 0 0 0 0 0 0 0 0 0 0 0 0 0 ac2d-b2d2 b2c2-abcd abc2-a2cd bc2d | {2} | 0 -b -c 0 0 0 0 0 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | a 0 0 0 bc b2 0 0 0 0 0 0 0 c3-bd2 | {3} | a 0 0 0 0 0 0 0 0 0 0 0 0 c3-bd2 bc-ad ac2-b2d b3-a2c |
{2} | 0 a -c 0 -bcd b2c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -b2d2 | {2} | 0 a 0 -c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 a b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ac2d-b2d2 ac3-b2cd abc2-a2cd b3c-ab2d | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{5} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{6} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
o8 : ComplexMap
|
i9 : assert isWellDefined delta
|
i10 : assert(source delta_2 == Tor_2(kk, target g))
|
i11 : assert(target delta_2 == Tor_1(kk, source f))
|
i12 : prune delta
o12 = 2 : cokernel {4} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | <------------------- cokernel {4} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | : 2
{4} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 | {4} | 0 0 0 1 | {4} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 | {4} | 0 0 1 0 | {4} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a | {4} | 1 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a |
{4} | 0 1 0 0 |
3 : cokernel {5} | d c b a 0 0 0 0 0 0 0 0 | <------------- cokernel {5} | d c b a | : 3
{5} | 0 0 0 0 d c b a 0 0 0 0 | {5} | 0 |
{6} | 0 0 0 0 0 0 0 0 d c b a | {5} | 1 |
{6} | 0 |
o12 : ComplexMap
|
The connecting homomorphism fits into a natural long exact sequence in Tor.
i13 : F = freeResolution kk;
|
i14 : LES = longExactSequence(F ** g, F ** f);
|
i15 : assert all(3, i -> dd^LES_(3*(i+1)) == delta_(i+1))
|
i16 : assert(HH LES == 0)
|
As a second example, applying the functor $- \otimes_S \Bbbk$ to 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 the long exact sequence of Tor modules having the form
$\phantom{WWWW} \dotsb \leftarrow \operatorname{Tor}_{i-1}(S/(I+J), \Bbbk) \xleftarrow{\delta_{i}} \operatorname{Tor}_i(S/I \cap J, \Bbbk) \leftarrow \operatorname{Tor}_i(S/I \oplus S/J, \Bbbk) \leftarrow \operatorname{Tor}_i(S/(I+J), \Bbbk) \leftarrow \dotsb. $
i17 : delta' = connectingTorMap(g, f, kk)
o17 = 2 : cokernel {4} | 0 0 0 a b c d 0 0 0 0 0 0 0 0 0 0 0 0 | <--------------------- cokernel {4} | 0 a b c d 0 0 0 0 0 0 0 0 0 0 0 0 | : 2
{4} | 0 0 0 0 0 0 0 a b c d 0 0 0 0 0 0 0 0 | {4} | 1 0 0 0 | {4} | 0 0 0 0 0 a b c d 0 0 0 0 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 0 a b c d 0 0 0 0 | {4} | 0 1 0 0 | {4} | 0 0 0 0 0 0 0 0 0 a b c d 0 0 0 0 |
{4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b c d | {4} | 0 0 -1 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 a b c d |
{4} | 0 0 0 -1 |
3 : cokernel {5} | a b c d 0 0 0 0 0 0 0 0 | <-------------- cokernel {5} | a b c d | : 3
{5} | 0 0 0 0 a b c d 0 0 0 0 | {5} | -1 |
{6} | 0 0 0 0 0 0 0 0 a b c d | {5} | 0 |
{6} | 0 |
o17 : ComplexMap
|
i18 : assert isWellDefined delta'
|
i19 : (g',f') = horseshoeResolution(g,f);
|
i20 : assert isShortExactSequence(g',f')
|
i21 : LES' = longExactSequence(g' ** kk, f' ** kk);
|
i22 : assert(HH LES' == 0)
|
i23 : assert all(3, i -> dd^LES'_(3*(i+1)) == delta'_(i+1))
|