Macaulay2 » Documentation
Packages » CompleteIntersectionResolutions :: exteriorExtModule
next | previous | forward | backward | up | index | toc

# exteriorExtModule -- Ext(M,k) or Ext(M,N) as a module over an exterior algebra

- Usage:
    `E = exteriorExtModule(f,M)`
- Inputs:
  - f, a matrix, 1 x c, entries must be homotopic to 0 on F
  - M, a module, annihilated by the elements of ff
  - N, a module, annihilated by the elements of ff
- Outputs:
  - E, a module, Module over an exterior algebra with variables corresponding to elements of f

## Description

If M,N are S-modules annihilated by the elements of the matrix ff = (f_1..f_c), and k is the residue field of S, then the script exteriorExtModule(f,M) returns Ext_S(M, k) as a module over an exterior algebra E = k<e_1,...,e_c>, where the e_i have degree 1. It is computed as the E-dual of exteriorTorModule.

The script exteriorTorModule(f,M,N) returns Ext_S(M,N) as a module over a bigraded ring SE = S<e_1,..,e_c>, where the e_i have degrees {d_i,1}, where d_i is the degree of f_i. The module structure, in either case, is defined by the homotopies for the f_i on the resolution of M, computed by the script makeHomotopies1.The script calls makeModule to compute a (non-minimal) presentation of this module.

    i1 : kk = ZZ/101

    o1 = kk

    o1 : QuotientRing

    i2 : S = kk[a,b,c]

    o2 = S

    o2 : PolynomialRing

    i3 : f = matrix"a4,b4,c4"

    o3 = | a4 b4 c4 |

                 1      3
    o3 : Matrix S  <-- S

    i4 : R = S/ideal f

    o4 = R

    o4 : QuotientRing

    i5 : p = map(R,S)

    o5 = map (R, S, {a, b, c})

    o5 : RingMap R <-- S

    i6 : M = coker map(R^2, R^{3:-1}, {{a,b,c},{b,c,a}})

    o6 = cokernel | a b c |
                  | b c a |

                                2
    o6 : R-module, quotient of R

    i7 : betti (FF =freeResolution( M, LengthLimit =>6))

                0 1 2 3 4  5  6
    o7 = total: 2 3 4 6 9 13 18
             0: 2 3 . . .  .  .
             1: . . 1 . .  .  .
             2: . . 3 3 .  .  .
             3: . . . 3 3  .  .
             4: . . . . 3  3  .
             5: . . . . 3  9  6
             6: . . . . .  .  3
             7: . . . . .  1  9

    o7 : BettiTally

    i8 : MS = prune pushForward(p, coker FF.dd_6);

    i9 : resFld := pushForward(p, coker vars R);

    i10 : T = exteriorTorModule(f,MS);

    i11 : E = exteriorExtModule(f,MS);

    i12 : hf(-4..0,E)

    o12 = {0, 9, 29, 33, 13}

    o12 : List

    i13 : betti freeResolution MS

                  0  1  2 3
    o13 = total: 13 33 29 9
              9:  3  .  . .
             10:  9  6  . .
             11:  .  3  . .
             12:  1 15  . .
             13:  .  9  8 .
             14:  .  .  6 .
             15:  .  . 12 .
             16:  .  .  3 3
             17:  .  .  . 3
             18:  .  .  . 3

    o13 : BettiTally

    i14 : betti freeResolution (PE = prune E, LengthLimit => 6)

                  0  1  2  3  4   5   6
    o14 = total: 16 13 25 49 81 121 169
             -3:  9  4  3  3  3   3   3
             -2:  6  3  .  .  .   .   .
             -1:  .  .  7 18 33  52  75
              0:  1  6 15 28 45  66  91

    o14 : BettiTally

    i15 : betti freeResolution (PT = prune T, LengthLimit => 6)

                  0  1  2   3   4   5   6
    o15 = total: 31 55 87 127 175 231 295
              0: 13 24 39  58  81 108 139
              1: 18 31 48  69  94 123 156

    o15 : BettiTally

    i16 : E1 = prune exteriorExtModule(f, MS, resFld);

    i17 : ring E1

    o17 = kk[X ..X , e ..e ]
              0   2   0   2

    o17 : PolynomialRing, 3 skew commutative variable(s)

    i18 : exRing = kk[e_0,e_1,e_2, SkewCommutative =>true]

    o18 = exRing

    o18 : PolynomialRing, 3 skew commutative variable(s)

We can also construct the exteriorExtModule as a bigraded module, over a ring SE that has both polynomial variables like S and exterior variables like E. The polynomial variables have degrees {1,0}. The exterior variables have degrees {deg ff_i, 1}.

    i19 : E1 = prune exteriorExtModule(f, MS, resFld);

    i20 : ring E1

    o20 = kk[X ..X , e ..e ]
              0   2   0   2

    o20 : PolynomialRing, 3 skew commutative variable(s)

    i21 : exRing = kk[e_0,e_1,e_2, SkewCommutative =>true]

    o21 = exRing

    o21 : PolynomialRing, 3 skew commutative variable(s)

To see that this is really the same module, with a more complex grading, we can bring it over to a pure exterior algebra. Note that the necessary map of rings must contain a DegreeMap option. In general we could only take the degrees of the generators of the exterior algebra to be the gcd of the deg ff_i ; in the example above this is 1.

    i22 : q = map(exRing, ring E1, {3:0,e_0,e_1,e_2}, DegreeMap => d -> {d_1})

    o22 = map (exRing, kk[X ..X , e ..e ], {0, 0, 0, e , e , e })
                           0   2   0   2              0   1   2

    o22 : RingMap exRing <-- kk[X ..X , e ..e ]
                                 0   2   0   2

    i23 : E2 = coker q presentation E1;

    i24 : hf(-5..5,E2) == hf(-5..5,E)

    o24 = true

## See also

- exteriorTorModule -- Tor as a module over an exterior algebra or bigraded algebra
- makeModule -- makes a Module out of a collection of modules and maps

## Ways to use exteriorExtModule:

- `exteriorExtModule(Matrix,Module)`
- `exteriorExtModule(Matrix,Module,Module)`

## For the programmer

The object exteriorExtModule is a method function.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/CompleteIntersectionResolutions.m2:4263:0.