Cyclotomic numerical semigroup
Definition
Let \(S\) be a numerical semigroup with Hilbert series \(H_S(x)\). It is said that \(S\) is cyclotomic if the polynomial associated to \(S\), \(f_S = (1-x)H_S(x)\), is a Kronecker polynomial, that is, a monic polynomial with integer coefficients having all its roots in the unit circumference, or equivalently, a product of cyclotomic polynomials.
Examples
\(\circ\) Let \(S = \langle 4, 10, 15 \rangle\). It is well known that if \(S\) is a numerical semigroup minimally generated by \(P = \{n_1, \ldots, n_e\}\) and \(\chi\) is the Euler characteristic, then
\[ H_S(x) = \frac{\sum_{s \in S} \chi(\mathcal{F}(s))x^s}{(1 - x^{n_1})\cdots(1-x^{n_e})}, \]
where \(\mathcal{F}(s)\) is the shaded set of \(s\) in \(S\). In this example, \(S\) is minimally generated by \(P = \{4, 10, 15\}\) and if \(s > 29\), then \(\mathcal{F}(s) = 0\), where it is deduced that
\[ (1-x)H_S(x) = x^{22}-x^{21}+x^{18}-x^{17}+x^{14}-x^{13}+x^{12}-x^{11} \]
\[ +x^{10}-x^9+x^8-x^5+x^4-x+1, \]
and all its roots are in the unit circumference, concluding that \(S\) is cyclotomic.
Examples with GAP
The following example is made with the package NumericalSgps in GAP.
\(\diamond\) Let \(S = \langle 12, 44, 70, 85 \rangle\), in GAP:
gap> S := NumericalSemigroup(12, 44, 70, 85);
<Numerical semigroup with 4 generators>
Given a numerical semigroup \(S\), the function IsCyclotomicNumericalSemigroup
returns true if \(S\) is a cyclotomic numerical semigroup.
gap> IsCyclotomicNumericalSemigroup(S);
true
Given a numerical semigroup \(S\) and an indeterminate \(x\) (or a value \(x = s \in \mathbb{Z}\)), the function NumericalSemigroupPolynomial
returns \((1-x)H_S(x)\). Moreover, the function IsKroneckerPolynomial
returns true if a given polynomial \(f\) is Kronecker and false otherwise.
gap> x := X(Rationals, "x");
x
gap> f := NumericalSemigroupPolynomial(S, x);
x^232-x^231+x^220-x^219+x^208-x^207+x^196-x^195+x^188-x^187+x^184-x^183+x^176-x^175+x^172-x^171+x\
^164-x^163+x^162-x^161+x^160-x^159+x^152-x^151+x^150-x^149+x^148-x^146+x^144-x^143+x^140-x^139+x^\
138-x^137+x^136-x^134+x^132-x^131+x^128-x^127+x^126-x^125+x^124-x^122+x^120-x^119+x^118-x^117+x^1\
16-x^115+x^114-x^113+x^112-x^110+x^108-x^107+x^106-x^105+x^104-x^101+x^100-x^98+x^96-x^95+x^94-x^\
93+x^92-x^89+x^88-x^86+x^84-x^83+x^82-x^81+x^80-x^73+x^72-x^71+x^70-x^69+x^68-x^61+x^60-x^57+x^56\
-x^49+x^48-x^45+x^44-x^37+x^36-x^25+x^24-x^13+x^12-x+1
gap> IsKroneckerPolynomial(f);
true
Given a polynomial \(p(x) = a_0 + a_1x + \cdots + a_nx^{n}\), the function IsSelfReciprocalUnivariatePolynomial
returns true if \(p\) is selfreciprocal, that is, if \(a_i = a_{n-i}\) for all \(i \in \mathbb{N}\) with \(2i \le n\). It can be proven that \(S\) is symmetric if, and only if, \(f_S\) es selfreciprocal.
gap> IsSelfReciprocalUnivariatePolynomial(f);
true
References
https://gap-packages.github.io/
numericalsgps
.