next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
ExtensionsAndTorsWithLimitedDegree :: extension

extension -- Construct the Yoneda extension corresponding to an element in Ext^1(M,N)_deg for deg<=d

Synopsis

Description

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

Ways to use extension :