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 |