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

Delgado, M., P. A. Garcia-Sanchez, and J. Morais. 2024. NumericalSgps, a Package for Numerical Semigroups, Version 1.4.0.” https://gap-packages.github.io/ numericalsgps.
Rosales, J. C., and P. A. Garcı́a-Sánchez. 2009. Numerical Semigroups. Springer.