Let M be a module over a polynomial ring P = kk[x_{0,0}..x_{0,a_0}..x_{n-1,0}..x_{n-1,a_{n-1}}] graded with degree x_{i,j} = e_i, the i-th unit vector. If M = P^{m} is free, then the Hilbert polynomial is the product of the shifted binomial coefficients binomial(a_i+m_i+t,a_i). In general, the routine computes a free resolution of the coker of the initial matrix of a presentation matrix, and then makes an alternating sum of the Hilbert polynomials of the free modules in the resolution. The polynomial returned has variables s_i (the default) or name_i if VariableName => "name" is given.
i1 : P = productOfProjectiveSpaces{1,2} o1 = P o1 : PolynomialRing |
i2 : M1 = P^1 1 o2 = P o2 : P-module, free |
i3 : multiHilbertPolynomial M1 1 2 3 1 2 3 o3 = -s s + -s s + -s + s + -s + 1 2 0 1 2 0 1 2 1 0 2 1 o3 : QQ[s ..s ] 0 1 |
Because of the computation of a free resolution, this might be slow on large examples.
The object multiHilbertPolynomial is a method function with options.