Hilbert series
Definition
Let \(S\) be a numerical semigroup and \(x\) an indeterminate. It is defined the Hilbert series of \(S\) as
\[ H_S(x) = \sum_{s \in S} x^s. \]
The Hilbert series of a numerical semigroup is also known as the generating function of a numerical semigroup. If \(\{n_1, n_2, \ldots, n_e\}\) is the minimal set of generators of \(S\), \(n \in S\), \(\mathcal{F}(n)\) denotes the shaded set of \(n\), and
\[ \chi(\mathcal{F}(n)) = \sum_{L \in \mathcal{F}(n)} (-1)^{|L|}, \]
is the Euler characteristic, it can be proven that
\[ H_S(x)(1 - x^{n_1})\cdots(1-x^{n_e}) = \sum_{s \in S} \chi(\mathcal{F}(s))x^s, \]
and consequently,
\[ H_S(x) = \frac{\sum_{s \in S} \chi(\mathcal{F}(s))x^s}{(1 - x^{n_1})\cdots(1-x^{n_e})}. \]
Examples
\(\circ\) Let \(S = \langle 2, 5 \rangle = \{0, 2, 4, \rightarrow\}\). Let us compute the Hilbert series of \(S\) from the Euler characteristic. We know that \(F(S) = 3\), where \(F(S)\) denotes the Frobenius number of \(S\), then if \(s > F(S) + 2 + 5 = 10\), \(\mathcal{F}(s)\) contains \(A = \{a,b\}\) and therefore contains all the proper subsets of \(A\), which implies \(\chi(\mathcal{F}(s)) = 0\). The candidates for non-zero Euler characteristic are \(\{0, 2, 4, 5,6,7,8,9,10\}\). If we compute the Euler characteristic of each candidate, we have
\[ \chi(\mathcal{F}(0)) = 1, \ \ \ \chi(\mathcal{F}(10)) = -1, \]
\[ \chi(\mathcal{F}(s)) = 0 \hspace{0.3cm} \text{for } s = 2,4,5,6,7,8,9. \]
Finally, the Hilbert series of \(S\) is
\[ H_S(x) = \frac{1 - x^{10}}{(1 - x^2)(1-x^5)}. \]
Examples with GAP
The following examples are made with the package NumericalSgps in GAP.
\(\diamond\) Let \(S = \langle 7, 10, 13, 15, 19 \rangle\), in GAP:
gap> S := NumericalSemigroup(7, 10, 13, 15, 19);
<Numerical semigroup with 5 generators>
Given an indeterminate \(x\) and a numerical semigroup \(S\), the function HilbertSeriesOfNumericalSemigroup
returns the Hilbert series of \(S\) with indeterminate \(x\).
gap> x := X(Rationals, "x");
x
gap> HilbertSeriesOfNumericalSemigroup(S,x);
x^19-x^18+x^17-x^16+x^13-x^11+x^10-x^8+x^7-x+1)/(-x+1) (
Moreover, given a numerical semigroup \(S\) and a variable \(x\) (or a value \(x = s \in \mathbb{Z}\)), the function NumericalSemigroupPolynomial
returns \((1-x)H_S(x)\).
gap> NumericalSemigroupPolynomial(S, x);
x^19-x^18+x^17-x^16+x^13-x^11+x^10-x^8+x^7-x+1
gap> NumericalSemigroupPolynomial(S, 2);
334719
\(\diamond\) Let \(S = \langle 30, 35, 59, 63, 74 \rangle\), in GAP:
gap> S := NumericalSemigroup(30, 35, 59, 63, 74);
<Numerical semigroup with 5 generators>
Given a polynomial \(f\), the function IsNumericalSemigroupPolynomial
returns true if there exists a numerical semigroup \(S\) such that \(f = (1-x)H_S(x)\).
gap> x := X(Rationals, "x");
x
gap> f := NumericalSemigroupPolynomial(S, x);
x^207-x^206+x^202-x^201+x^177-x^176+x^174-x^173+x^172-x^171+x^167-x^166+x^163-x^162+x^152-x^151+x\
^148-x^145+x^144-x^141+x^139-x^138+x^137-x^136+x^133-x^131+x^128-x^127+x^122-x^121+x^118-x^110+x^\
109-x^106+x^104-x^101+x^100-x^99+x^98-x^96+x^93-x^91+x^89-x^75+x^74-x^71+x^70-x^66+x^65-x^64+x^63\
-x^61+x^59-x^36+x^35-x^31+x^30-x+1
gap> IsNumericalSemigroupPolynomial(f);
true
Furthermore, given a polynomial \(f\) associated to a numerical semigroup \(S\), the function NumericalSemigroupFromNumericalSemigroupPolynomial
returns the numerical semigroup \(S\) such that \(f = (1-x)H_S(x)\).
gap> S = NumericalSemigroupFromNumericalSemigroupPolynomial(f);
true
References
https://gap-packages.github.io/
numericalsgps
.