For any triple $(L, M, N)$ of $R$-modules, the Yoneda product is a pairing between $\operatorname{Ext}$-modules
$\phantom{WWWW} \operatorname{Ext}_R^d(L,M) \otimes \operatorname{Ext}_R^e(M,N) \to \operatorname{Ext}_R^{d+e}(L,N). $
Given $D = \operatorname{Ext}_R^d(L,M)$ and $E = \operatorname{Ext}_R^e(M,N)$, this method returns this pairing. To compute the product of a pair of elements, see yonedaProduct(Matrix,Matrix).
Specifically, for an element of $\operatorname{Ext}_R^{e}(M,N)$, thought of as an extension
$\phantom{WWWW} 0 \leftarrow M \leftarrow F_{0} \leftarrow F_{1} \leftarrow \dotsb \leftarrow F_{e-2} \leftarrow P \leftarrow N \leftarrow 0, $
and for an element of $\operatorname{Ext}_R^{d}(L,M)$, thought of as an extension
$\phantom{WWWW} 0 \leftarrow L \leftarrow G_{0} \leftarrow G_1 \leftarrow \dotsb \leftarrow G_{d-2} \leftarrow Q \leftarrow M \leftarrow 0, $
the Yoneda product corresponds to
$\phantom{WWWW} 0 \leftarrow L \leftarrow G_{0} \leftarrow G_{1} \leftarrow \dotsb \leftarrow Q \leftarrow F_{0} \leftarrow F_{1} \leftarrow \dotsb \leftarrow P \leftarrow N \leftarrow 0, $
where the map from $F_0$ to $Q$ factors through $M$. For more information about extensions, see yonedaExtension.
Alternatively, the module $\operatorname{Ext}^d_R(L,M)$ is constructed from a free resolution $G$ of $L$,
$\phantom{WWWW} 0 \leftarrow L \leftarrow G_0 \leftarrow G_1 \leftarrow \dotsb \leftarrow G_d \leftarrow \dotsb, $
by taking the homology of the complex $\operatorname{Hom}_R(G, M)$. An element of $\operatorname{Ext}^d_R(L,M)$ is represented by an element of $\operatorname{Hom}_R(G_d, M)$. This map extends to a complex map having degree $-d$ from $G$ to the free resolution $F$ of $M$. The Yoneda product is the composition of the map of chain complexes from $G$ to $F$ with the map of chain complexes having degree $-e$ from $F$ to a free resolution of $N$. For more information about these maps, see yonedaMap.
i1 : S = ZZ/101[x_0..x_3];
|
i2 : I = borel monomialIdeal(x_1*x_2)
2 2
o2 = monomialIdeal (x , x x , x , x x , x x )
0 0 1 1 0 2 1 2
o2 : MonomialIdeal of S
|
i3 : E1 = Ext^1(S^1/I, S^1/I)
o3 = subquotient ({-2} | x_1 x_0 0 0 0 0 0 0 0 0 0 0 |, {-2} | 0 x_1x_2 x_0x_2 x_1^2 x_0x_1 x_0^2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |)
{-2} | 0 0 x_1 x_0 0 0 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 x_1x_2 x_0x_2 x_1^2 x_0x_1 x_0^2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 x_1 x_0 0 0 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 x_1x_2 x_0x_2 x_1^2 x_0x_1 x_0^2 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 x_2 x_1 x_0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_1x_2 x_0x_2 x_1^2 x_0x_1 x_0^2 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 x_2 x_1 x_0 | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_1x_2 x_0x_2 x_1^2 x_0x_1 x_0^2 |
5
o3 : S-module, subquotient of S
|
i4 : h = yonedaProduct(E1, E1)
o4 = {-2} | 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0
{-2} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0
{-2} | 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 1 0 0
{-2} | 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 1 0
{-2} | 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
{-2} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 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 1 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 0 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 0 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 0 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 0 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 0 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 0 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 0 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 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 -1 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 -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 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 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 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 1 0 0 0 0 0 0 0 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 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 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 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 -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 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 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 1 0 0 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 0 0 0 0 0 0
0 0 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 0 0 0
0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 -1 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 0 0 0 0 0 0 -1 0 1 0 0 0 0 -1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 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 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 1 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 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 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 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 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 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 -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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 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 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 -1 0 0 0 0 0 0 -1 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 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 -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 0 0 0 0 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 0 0 0 0 0 0 -1 0 1 0 0 0 0 -1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 |
0 0 0 0 0 0 0 -1 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 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 -1 0 0 0 0 0 0 0 0 |
o4 : Matrix
|
i5 : assert isWellDefined h
|
i6 : assert(target h == Ext^2(S^1/I, S^1/I))
|
i7 : coker h == 0
o7 = true
|
i8 : R = S/(x_0*x_1, x_2*x_3);
|
i9 : E1 = Ext^1(R^1/(x_0, x_2), R^1/(x_0, x_2, x_3))
o9 = subquotient ({-1} | 0 x_3 x_2 x_0 |, {-1} | 0 x_3 x_2 x_0 0 0 0 |)
{-1} | 1 0 0 0 | {-1} | 0 0 0 0 x_3 x_2 x_0 |
2
o9 : R-module, subquotient of R
|
i10 : E2 = Ext^2(R^1/(x_0, x_2, x_3), R^1/(x_0, x_1, x_2, x_3))
o10 = cokernel {-2} | 0 0 0 x_3 x_2 x_1 x_0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 x_3 x_2 x_1 x_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 x_3 x_2 x_1 x_0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_3 x_2 x_1 x_0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_3 x_2 x_1 x_0 |
5
o10 : R-module, quotient of R
|
i11 : E3 = Ext^3(R^1/(x_0, x_2), R^1/(x_0, x_1, x_2, x_3))
o11 = cokernel {-3} | 0 0 0 x_3 x_2 x_1 x_0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-3} | 0 0 0 0 0 0 0 x_3 x_2 x_1 x_0 0 0 0 0 0 0 0 0 |
{-3} | 0 0 0 0 0 0 0 0 0 0 0 x_3 x_2 x_1 x_0 0 0 0 0 |
{-3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_3 x_2 x_1 x_0 |
4
o11 : R-module, quotient of R
|
i12 : h = yonedaProduct(E1, E2)
o12 = {-3} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-3} | 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-3} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 |
o12 : Matrix
|
i13 : assert isWellDefined h
|
i14 : assert(target h == E3)
|
i15 : prune coker h
o15 = cokernel {-3} | x_3 x_2 x_1 x_0 |
1
o15 : R-module, quotient of R
|