The Hilbert polynomial of a smooth projective toric variety $X$ is the Euler characteristic of $OO_X(i_0,i_1,...,i_r)$ where $r$ is the rank of the Picard group of $X$ and $i_0,i_1,...,i_r$ are formal variables. The Hilbert polynomial agrees with the Hilbert function when evaluated at any point in the nef cone.
On projective space, one recovers the standard Hilbert polynomial.
i1 : PP2 = toricProjectiveSpace 2; |
i2 : h0 = hilbertPolynomial PP2
1 2 3
o2 = -i + -i + 1
2 0 2 0
o2 : QQ[i ]
0
|
i3 : factor h0
1
o3 = (i + 1)(i + 2)(-)
0 0 2
o3 : Expression of class Product
|
i4 : h1 = hilbertPolynomial (ring PP2, Projective => false)
1 2 3
o4 = -i + -i + 1
2 2
o4 : QQ[i]
|
i5 : assert (h0 === sub(h1, (ring h1)_0 => (ring h0)_0)) |
i6 : PP3 = toricProjectiveSpace 3; |
i7 : h2 = hilbertPolynomial PP3
1 3 2 11
o7 = -i + i + --i + 1
6 0 0 6 0
o7 : QQ[i ]
0
|
i8 : factor h2
1
o8 = (i + 1)(i + 2)(i + 3)(-)
0 0 0 6
o8 : Expression of class Product
|
i9 : h3 = hilbertPolynomial (ring PP3, Projective => false)
1 3 2 11
o9 = -i + i + --i + 1
6 6
o9 : QQ[i]
|
i10 : assert (h2 === sub(h3, (ring h3)_0 => (ring h2)_0)) |
The Hilbert polynomial of a product of normal toric varieties is simply the product of the Hilbert polynomials of the factors.
i11 : X = toricProjectiveSpace (2) ** toricProjectiveSpace (3); |
i12 : h3 = hilbertPolynomial X
1 2 3 1 2 2 1 3 11 2 3 2 1 3 1 2 11 2 3 11
o12 = --i i + -i i + -i i + --i i + -i i + -i + -i + --i i + i + -i + --i + 1
12 0 1 2 0 1 4 0 1 12 0 1 2 0 1 6 1 2 0 4 0 1 1 2 0 6 1
o12 : QQ[i ..i ]
0 1
|
i13 : factor h3
1
o13 = (i + 1)(i + 2)(i + 3)(i + 1)(i + 2)(--)
1 1 1 0 0 12
o13 : Expression of class Product
|
Example 2.9 in [Diane Maclagan and Gregory G. Smith, Uniform bounds on multigraded regularity, J. Algebraic Geom. 14 (2005), 137-164] describes the Hilbert polynomials on a Hirzebruch surface.
i14 : a = random (9) o14 = 8 |
i15 : FFa = hirzebruchSurface a; |
i16 : h4 = hilbertPolynomial FFa
2
o16 = i i + 4i + i + 5i + 1
0 1 1 0 1
o16 : QQ[i ..i ]
0 1
|
i17 : R = ring h4; |
i18 : assert (h4 == R_0 * R_1 + (a/2)*R_1^2 + R_0 + ((a+2)/2)*R_1 + 1) |
The Hilbert polynomial is computed using the Hirzebruch-Riemann-Roch Theorem. In particular, this method depends on the Schubert2 package.