If $\alpha$ is the degree of the variable d, then M is supported in degrees that are multiples of $\alpha$. The part of M sitting in degree $d \cdot \alpha$ matches X_{-d}. If $\alpha = -1$, then we have X_d = M_d for all d.
i1 : R = QQ[x, y, z]; M = coker vars R; C = res M -- a Koszul complex
1 3 3 1
o3 = R <-- R <-- R <-- R <-- 0
0 1 2 3 4
o3 : ChainComplex
|
i4 : Q = R[d, Degrees => {-1}] / ideal(d^2); m = chainModule(Q, C)
o5 = cokernel {3, 3} | d 0 0 0 0 0 0 0 |
{2, 2} | -z d 0 0 0 0 0 0 |
{2, 2} | y 0 d 0 0 0 0 0 |
{2, 2} | -x 0 0 d 0 0 0 0 |
{1, 1} | 0 y z 0 d 0 0 0 |
{1, 1} | 0 -x 0 z 0 d 0 0 |
{1, 1} | 0 0 -x -y 0 0 d 0 |
{0, 0} | 0 0 0 0 -x -y -z d |
8
o5 : Q-module, quotient of Q
|
i6 : (F, f) = flattenRing Q; |
i7 : matrix table(10, 10, (i, j) -> hilbertFunction({j,i}, f ** m))
o7 = | 1 0 0 0 0 0 0 0 0 0 |
| 3 3 0 0 0 0 0 0 0 0 |
| 6 9 3 0 0 0 0 0 0 0 |
| 10 18 9 1 0 0 0 0 0 0 |
| 15 30 18 3 0 0 0 0 0 0 |
| 21 45 30 6 0 0 0 0 0 0 |
| 28 63 45 10 0 0 0 0 0 0 |
| 36 84 63 15 0 0 0 0 0 0 |
| 45 108 84 21 0 0 0 0 0 0 |
| 55 135 108 28 0 0 0 0 0 0 |
10 10
o7 : Matrix ZZ <--- ZZ
|
i8 : matrix table(10, 10, (i, j) -> hilbertFunction(i, C_j))
o8 = | 1 0 0 0 0 0 0 0 0 0 |
| 3 3 0 0 0 0 0 0 0 0 |
| 6 9 3 0 0 0 0 0 0 0 |
| 10 18 9 1 0 0 0 0 0 0 |
| 15 30 18 3 0 0 0 0 0 0 |
| 21 45 30 6 0 0 0 0 0 0 |
| 28 63 45 10 0 0 0 0 0 0 |
| 36 84 63 15 0 0 0 0 0 0 |
| 45 108 84 21 0 0 0 0 0 0 |
| 55 135 108 28 0 0 0 0 0 0 |
10 10
o8 : Matrix ZZ <--- ZZ
|
The object chainModule is a method function.