Numerical semigroup associated to a set of rational numbers
Definition
Let \(A\) be a subset of the set of non-negative rational numbers \(\mathbb{Q}_0^+\) and \(\langle A \rangle\) the submonoid of \(\mathbb{Q}_0^+\) generated by \(A\). It is defined the numerical semigroup associated to \(A\), denoted by \(S(A)\), as \(S(A) = \langle A \rangle \cap \mathbb{N}\).
It can be proven that \(S(A)\) is a submonoid for any subset \(A \subseteq \mathbb{Q}_0^+\). If \([\lambda, \mu]\) denotes the closed intervals of rational numbers for any \(\lambda, \mu \in \mathbb{Q}_0^+\), then
\[ S(a,b,c) = S\left( \left[ \frac{b}{a}, \frac{b}{a-c} \right] \right) \]
for any \(a, b, c\) positive integers with \(c < a\), where \(S(a,b,c)\) denotes the set of solutions of the proportionally modular Diophantine inequality \(ax ~ (mod ~ b) \le cx\).
Examples
\(\circ\) Let \(A = \left [ \frac{70}{15}, \frac{70}{8} \right ]\). If we consider \(a = 15, b = 70\) and \(c = 7\), then
\[ S(A) = S\left( \left[ \frac{70}{15}, \frac{70}{15-7} \right] \right) = S(15, 70, 7) = \{0, 5, 6, 7, 8, 10, \rightarrow\}. \]
Examples with GAP
The following examples are made with the package NumericalSgps in GAP.
\(\diamond\) Given \(\lambda, \mu \in \mathbb{Q}_0^+\) rationals numbers, the function NumericalSemigroupByInterval
returns the numerical semigroup of numerators of all rational numbers in the interval \([\lambda, \mu]\).
gap> S := NumericalSemigroupByInterval(7/5, 7/4);
<Proportionally modular numerical semigroup satisfying 35x mod 49 <= 7x >
The function SmallElements
returns a list with the left elements and the conductor of the numerical semigroup.
gap> SmallElements(S);
0, 3, 5 ] [
The numerical semigroup obtained is \(S = \{0, 3, 5, \rightarrow\}\). It can be checked if a numerical semigroup has been generated by a closed interval with the function IsNumericalSemigroupByInterval
.
gap> S := NumericalSemigroupByInterval(23/5, 26/5);
<Proportionally modular numerical semigroup satisfying
130x mod 598 <= 15x >
gap> l := MinimalGenerators(S);
5, 14, 23, 26 ]
[ gap> T := NumericalSemigroup(l);
<Numerical semigroup with 4 generators>
gap> IsNumericalSemigroupByInterval(T);
false
\(\diamond\) Given \(\lambda, \mu \in \mathbb{Q}_0^+\) rationals numbers, the function NumericalSemigroupByOpenInterval
returns the numerical semigroup of numerators of all rational numbers in the opened interval of rational numbers \((\lambda, \mu)\).
gap> S := NumericalSemigroupByOpenInterval(23/5, 11/2);
<Numerical semigroup>
gap> SmallElements(S);
0, 5, 10, 14, 15, 16, 19, 20, 21, 24 ] [
The numerical semigroup is \(S = \{0, 5, 10, 14, 15, 16, 19, 20, 21, 24, \rightarrow\}\).
It can be checked if a numerical semigroup has been generated by an open interval with the function IsNumericalSemigroupByOpenInterval
.
gap> S := NumericalSemigroupByOpenInterval(23/5, 26/5);
<Numerical semigroup>
gap> IsNumericalSemigroupByOpenInterval(S);
true
gap> l := MinimalGenerators(S);
5, 14, 31, 37 ]
[ gap> T := NumericalSemigroup(l);
<Numerical semigroup with 4 generators>
gap> IsNumericalSemigroupByOpenInterval(T);
false
References
https://gap-packages.github.io/
numericalsgps
.