The functor Tor_R(M,N) is also functorial in the ring argument. Therefore, a ring map phi from A to B induces an algebra map from the Tor algebra of A to the Tor algebra of B.
i1 : R = ZZ/101[a,b,c]/ideal{a^3,b^3,c^3,a^2*b^2*c^2} o1 = R o1 : QuotientRing |
i2 : S = R/ideal{a*b^2*c^2,a^2*b*c^2,a^2*b^2*c} o2 = S o2 : QuotientRing |
i3 : f = map(S,R) o3 = map(S,R,{a, b, c}) o3 : RingMap S <--- R |
i4 : fTor = torMap(f,GenDegreeLimit=>3) ZZ ZZ o4 = map(---[X ..X ],---[X ..X ],{X , X , X , X , X , X , 0, 0, 0, 0}) 101 1 17 101 1 10 1 2 3 4 5 6 ZZ ZZ o4 : RingMap ---[X ..X ] <--- ---[X ..X ] 101 1 17 101 1 10 |
i5 : matrix fTor o5 = | X_1 X_2 X_3 X_4 X_5 X_6 0 0 0 0 | ZZ 1 ZZ 10 o5 : Matrix (---[X ..X ]) <--- (---[X ..X ]) 101 1 17 101 1 17 |
In the following example, the map on Tor is surjective, which means that the ring homomorphism is large (Dress-Kramer).
i6 : R = ZZ/101[a,b,c,d]/ideal{a^3,b^3,c^3,d^3,a*c,a*d,b*c,b*d} o6 = R o6 : QuotientRing |
i7 : S = ZZ/101[a,b]/ideal{a^3,b^3} o7 = S o7 : QuotientRing |
i8 : f = map(S,R,matrix{{a,b,0,0}}) o8 = map(S,R,{a, b, 0, 0}) o8 : RingMap S <--- R |
i9 : fTor = torMap(f,GenDegreeLimit=>4) ZZ ZZ o9 = map(---[X ..X ],---[X ..X ],{X , X , 0, 0, 0, 0, 0, 0, X , X , 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) 101 1 4 101 1 55 1 2 3 4 ZZ ZZ o9 : RingMap ---[X ..X ] <--- ---[X ..X ] 101 1 4 101 1 55 |
i10 : matrix fTor o10 = | X_1 X_2 0 0 0 0 0 0 X_3 X_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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | ZZ 1 ZZ 55 o10 : Matrix (---[X ..X ]) <--- (---[X ..X ]) 101 1 4 101 1 4 |
The object torMap is a method function with options.