Hodge numbers for Hilbert squares and Hilbert cubes
The functionality outlined below, and much more, is implemented in Hodge diamond cutter, which can be used in Sage.
If you use it for your research, please cite it using .
In my ongoing series of posts on implementations to Hodge numbers for interesting smooth projective varieties we have now arrived at Hilbert squares and Hilbert cubes. In Hodge numbers for
As before, we'll denote the Hodge polynomial of a smooth projective variety
Then the game we are playing is to express the Hodge polynomial of
Hilbert squares
The Hodge numbers for the Hilbert square can be considered classical, using the description of
Hilbert cubes
For Hilbert cubes the description is more complicated, and the resulting formula can be found on page 507 of On the cohomology of Hilbert schemes of points. Without further ado, here it is (with intentional overflow to showcase how
Implementation in Sage
No post about Hodge numbers is complete without a Sage implementation (it is the sole purpose of these posts), so here goes. It becomes clear that constructing the Hodge polynomial for these higher-dimensional varieties is becoming quite cumbersome in non-trivial cases, so this is where my little library of Hodge diamond related tools will come in handy. Stay tuned for that!
xxxxxxxxxx
R.<x, y> = PolynomialRing(ZZ)
# quintic 3-fold
X = x^3*y^3 + x^2*y^2 + x^3 + 101*x^2*y + 101*x*y^2 + y^3 + x*y + 1
def hilbtwo(X):
d = X.degree() / 2
return R(1/2 * (X^2 + X(-x^2, -y^2)) + sum([(x*y)^i * X for i in range(1, d)]))
def hilbthree(X):
d = X.degree() / 2
return R(1/6 * X^3 + 1/2 * X * X(-x^2, -y^2) + 1/3 * X(x^3, y^3) + sum([X^2 * (x*y)^i for i in range(1, d)]) + sum([X * (x*y)^(i+j) for i in range(1, d) for j in range(i, d)]))
print(hilbtwo(X))
print(hilbthree(X))