F = pureResolution(A, D)
F = pureResolution(M, D)
F = pureResolution(p, D)
F = pureResolution(p,q,D)
A "pure free resolution of type (d_0,d_1,..,d_n)" is a resolution of a graded CohenMacaulay module M over a polynomial ring such that for each i = 1,..,n, the module of ith 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 EagonNorthcott 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 EagonNorthcott complex (see for example the appendix in "Commutative Algebra with a View toward Algebraic Geometry" by D. Eisenbud.) This way of producing the EagonNorthcott complex was certainly known to George Kempf, who may have invented it.






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

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.


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


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 >= #D1+sum(m_i).(The m_i are the dimensions of the projective spaces from whose product we are projecting.)



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 #D1+sum(m_i) matrix of linear forms defined over a ring with product(m_i+1) * #D1+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.


The object pureResolution is a method function.