-- -*- M2-comint -*- hash: 15721266996003131158

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)

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)

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

i25 : 
