# Tor_ZZ(Matrix,Module) -- make the induced map on Tor modules

## Synopsis

• Scripted functor: Tor
• Usage:
g = Tor_i(f, M)
h = Tor_i(M, f)
• Inputs:
• i, an integer,
• f, , defining a homomorphism from the $R$-module $L$ to the $R$-module $N$
• M, , over the ring $R$
• Outputs:
• g, , defining the induced homomorphism from $\operatorname{Tor}_i^R(L, M)$ to $\operatorname{Tor}_i^R(N, M)$, or the matrix $h$ defining the induced homomorphism from $\operatorname{Tor}_i^R(M, L)$ to $\operatorname{Tor}_i^R(M, N)$

## Description

The $\operatorname{Tor}$ functors are derived functors of the tensor product functor. Given a homomorphism $f \colon L \to N$ of $R$-modules and an $R$-module $M$, this method returns the induced homomorphism $g \colon \operatorname{Tor}_i^R(L, M) \to \operatorname{Tor}_i^R(N, M)$.

 i1 : R = ZZ/101[a..d]; i2 : L = R^1/ideal(a^2, b^2, c^2, a*c, b*d) o2 = cokernel | a2 b2 c2 ac bd | 1 o2 : R-module, quotient of R i3 : N = R^1/ideal(a^2, b^2, c^2, a*c, b*d, a*b) o3 = cokernel | a2 b2 c2 ac bd ab | 1 o3 : R-module, quotient of R i4 : f = map(N,L,1) o4 = | 1 | o4 : Matrix i5 : M = coker vars R o5 = cokernel | a b c d | 1 o5 : R-module, quotient of R i6 : betti freeResolution L 0 1 2 3 4 o6 = total: 1 5 9 7 2 0: 1 . . . . 1: . 5 3 . . 2: . . 6 7 2 o6 : BettiTally i7 : betti freeResolution N 0 1 2 3 4 o7 = total: 1 6 9 5 1 0: 1 . . . . 1: . 6 7 2 . 2: . . 2 3 1 o7 : BettiTally i8 : g1 = Tor_1(f, M) o8 = {2} | 1 0 0 0 0 | {2} | 0 0 0 0 0 | {2} | 0 1 0 0 0 | {2} | 0 0 1 0 0 | {2} | 0 0 0 1 0 | {2} | 0 0 0 0 1 | o8 : Matrix i9 : g2 = Tor_2(f, M) o9 = {3} | 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 | {3} | 1 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 | {3} | 0 1 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 | {3} | 0 0 1 0 0 0 0 0 0 | {4} | 0 0 0 0 0 1 0 0 0 | {4} | 0 0 0 0 0 0 0 0 1 | o9 : Matrix i10 : g3 = Tor_3(f, M) o10 = {4} | 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 | {5} | 0 1 0 0 0 0 0 | {5} | 0 0 0 0 0 1 0 | {5} | 0 0 0 0 0 0 1 | o10 : Matrix i11 : g4 = Tor_4(f, M) o11 = {6} | 0 1 | o11 : Matrix i12 : assert(source g2 === Tor_2(L, M)) i13 : assert(target g2 === Tor_2(N, M)) i14 : prune ker g3 o14 = cokernel {5} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a | 4 o14 : R-module, quotient of R i15 : prune coker g3 o15 = cokernel {4} | d c b a 0 0 0 0 | {4} | 0 0 0 0 d c b a | 2 o15 : R-module, quotient of R

Although the $\operatorname{Tor}$ functors are symmetric, the actual matrices depend on the order of the arguments.

 i16 : M = R^1/ideal(a^2,b^2,c^3,b*d) o16 = cokernel | a2 b2 c3 bd | 1 o16 : R-module, quotient of R i17 : h1 = Tor_1(M, f) o17 = {2} | 1 0 0 0 | {2} | 0 1 0 0 | {2} | 0 0 1 0 | {3} | 0 0 0 1 | o17 : Matrix i18 : h1' = Tor_1(f, M) o18 = {2} | 1 0 0 0 0 0 0 0 0 0 | {2} | 0 1 0 0 0 0 0 0 0 0 | {2} | 0 0 1 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 1 0 0 0 0 0 0 | {3} | 0 0 0 0 1 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 | o18 : Matrix i19 : Tor_1(L, M) o19 = subquotient ({2} | 1 0 0 0 0 0 0 0 0 0 |, {2} | -c 0 0 0 0 0 0 0 0 bd b2 a2 c3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |) {2} | 0 1 0 0 0 0 0 0 0 0 | {2} | 0 0 -d 0 -ac -c2 0 0 0 0 0 0 0 bd b2 a2 c3 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 a 0 -c bd b2 0 0 | {2} | a -c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bd b2 a2 c3 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 c a 0 0 bd b2 | {2} | 0 a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bd b2 a2 c3 0 0 0 0 | {2} | 0 0 1 0 0 0 0 0 0 0 | {2} | 0 0 b 0 0 0 0 ac c2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bd b2 a2 c3 | 5 o19 : R-module, subquotient of R i20 : Tor_1(M, L) o20 = cokernel {2} | 0 0 0 0 0 0 bd c2 ac b2 a2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | -d 0 0 0 0 0 0 0 0 0 0 bd c2 ac b2 a2 0 0 0 0 0 0 0 0 0 0 | {2} | b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bd c2 ac b2 a2 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bd c2 ac b2 a2 | 4 o20 : R-module, quotient of R i21 : assert(source h1 == Tor_1(M, L)) i22 : assert(source h1' == Tor_1(L, M)) i23 : h2 = Tor_2(M, f) o23 = {4} | 1 0 0 0 0 0 0 0 0 | {4} | 0 1 0 0 0 0 0 0 0 | {4} | 0 0 1 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 1 0 0 | {5} | 0 0 0 0 0 0 0 1 0 | {5} | 0 0 0 0 0 0 0 0 1 | o23 : Matrix i24 : h2' = Tor_2(f, M) o24 = {4} | 0 1 0 0 0 0 0 0 0 0 0 -c 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 | {4} | 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {5} | 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 | o24 : Matrix i25 : prune h2 o25 = {4} | 1 0 0 0 0 0 | {4} | 0 1 0 0 0 0 | {4} | 0 0 1 0 0 0 | {5} | 0 0 0 1 0 0 | {5} | 0 0 0 0 1 0 | {5} | 0 0 0 0 0 1 | o25 : Matrix i26 : prune h2' o26 = {4} | 0 1 0 0 0 0 | {4} | 0 0 1 0 0 0 | {4} | 1 0 0 0 0 0 | {5} | 0 0 0 1 0 0 | {5} | 0 0 0 0 1 0 | {5} | 0 0 0 0 0 1 | o26 : Matrix