# torSymmetry(ZZ,Module,Module) -- makes the canonical isomorphism realizing the symmetry of Tor

## Synopsis

• Function: torSymmetry
• Usage:
torSymmetry(i, M, N)
• Inputs:
• i, an integer,
• M, ,
• N, , over the same ring $R$ as $M$
• Outputs:
• , representing an $R$-module homomorphism from $\operatorname{Tor}_i^R(M, N)$ to $\operatorname{Tor}_i^R(N, M)$

## Description

Tensor commutativity gives rise to an isomorphism from $\operatorname{Tor}_i^R(M, N)$ to $\operatorname{Tor}_i^R(N, M)$. This method returns this isomorphism.

We compute the Betti numbers of the Veronese surface in two ways: $\operatorname{Tor}(M, \ZZ/101)$ or via Koszul cohomology $\operatorname{Tor}(\ZZ/101, M)$.

 i1 : S = ZZ/101[a..f]; i2 : I = trim minors(2, genericSymmetricMatrix(S, 3)) 2 2 2 o2 = ideal (e - d*f, c*e - b*f, c*d - b*e, c - a*f, b*c - a*e, b - a*d) o2 : Ideal of S i3 : M = S^1/I; i4 : N = coker vars S o4 = cokernel | a b c d e f | 1 o4 : S-module, quotient of S i5 : f1 = torSymmetry(1,M,N) o5 = {2} | 0 -1 0 0 0 0 | {2} | -1 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 -1 0 | {2} | 0 0 0 -1 0 0 | {2} | 0 0 -1 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 -1 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 | o5 : Matrix i6 : f2 = torSymmetry(1,N,M) o6 = {2} | 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 | {2} | 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 | {2} | 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 | o6 : Matrix i7 : assert(f1 * f2 == 1) i8 : assert(f2 * f1 == 1) i9 : g1 = torSymmetry(2,M,N); o9 : Matrix i10 : g2 = torSymmetry(2,N,M); o10 : Matrix i11 : assert(g1 * g2 == 1) i12 : assert(g2 * g1 == 1) i13 : h1 = torSymmetry(3,M,N); o13 : Matrix i14 : h2 = torSymmetry(3,N,M); o14 : Matrix i15 : assert(h1 * h2 == 1) i16 : assert(h2 * h1 == 1)

Although the Tor modules are isomorphic, they are presented with different numbers of generators. As a consequence, the matrices need not be square. For example, after pruning the modules, $f_1$ and $f_2$ are represented by the same matrix.

 i17 : p1 = prune f1 o17 = {2} | -1 0 0 0 0 0 | {2} | 0 0 -1 0 0 0 | {2} | 0 -1 0 0 0 0 | {2} | 0 0 0 -1 0 0 | {2} | 0 0 0 0 0 -1 | {2} | 0 0 0 0 -1 0 | o17 : Matrix i18 : p2 = prune f2 o18 = {2} | -1 0 0 0 0 0 | {2} | 0 0 -1 0 0 0 | {2} | 0 -1 0 0 0 0 | {2} | 0 0 0 -1 0 0 | {2} | 0 0 0 0 0 -1 | {2} | 0 0 0 0 -1 0 | o18 : Matrix i19 : assert(p1 * p2 == 1)