We give an application of this function to create pure free resolutions. A much more general tool for doing this is in the script pureResolution.
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).
If one of the differences $d_{i+1} - d_i$ is equal to 1, then it turns out that one of the maps in the pure resolution is part of the map of complexes directImageComplex k_j, where k_j is a map in this Koszul complex. Here is a simple example, where we produce one of the complexes in the family that included the Eagon-Northcott complex (see for example "Commutative Algebra with a View toward Algebraic Geometry", by D. Eisenbud.)
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(4,params) o5 = {3, 3} | -wy | {3, 3} | wx+vy | {3, 3} | -vx-uy | {3, 3} | ux | 4 1 o5 : Matrix T <--- T |
i6 : D = directImageComplex kn o6 = -4 : 0 <----- 0 : -4 0 -3 : 0 <----- 0 : -3 0 -2 : 0 <----- 0 : -2 0 8 3 -1 : A <-------------------- A : -1 {3} | w 0 0 | {3} | -v -w 0 | {3} | u v 0 | {3} | 0 -u 0 | {3} | 0 w 0 | {3} | 0 -v -w | {3} | 0 u v | {3} | 0 0 -u | 0 : 0 <----- 0 : 0 0 1 : 0 <----- 0 : 1 0 o6 : ChainComplexMap |
The direct image complexes each have only one nonzero term,and so D has only one nonzero component. According to Eisenbud and Schreyer, this is the last map in a pure resolution. Since the dual of a pure resolution is again a resolution, we can simply take the dual of this map and resolve to see the dual of the resolution (or dualize again to see the resolution itself, which is the Eagon-Northcott complex itself in this case.
i7 : m = transpose D_(-1) o7 = {-4} | w -v u 0 0 0 0 0 | {-4} | 0 -w v -u w -v u 0 | {-4} | 0 0 0 0 0 -w v -u | 3 8 o7 : Matrix A <--- A |
i8 : betti res coker m 0 1 2 3 o8 = total: 3 8 6 1 -4: 3 8 6 . -3: . . . 1 o8 : BettiTally |
i9 : (dual oo)[-3] 0 1 2 3 o9 = total: 1 6 8 3 0: 1 . . . 1: . 6 8 3 o9 : BettiTally |