We continue to work over R = k[S, T]. Let M be a graded R-module. The shift or twist of M by an integer e is the graded R-module M(e) defined by the rules

• M(e) = M as an abstract R-module
• the degree n part of M(e) is M(e)_n = M_{n + e}

In other words we just shift the grading but don't change anything else. Note that

H_{M(e)}(n) = H_M(e + n)

for the Hilbert functions. A special case is R(e) which is the R-module which has R_{e + n} in degree n. So the Hilbert polynomial of R(0) = R is n + 1 and the Hilbert polynomial of R(e) is n + e + 1. Given a homogeneous polynomial G ∈ R of degree d multiplication by G gives a graded R-module map

R(-d) — G —> R

which does not shift degrees.

A free graded module is a finitely generated graded R-module of the form

M = R(e_1) ⊕ R(e_2) ⊕ … ⊕ R(e_r)

Note that the Hilbert polynomial of M is rn + e_1 + … + e_r + r. We will always order the e_i such that

e_1 ≤ e_2 ≤ … ≤ e_r

The integers e_1, …, e_r themselves are invariants of the isomorphism class of M as a graded R-module. We will say that e_1, …, e_r is the splitting type of M. Namely, if M = R(e_1) ⊕ R(e_2) ⊕ … ⊕ R(e_r), then M has a minimal set of generators

x_i = (0, …, 0, 1, 0, …, 0), i = 1, …, r

sitting in degree -e_i. Computationally, still assuming M is a free graded module, you would find e_1, …, e_r as follows:

• Find n small enough such that M_n = 0
• Increase n till you find the first n such that M_n is nonzero
• Compute r_n = dim(M_n) and set e_1 = … = e_{r_n} = -n (note - sign)
• Divide M by the submodule R ⋅ M_n and go back to the first step.

Dividing by a submodule is tricky. An alternative is to observe that the Hilbert function of M uniquely determines the integers e_1, …, e_r.

Exercise 32: Explain an algorithm that finds the splitting type of a graded free module M over R in terms of its Hilbert function.

Exercise 33 (optional): Show that the kernel of a map of graded free modules over R is graded free over R. 