Computing Hilbert Functions

Today, we’ll link the computational thread back to the thread involving Hilbert schemes, by working out how to compute the Hilbert function (and thus polynomial) for any ideal in the ring k[x_0,\ldots,x_n]. The trick involves Groebner bases and flat families, and really ties a lot of threads together so that we can move on to something else (because my attention span is short and there are a lot of cool things to talk about.)

So, given a homogeneous ideal I, we want to determine the Hilbert function of S/I, where S=k[x_0,\ldots,x_n].

Our first order of business is to take a Groebner basis for I, say (g_1,\ldots,g_t). The monomial ordering doesn’t matter here. Now, S/I has the structure of a graded vector space, because we can take any polynomial in S and take the remainder upon dividing by the Groebner basis, and this gives a well defined map that preserved grading, so long as the ideal is homogeneous. In fact, we get that this space has as a basis the set \{x^\alpha|x^\alpha\notin LT(I)\}. Now, this set also gives us a basis for S/LT(I) as a graded vector space, and with the same grading. So the two spaces are isomorphic as graded vector spaces, and so have the same Hilbert function. This says that we only have to worry about ideals generated by monomials. The bigger abstract reason why it is true is that there is a flat family over \mathbb{A}^1 which has V(I) as the fiber over 1 and V(LT(I)) as the fiber over zero, and Hilbert polynomials are constant along flat families. Never lose sight of the fact that what we care about is the polynomial, even though we’re going to successfully compute the function.

Now, we know that 0\to A\to B\to C\to 0 gives a tight relationship between the three Hilbert functions. More specifically, if we look at 0\to S/I\to S/J\to S/K\to 0, with the first homomorphism of degree d, we get that H_{S/I}(t-d)+H_{S/K}(t)=H_{S/J}(t). So what we want to do, for a monomial ideal I, is look at the sequence 0\to S/(I:x)\to S/I\to S/(I,x)\to 0. Now, there’s an unfamiliar bit of notation in there, I:x. What this is is the ideal \{f\in S|xf\in I\}. Roughly this kills an x in anything possible. So (x^2:x)=(x), for instance. And (I,x) just means the ideal I plus the additional generator x.

Pick any variable you want, and look at this sequence. It tells us that H_{S/I}(t)=H_{S/(I:x_i)}(t-1)+H_{S/(I,x_i)}(t). So now we’ll work out an algorithm to compute the Hilbert function, using this equation. Choose a variable which divides some monomial generator of I. Then S/(I,x_i) is a quotient of a polynomial ring in fewer variables than we started with and (I:x_i) has monomial generator of smaller degree in x_i. So this process finishes in finitely many steps, because there are finitely many generators, and so there is a finite maximal degree in each variable and a finite number of variables to kill off. More precisely, after finitely many steps, we have the sum of Hilbert functions of polynomial rings and rings of the form k[x_i]/x_i^\ell for some \ell\in\mathbb{N}. For the polynomial rings, the Hilbert functions are just given by binomial coefficients, and the other option is a Hilbert function which is 1 for finitely many places, and then disappears later.

So this actually directly proves that the Hilbert function is eventually a polynomial, all we have to do is go out far enough that all the k[x_i]/x_i^\ell‘s die, and we’re left with a sum of binomial coefficients, and those are polynomials.

Now, that was rather wordy, so let’s do an example. Let’s take the ideal (x^2y,xy^2) in k[x,y] and compute its Hilbert function. Then we’ll do (x^2y-3yz^2+7z^3)\subset k[x,y,z]. (Try to guess in advance which will be easier.)


So the Hilbert function is H(0)=2, H(1)=3, H(2)=3 and H(n)=2 for n\geq 3. The Hilbert Polynomial, then, is the constant polynomial P(n)=2. That is, it’s just two points on the projective line, the point (1:0) and the point (0:1).

For the second ideal, we choose to compute the initial ideal using lexicographic order with z>x>y. Then the initial ideal is (z^3), and only having one variable to deal with over and over again saves some work.


So now, given any polynomial ideal, we have an algorithm for working out the Hilbert function, and thus the Hilbert polynomial. Before stopping, just a quick aside on the geometric meaning of the ideal quotient. If you have an ideal I and any polynomial f, then V(I:f) will turn out to be the closure of V(I)\setminus V(f). Now, this is unexciting if I is a prime ideal, but if V(I) is reducible, this is a way to let you kill off components that are being difficult. These ideal quotients also let you do a lot of local work without using local rings, but we’ll not get into that right now. Next time we’ll be moving on, I’m not sure to what yet, though…

About Charles Siegel

Charles Siegel is currently a postdoc at Kavli IPMU in Japan. He works on the geometry of the moduli space of curves.
This entry was posted in AG From the Beginning, Algebraic Geometry, Computational Methods. Bookmark the permalink.

1 Response to Computing Hilbert Functions

  1. Bsipal says:


    I think, you are doing a great job.
    In your calculations there is a small problem.
    I think you should not directly write $\binom{t-2}{t-2}=1$ and $\binom{t}{t}=1$ because the first one holds when t>2 and the second one holds t>0. I suggest you to check your result with CoCoA,too.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s