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

## Synopsis

• Usage:
F = pureResolution(A, D)
F = pureResolution(M, D)
F = pureResolution(p, D)
F = pureResolution(p,q,D)
• Inputs:
• A, a ring,
• D, a list,
• M, , D is a strictly increasing list of integers, the degree sequence A is a ring with at least #D-1 variables, the base ring. The pure resolution created is the sparse one defined in the paper of Eisenbud-Schreyer. If M, a matrix over A, is given, then M is used instead to construct the resolution (see below). If one integer p is given, the program constructs a base ring with the right number of variables for the sparse example. If two integers p,q are given, the program constructs a base ring of characteristic p and makes a generic system of parameters with q elements by taking a generic matrix for M.
• Outputs:
• F, , F will be a pure resolution over A of a module of finite length over A, with the desired degree sequence. If there are more than #D-1 variables, then a longer resolution will be produced, padding the degree sequence at the end with consecutive integers.

## 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}] 11 0 1

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 1.37212 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.53652 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