The module $\operatorname{Ext}^d_R(M,N)$ is constructed from a free resolution $F$ of $M$, \[ 0 \leftarrow M \leftarrow F_0 \leftarrow F_1 \leftarrow \dots \leftarrow F_d \leftarrow \ldots, \] by taking the homology of the complex $\operatorname{Hom}_R(F, N)$. An element of $\operatorname{Ext}^d_R(M,N)$ is represented by an element of $\operatorname{Hom}_R(F_d, N)$. Given a map $g$ extending a map of degree $-d$ from $F$ to the free resolution of $N$, this method returns the corresponding element in the Ext module.
We illustrate this method by choosing a random element in an Ext module, constructing the corresponding map $g$ between free resolutions.
i1 : S = ZZ/101[a..d] o1 = S o1 : PolynomialRing |
i2 : I = ideal"a2,ab,ac,b3" 2 3 o2 = ideal (a , a*b, a*c, b ) o2 : Ideal of S |
i3 : E = Ext^1(I, S^1/I) o3 = subquotient ({-3} | 0 a b 0 0 0 0 0 |, {-3} | -b a 0 0 0 0 0 ac ab a2 0 0 0 0 0 0 0 b3 0 0 |) {-3} | 0 0 c a 0 0 0 b2 | {-3} | -c 0 a 0 0 0 0 0 0 0 ac ab a2 0 0 0 0 0 b3 0 | {-3} | 0 0 0 0 c b a 0 | {-3} | 0 -c b 0 0 0 0 0 0 0 0 0 0 ac ab a2 0 0 0 b3 | {-4} | 1 0 0 0 0 0 0 0 | {-4} | 0 b2 0 -a ac ab a2 0 0 0 0 0 0 0 0 0 b3 0 0 0 | 4 o3 : S-module, subquotient of S |
i4 : B = basis(0, E) o4 = {-4} | bc3 bc2d bcd2 bd3 c4 c3d c2d2 cd3 d4 0 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 d2 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 d2 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 c2 cd d2 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d2 0 | {-1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d | o4 : Matrix |
i5 : f0 = B * random(S^16, S^1) o5 = {-4} | 24bc3+19c4-36bc2d+19c3d-30bcd2-10c2d2-29bd3-29cd3-8d4 | {-2} | -22d2 | {-2} | 0 | {-2} | -29d2 | {-2} | -24c2-38cd-16d2 | {-2} | 0 | {-2} | 39d2 | {-1} | 21d | o5 : Matrix |
i6 : g = yonedaMap f0 1 4 o6 = 0 : S <-------------------------------------------------------------------------------------------------------- S : 1 | -22ad2 21b2d-29ad2 -24c3-38c2d+39ad2-16cd2 24bc3+19c4-36bc2d+19c3d-30bcd2-10c2d2-29bd3-29cd3-8d4 | 4 1 1 : S <-------------------------- S : 2 {2} | -39d2 | {2} | -29d2 | {2} | 24c2+38cd+38d2 | {3} | 21d | o6 : ComplexMap |
i7 : assert(degree g === -1) |
i8 : f = yonedaMap' g o8 = {-4} | 24bc3+19c4-36bc2d+19c3d-30bcd2-10c2d2-29bd3-29cd3-8d4 | {-2} | -22d2 | {-2} | 0 | {-2} | -29d2 | {-2} | -24c2-38cd-16d2 | {-2} | 0 | {-2} | 39d2 | {-1} | 21d | o8 : Matrix |
i9 : assert isWellDefined f |
i10 : assert(degree f == {0}) |
i11 : assert isHomogeneous f |
i12 : source f === S^1 o12 = true |
i13 : target f === E o13 = true |
i14 : assert(f == f0) |
The method yonedaMap' is only a one-sided inverse to yonedaMap.
i15 : R = ZZ/101[x,y,z]/(y^2*z-x*(x-z)*(x-2*z)); |
i16 : M = truncate(1,R^1) o16 = image | z y x | 1 o16 : R-module, submodule of R |
i17 : B = basis(-4, Ext^3(M, M)) o17 = {-4} | 0 0 0 | {-4} | 1 0 0 | {-4} | 0 1 0 | {-4} | 0 0 0 | {-4} | 0 0 1 | {-4} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | {-3} | 0 0 0 | o17 : Matrix |
i18 : f0 = B_{2} o18 = {-4} | 0 | {-4} | 0 | {-4} | 0 | {-4} | 0 | {-4} | 1 | {-4} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | o18 : Matrix |
i19 : g = yonedaMap(f0, LengthLimit => 8) 3 4 o19 = 0 : R <------------------------- R : 3 {1} | -49 0 0 0 | {1} | 0 -49 -50 0 | {1} | 50 0 0 z | 4 4 1 : R <----------------------------------- R : 4 {2} | 49 0 -46x-3z 0 | {2} | 0 -49x 0 -46x-3z | {2} | 50 0 -49x 0 | {3} | 0 50 0 49 | 4 4 2 : R <------------------------------- R : 5 {3} | 0 -46x-3z -49x yz | {4} | -49 0 0 x | {4} | 0 -49 -50 0 | {4} | 50 0 0 0 | 4 4 3 : R <----------------------------- R : 6 {5} | 0 0 0 x | {5} | -50 0 49x+z 0 | {5} | 49 0 -47x-3z 0 | {6} | 0 50 0 49 | 4 4 4 : R <-------------------------------- R : 7 {6} | 0 -47x-3z -49x-z 0 | {7} | -49 0 0 x | {7} | 0 -49 -50 0 | {7} | 50 0 0 0 | 4 4 5 : R <----------------------------- R : 8 {8} | 0 0 0 x | {8} | -50 0 49x+z 0 | {8} | 49 0 -47x-3z 0 | {9} | 0 50 0 49 | o19 : ComplexMap |
i20 : f = yonedaMap' g o20 = {-4} | 0 | {-4} | 0 | {-4} | 0 | {-4} | 0 | {-4} | 1 | {-4} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | {-3} | 0 | o20 : Matrix |
i21 : assert isWellDefined f |
i22 : assert isHomogeneous f |
i23 : assert(degree f === {-4}) |
i24 : assert(f != f0) |
i25 : assert(yonedaMap(f, LengthLimit => 8) == g) |