Modular numerical semigroup
Definition
Let \(S\) be a numerical semigroup. It is said that \(S\) is modular if there exist \(a, b\) positive integers such that \(S = S(a, b)\), where \(S(a,b)\) denotes the set of solutions of the modular Diophantine inequality \(ax ~ (mod ~ b) \le x\). If \(S\) is the set of solutions of a proportionally modular Diophantine inequality \(ax ~ (mod ~ b) \le cx\) for some \(a,b,c\) positive integers, then it is said that \(S\) is proportionally modular.
It can be proven that for any, \(a,b,c\) positive integers, \(S(a,b,c)\) is a numerical semigroup.
Examples
\(\circ\) Let \(a = 7, b = 13\) and the modular Diophantine inequality \(7x ~ (mod ~ 13) \le x\). If \(x = 2k\) for \(k \in \{0, 1, \ldots, 5\}\),
\[ 7x ~ (mod ~ 13) = 14k ~ (mod ~ 13) = (13 + 1)k ~ (mod ~ 13) = k = \frac{x}{2} \le x. \] If \(x = 2k + 1\) for \(k \in \{0, 1, \ldots, 5\}\),
\[ 7x ~ (mod ~ 13) = 7(2k + 1) ~ (mod ~ 13) = 7 + k = 7 + \frac{x - 1}{2} = \frac{13 + x}{2} > x. \]
Finally, if \(x \ge 12\) it holds \(7x ~ (mod ~ 13) \le 12 \le x\) and the numerical semigroup generated by the modular Diophantine inequality is \(S = \{0, 2, 4, 6, 8, 10, 12, \rightarrow \}\).
Examples with GAP
The following examples are made with the package NumericalSgps in GAP.
\(\diamond\) Let \(a, b\) positive integers. The function ModularNumericalSemigroup
returns the numerical semigroup generated by the modular Diophantine inequality \(ax ~ (mod ~ b) \le x\).
gap> a := 6;
6
gap> b := 19;
19
gap> S := ModularNumericalSemigroup(a,b);
<Modular numerical semigroup satisfying 6x mod 19 <= x >
The function SmallElements
returns a list with the left elements and the conductor of the numerical semigroup.
gap> SmallElements(S);
0, 7, 10, 11, 13 ] [
Then, the set of solutions of \(6x ~ (mod ~ 19) \le x\) is \(S = \{0, 7, 10, 11, 13, \rightarrow \}\).
\(\diamond\) Given a numerical semigroup \(S\), the function IsModularNumericalSemigroup
returns true or false depending on whether \(S\) is a modular Diophantine numerical semigroup or not.
gap> S := NumericalSemigroup(5, 9, 31);
<Numerical semigroup with 3 generators>
gap> IsModularNumericalSemigroup(S);
true
References
https://gap-packages.github.io/
numericalsgps
.