Construct a module P and a short exact sequence E: 0→N(d) →P →M →0, corresponding to a chosen element e of Ext1(M,N)d. Such e has to belong to a previously computed module ExtDegreeLimit(1,M,N,d). The maps in the s.e.s. above are induced from the maps between the corresponding presentations.
REMARK: After pruning a ExtDegreeLimit module, one cannot use extension directly. Instead, first apply the pruning map (see Example below).
Example 1: an Ext module of finite length, concentrated in degrees 0, 1, 2.
i1 : kk=ZZ/10007; |
i2 : R=kk[y_0..y_2]; |
i3 : M=(prune coker random(R^{2:-2},R^{1:-3}))**R^{1:2};
|
i4 : N=(prune coker random(R^{1:-1,1:-2,1:-3},R^{3:-4}))**R^{1:0};
|
i5 : Ext1=Ext^1(M,N); |
i6 : basis(-1,Ext1)==0, basis(3,Ext1)==0 o6 = (true, true) o6 : Sequence |
i7 : E=ExtDegreeLimit(1,M,N,1); |
i8 : e=(basis(1,E))_{0}
o8 = {0} | y_2 |
{1} | 0 |
o8 : Matrix
|
i9 : betti extension(e)
1 2 3
o9 = total: 2 5 3
-3: . . 1
-2: . 3 1
-1: 2 1 1
0: . 1 .
o9 : BettiTally
|
Example 2: an Ext module of infinite length over a quotient ring.
i10 : kk=ZZ/10007; |
i11 : S=kk[y_0..y_2]; |
i12 : R=S/first flatten entries random(S^{1:3},S^1);
|
i13 : M=(prune coker random(R^{2:-1,2:-2,2:-3},R^{6:-4}))**R^{1:0};
|
i14 : N=(prune coker random(R^{4:-2},R^{2:-3}))**R^{2:2};
|
i15 : E=ExtDegreeLimit(1,M,N,-2); |
i16 : e=(basis(-2,E))_{0};
o16 : Matrix
|
i17 : betti extension(e)
1 2 3
o17 = total: 6 14 8
-1: . 2 8
0: 2 10 .
1: 2 2 .
2: 2 . .
o17 : BettiTally
|
i18 : f=(basis(-3,E))_{0};
o18 : Matrix
|
i19 : betti extension(f)
1 2 3
o19 = total: 6 14 8
-1: . 2 .
0: 2 2 8
1: 2 10 .
2: 2 . .
o19 : BettiTally
|
After pruning an ExtDegreeLimit module, one cannot use extension directly. Instead, first apply the pruning map.
i20 : E'=prune ExtDegreeLimit(1,M,N,0); |
i21 : e'=E'.cache.pruningMap*(basis(0,E'))_{2};
o21 : Matrix
|
i22 : betti extension(e')
1 2 3
o22 = total: 6 14 8
-3: . . 8
-2: . 8 .
-1: . 2 .
0: 2 2 .
1: 2 2 .
2: 2 . .
o22 : BettiTally
|