next | previous | forward | backward | up | top | index | toc | Macaulay2 website
BGG :: pureResolution

pureResolution -- creates a pure resolution as an iterated direct image

Synopsis

Description

A "pure free resolution of type (d_0,d_1,..,d_n)" is a resolution of a graded Cohen-Macaulay module M over a polynomial ring such that for each i = 1,..,n, the module of i-th syzygies of M is generated by syzygies of degree d_i. Eisenbud and Schreyer constructed such free resolutions in all characteristics and for all degree sequences $d_0 < d_1 < \cdots < d_n$ by pushing forward appropriate twists of a Koszul complex. (The construction was known for the Eagon-Northcott complex since work of Kempf).

The script allows several variations including a sparse version and a generic version.

Here is a simple example, where we produce one of the complexes in the family that included the Eagon-Northcott complex (see for example the appendix in "Commutative Algebra with a View toward Algebraic Geometry" by D. Eisenbud.) This way of producing the Eagon-Northcott complex was certainly known to George Kempf, who may have invented it.

i1 : kk = ZZ/101

o1 = kk

o1 : QuotientRing
i2 : A = kk[u,v,w]

o2 = A

o2 : PolynomialRing
i3 : T = A[x,y]

o3 = T

o3 : PolynomialRing
i4 : params = matrix"ux,uy+vx,vy+wx,wy"

o4 = | ux vx+uy wx+vy wy |

             1       4
o4 : Matrix T  <--- T
i5 : kn = koszul(params)

      1      4      6      4      1
o5 = T  <-- T  <-- T  <-- T  <-- T
                                  
     0      1      2      3      4

o5 : ChainComplex
i6 : directImageComplex kn

             1      6      8      3
o6 = 0  <-- A  <-- A  <-- A  <-- A
                                  
     -1     0      1      2      3

o6 : ChainComplex

If we twist the map kn a little before taking the direct image we get other complexes in a family that also includes the Buchsbaum-Rim complex (see Eisenbud, loc. cit.)

i7 : for d from -1 to 3 do
       (print betti directImageComplex (T^{{d,0}}**kn);print())
       0  1  2 3
total: 4 12 12 4
    1: 4 12 12 4
()
       0 1 2 3
total: 1 6 8 3
    0: 1 . . .
    1: . 6 8 3
()
       0 1 2 3
total: 2 4 4 2
    0: 2 4 . .
    1: . . 4 2
()
       0 1 2 3
total: 3 8 6 1
    0: 3 8 6 .
    1: . . . 1
()
       0  1  2 3
total: 4 12 12 4
    0: 4 12 12 4
()

For more complex examples, we use the function pureResolution, which creates a Koszul complex over a product of projective spaces over a ground ring A and (iteratively) forms the direct image over A. In the following we specify a ground ring A and a degree sequence.

i8 : A = kk[a,b,c]

o8 = A

o8 : PolynomialRing
i9 : betti (pureResolution(A,{1,3,4,6}))

            0  1  2 3
o9 = total: 4 20 20 4
         1: 4  .  . .
         2: . 20 20 .
         3: .  .  . 4

o9 : BettiTally

If one doesn't want to bother creating the ring, it suffices to give the characteristic.

i10 : betti (F = pureResolution(11,{0,2,4}))

             0 1 2
o10 = total: 3 6 3
          0: 3 . .
          1: . 6 .
          2: . . 3

o10 : BettiTally
i11 : describe ring F

      ZZ
o11 = --[a ..a , Degrees => {2:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
      11  0   1                                                  {GRevLex => {2:1}  }
                                                                 {Position => Up    }

With the form pureResolution(M,D) It is possible to specify a matrix M of linear forms in the ground ring A that defines the parameters used in the Koszul complex whose direct image is taken. The matrix M in pureResolution(M,D) should have size product(m_i+1) x q, where the m_i+1 are the successive differences of the entries of D that happen to be >1, and q >= #D-1+sum(m_i).(The m_i are the dimensions of the projective spaces from whose product we are projecting.)

i12 : A = kk[a,b]

o12 = A

o12 : PolynomialRing
i13 : M = random(A^4, A^{4:-1})

o13 = | 24a-36b  -8a-22b  34a+19b  -28a-47b |
      | -30a-29b -29a-24b -47a-39b 38a+2b   |
      | 19a+19b  -38a-16b -18a-13b 16a+22b  |
      | -10a-29b 39a+21b  -43a-15b 45a-34b  |

              4       4
o13 : Matrix A  <--- A
i14 : time betti (F = pureResolution(M,{0,2,4}))
     -- used 0.672045 seconds

             0 1 2
o14 = total: 3 6 3
          0: 3 . .
          1: . 6 .
          2: . . 3

o14 : BettiTally

With the form pureResolution(p,q,D) we can directly create the situation of pureResolution(M,D) where M is generic product(m_i+1) x #D-1+sum(m_i) matrix of linear forms defined over a ring with product(m_i+1) * #D-1+sum(m_i) variables of characteristic p, created by the script. For a given number of variables in A this runs much faster than taking a random matrix M.

i15 : time betti (F = pureResolution(11,4,{0,2,4}))
     -- used 1.00049 seconds

             0 1 2
o15 = total: 3 6 3
          0: 3 . .
          1: . 6 .
          2: . . 3

o15 : BettiTally
i16 : ring F

      ZZ
o16 = --[a ..a  ]
      11  0   15

o16 : PolynomialRing

See also

Ways to use pureResolution :

For the programmer

The object pureResolution is a method function.