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 |