Adjustment of a numerical semigroup

Definition

Let \(S\) be a numerical semigroup minimally generated by \(P(S) = \{n_1, \ldots, n_e\}\), ordered to smallest to larger. It is defined the adjustment of \(S\), denoted by \(adj(S)\), as

\[ adj(S) = \{adj(s;S) ~ | ~ s \in S \}, \]

where \(adj(s;S)\) denotes the adjustment of the element \(s\) in \(S\). If \(B(S)\) is the blowup of \(S\), it can be proven that \(adj(S)\) is always finite and \(Ap(B(S), n_1) \subseteq adj(S) \subseteq B(S)\), where \(Ap(B(S), n_1)\) denotes the Apéry set of \(n_1\) in \(B(S)\). The following algorithm computes the adjustment of \(S\).

  • For all \(i \in \{0, \ldots, n_1 - 1\}\), let \(S_i = \{w(i)\}\), where \(w(i) \in Ap(S, n_1)\) is such that \(w(i) \equiv i ~ (mod ~ n_1)\).

  • Let \(b_i = w'(i) + n_1 \cdot \min \mathbf{L}(w(i); B(S)^{D})\), where \(w'(i) \in Ap(B(S), n_1)\) is such that \(w'(i) \equiv i ~ (mod ~ n_1)\), and \(\mathbf{L}(w(i); B^{D})\) denotes the set of lengths of \(w'(i)\) in the blowup of \(S\), \(B(S)\), with respect to \(D = \{n_1, n_2 - n_1, \ldots, n_e - n_1\}\).

  • Set \(x = w'(i)\) and while \(x \le b_i\), define \(x := x + n_1\). If \(x \in S\), add \(x\) in \(S_i\).

  • Compute the adjustment of \(S_i\) (it has finite elements).

  • Finally, \(\displaystyle adj(S) = \bigcup_{i = 0}^{n_1 - 1} adj(S_i)\).

Examples

\(\circ\) Let \(S = \langle 3, 5, 7 \rangle\). Let us follow the previous algorithm. First, we have that \(B(S) = \{0, 2, \rightarrow\}\), \(Ap(S,3) = \{0, 7, 5\}\), \(Ap(B(S), 3) = \{0, 4, 2\}\) and \(D = \{3, 2, 4\}\).

  • \(S_0\): we have \(w(0) =w'(0) = 0\), then \(b_i = 0\) and since \(0 + 3 \in S\), it is deduced that \(S_0 = \{0, 3\}\).

  • \(S_1\): \(w(1) = 7\) and \(b_1 = 4 + 3 \cdot 1 = 7\). Since \(7 + 3 = 10 \in S\), we have that \(S_1 = \{7, 10\}\).

  • \(S_2\): \(w(2) = 5\) and \(b_2 = 2 + 3 \cdot 1 = 5\). Since \(2 + 3 = 5 \in S\), we have that \(S_2 = \{5, 8\}\).

Therefore,

\[ adj(S) = adj(S_0) \cup adj(S_1) \cup adj(S_2) = \{0, 1, 2, 4\}. \]

Examples with GAP

The following example is made with the package NumericalSgps in GAP.

\(\diamond\) Let \(S = \langle 32, 52, 56, 76, 82, 113 \rangle\), in GAP:

gap> S := NumericalSemigroup(32, 52, 56, 76, 82, 113);
<Numerical semigroup with 6 generators>

Given a numerical semigroup \(S\), the functions Adjustment and AdjustmentOfNumericalSemigroup return the adjustment of \(S\).

gap> Adjustment(S);
[ 0, 20, 24, 40, 44, 48, 50, 60, 68, 70, 74, 81, 90, 94, 98, 101,
  105, 110, 118, 121, 125, 129, 131, 141, 149, 151, 155, 171, 175,
  179, 191, 199 ]
gap> AdjustmentOfNumericalSemigroup(S) = Adjustment(S);
true

Given a numerical semigroup \(S\) and an element \(n \in S\), the following function returns the adjustment of \(n\) in \(S\).

gap> AdjustmentOfElementInNumericalSemigroup := function(S,n)
>       local n_1, ord_n;
>       if not IsNumericalSemigroup(S) then
>           Error("The first argument must be a Numerical Semigroup");
>       fi;
>       if not IsInt(n) then
>           Error("Second argument must be an integer belonging to the first argument");
>       fi;
>       if not n in S then
>           Error("Second argument must be an integer belonging to the first argument");
>       fi;
>       n_1 := MinimalGenerators(S)[1];
>       ord_n := MaximumDegree(S,n);
>       return n - ord_n*n_1;
> end;
function( S, n ) ... end
gap> 300 in S;
true
gap> AdjustmentOfElementInNumericalSemigroup(S, 300);
44

References

Bryant, Hamblin, L. 2013. “The Maximal Denumerant of a Numerical Semigroup.” Semigroup Forum 86: 571–82. https://doi.org/10.1007/s00233-012-9448-5.
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.