Page 1 of 1

Can the H_STAR_VECTOR be computed for rational polytopes?

Posted: 16 Aug 2016, 02:20
by done-with-fish
This wikipedia entry

https://en.wikipedia.org/wiki/Ehrhart_p ... _polytopes

defines the h_star polynomial of a rational polytope. I have the following example:

Code: Select all

polytope > $A = new Matrix<Rational>([[1,0,0],[1,0,2],[1,1,1],[1,3/2,0]]); polytope > $p = new Polytope(POINTS => $A); polytope > print $p -> VERTICES; 1 0 0 1 0 2 1 1 1 1 3/2 0 polytope > print $p -> H_STAR_VECTOR; 1 3 3
However, computing the h_star vector by hand gives

Code: Select all

3*t^4 + 9*t^3 + 10*t^2 + 5*t + 1
Is this a bug or am I doing something wrong?

Re: Can the H_STAR_VECTOR be computed for rational polytopes?

Posted: 18 Aug 2016, 16:33
by blorenz
Hello,

First, sorry for the delay. As far as I know, the notion of \( h^* \)-vectors for non-integral polytopes is not really well established as there is no canonical choice for the denominator of the Hilbert series. In hindsight we probably should have restricted this property to lattice polytopes.
In the non-integral case it is best to work with directly the property HILBERT_SERIES.

Our choice is derived from our interface to libnormaliz, more precisely, it is the first variant of the numerator of the Hilbert series as mentioned in Section 2.5 of the normaliz manual.


To compute the coefficients according to the wikipedia page you could do the following (continuing with your example):

Code: Select all

$den = lcm(primitive($p->VERTICES)->col(0)); $hs = new RationalFunction($p->HILBERT_SERIES); $hs *= 1-new UniMonomial(new Int($den)) foreach (1..$p->CONE_DIM); print numerator($hs); 3*x^4 + 9*x^3 + 10*x^2 + 5*x + 1
Best,
Benjamin

PS: We will also make some improvements for the property H_STAR_VECTOR (at least concerning the documentation) for the next major release.