# yonedaExtension'(Complex) -- identifies the element of Ext corresponding to an extension

## Synopsis

• Function: yonedaExtension'
• Usage:
f = yonedaExtension' C
• Inputs:
• C, , exact, of length $d$ over a ring $R$
• Outputs:
• f, , a map from $R^1$ to $\operatorname{Ext}^d(C_0, C_d)$

## Description

The module $\operatorname{Ext}^d(M,N)$ corresponds to equivalence classes of extensions of $N$ by $M$. In particular, an element of this module is represented by an exact sequence of the form $0 \leftarrow M \leftarrow C_1 \leftarrow C_2 \leftarrow \dots \leftarrow C_{d-1} \leftarrow N \leftarrow 0$ In particular, we have $M = C_0$ and $N = C_d$. For any such exact sequence, this method returns the map $f \colon R^1 \to \operatorname{Ext}^d(M,N)$ corresponding to the element in the Ext module.

In our first example, the module $\operatorname{Ext}^1(M,R^1)$ has one generator, in degree 0. The middle term in the corresponding short exact sequence determines an irreducible rank 2 vector bundle on the elliptic curve.

 i1 : R = ZZ/101[x,y,z]/(y^2*z-x*(x-z)*(x-2*z)); i2 : M = truncate(1,R^1) o2 = image | z y x | 1 o2 : R-module, submodule of R i3 : N = R^1; i4 : E = coker map(R^{3:-1} ++ R^1,,{ {y, x, 0, 0}, {-z, 0, x, -y*z}, {0, -z, -y, x^2-3*x*z+2*z^2}, {x^2-3*x*z+2*z^2, y*z, 0, 0} }) o4 = cokernel {1} | y x 0 0 | {1} | -z 0 x -yz | {1} | 0 -z -y x2-3xz+2z2 | {0} | x2-3xz+2z2 yz 0 0 | 4 o4 : R-module, quotient of R i5 : d1 = map(M, E, (cover E)^[0]) o5 = {1} | 1 0 0 0 | {1} | 0 1 0 0 | {1} | 0 0 1 0 | o5 : Matrix i6 : d2 = map(E, N, (cover E)_[1]) o6 = {1} | 0 | {1} | 0 | {1} | 0 | {0} | 1 | o6 : Matrix i7 : C = complex{d1,d2} 1 o7 = image | z y x | <-- cokernel {1} | y x 0 0 | <-- R {1} | -z 0 x -yz | 0 {1} | 0 -z -y x2-3xz+2z2 | 2 {0} | x2-3xz+2z2 yz 0 0 | 1 o7 : Complex i8 : assert isWellDefined C i9 : assert isHomogeneous C i10 : assert(HH C == 0) i11 : f = yonedaExtension' C o11 = {-1} | 0 | {-1} | 0 | {-1} | 0 | {0} | 1 | o11 : Matrix

Although the complex representing $f$ is only defined up to equivalence of extensions, this method returns the same complex in this example.

 i12 : assert(C == yonedaExtension f) i13 : assert(basis(0, Ext^1(M,N)) == f)

The trivial extension corresponds to the zero element in the Ext module.

 i14 : R = ZZ/101[a,b,c,d,e]; i15 : M = coker matrix"a,b,d,e" o15 = cokernel | a b d e | 1 o15 : R-module, quotient of R i16 : N = coker matrix"c,d,e" o16 = cokernel | c d e | 1 o16 : R-module, quotient of R i17 : Ext^3(M,N) o17 = subquotient ({-3} | 1 0 0 0 0 0 0 0 0 |, {-3} | 0 -b a 0 0 0 e d c 0 0 0 0 0 0 0 0 0 |) {-3} | 0 1 0 0 0 0 0 0 0 | {-3} | 0 0 0 -b a 0 0 0 0 e d c 0 0 0 0 0 0 | {-3} | 0 0 e d c 0 0 0 a | {-3} | 0 0 0 0 0 a 0 0 0 0 0 0 e d c 0 0 0 | {-3} | 0 0 0 0 0 e d c b | {-3} | 0 0 0 0 0 b 0 0 0 0 0 0 0 0 0 e d c | 4 o17 : R-module, subquotient of R i18 : C = complex{id_M, map(M, R^0, 0), map(R^0, N, 0), id_N} o18 = cokernel | a b d e | <-- cokernel | a b d e | <-- 0 <-- cokernel | c d e | <-- cokernel | c d e | 0 1 2 3 4 o18 : Complex i19 : assert isWellDefined C i20 : assert(HH C == 0) i21 : f = yonedaExtension' C o21 = 0 o21 : Matrix i22 : assert(target f === Ext^3(M,N)) i23 : assert(f == 0) i24 : D = yonedaExtension f 1 4 o24 = cokernel | a b d e | <-- R <-- R <-- cokernel {2} | d e 0 0 0 0 0 | <-- cokernel | c d e | {2} | -b 0 e 0 0 0 0 | 0 1 2 {2} | a 0 0 e 0 0 0 | 4 {2} | 0 -b -d 0 0 0 0 | {2} | 0 a 0 -d 0 0 0 | {2} | 0 0 a b 0 0 0 | {0} | 0 0 0 0 c d e | 3 o24 : Complex i25 : assert(C != D)