# hilbertPolynomial(NormalToricVariety) -- compute the multivariate Hilbert polynomial

## Description

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 o12 = --i i + -i i + -i i + --i i + -i i + -i + -i + --i i + i + -i 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 ----------------------------------------------------------------------- 11 + --i + 1 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.