E = eagon(R,b)
eagon(R,b) computes the first b columns of the Eagon double complex Y^*_* of R, and caches them in a HashTable of class EagonData in of R.cache.EagonData. (The command eagon(R,-1) removes this.)
Following Gulliksen-Levin we think of Y^n_* as the n-th column, and Y^*_i as the i-th row. The columns Y^n are not acyclic. The i-th row is a resolution of the i-th module of boundaries in the Koszul complex K of the variables of R; in particular, the "Eagon Resolution" is the 0-th row,
Y^b_0 \to...\to Y^1_0 \to Y^0_0.
Let X_i be the free module R**H_i(K), which is also the R**F_i, where F is a minimal free resolution of R as a module over the polynomial ring on the same set of variables.
We count X_i as having homological degree i+1. With this convention, Y^*_0 has the form K\otimes T(F'), where T denotes the tensor algebra and F' is the F_1++F_2++... .
The module Y^n_i = Eagon#{0,n,i} is described in Gulliksen-Levin as: Y^0 = koszul vars R Y^{n+1}_0 = Y^n_1; and for i>0, Y^{n+1}_i = Y^n_{i+1} ++ Y^n_0**X_i
Note that Y^n_i == 0 for i>1+length koszul vars R - n,
The i-th homology of Y^n_* is H_i(Y^n) = H_0(Y^n_*)**X_i (proved in Gulliksen-Levin). Part of the inductive construction will be a map inducing this isomorphism
alpha^n_i = eagonBeta^n_i + dHor^n_0**1: Y^n_0**X_i \to Y^{n-1}_{i+1} ++ Y^{n-1}_0**X_i = Y^n
Assume that the differential of Y^n and the maps dVert^n and alpha^n are known. We take
dHor^{n+1}_0: Y^{n+1}_0 = Y^n_1 -> Y^n_0 to be dVert^n_1.
The remaining horizontal differentials dHor^{n+1}_i: Y^{n+1} \to Y^n have source and target as follows:
Y^{n+1}_i = Y^n_{i+1} ++ Y^n_0**X_i -> Y^n_i = Y^{n-1}_{i+1} ++ Y^{n-1}_0**X_i.
We take dHor^{n+1}_i to be the sum of two maps:
dVert^n_{i+1} Y^n_{i+1} -> Y^n_i ++ Y^{n-1}_0**X_i.
and alpha^{n+1}_i = eagonBeta^{n+1}_i + dHor^n_0**1: Y^n_0**X_i \to Y^n_i ++ Y^{n-1}_0**X(i).
It remains to define eagonBeta^{n+1}_i; we take this to be the negative of
a lifting along the map from Y^{n+1}_{i-1} \subset Y^n_i to Y^n_{i-1} of the composite
dVert^{n+1}_{i-1} * (dHor^n_0 ** X_i): Y^n_0**X_i -> Y^{n-1}_0.
|
|
|
|
|
We can see the vertical and horizontal strands, and the eagonBeta maps
|
|
|
|
|
With the default option CompressBeta => true, only a subset of the components of Y^{n+1}_{i-1} are used. To see the effect of CompressBeta => true, consider:
|
|
|
|
|
|
There are also ways to investigate the components of dVert, dHor, and eagonBeta; see picture, DisplayBlocks, and mapComponent.
The object eagon is a method function with options.
The source of this document is in EagonResolution.m2:832:0.