Adjustment of an element

Definition

Let \(S\) be a numerical semigroup minimally generated by \(P(S) = \{n_1, \ldots, n_e\}\) with \(n_1 < n_2 < \ldots < n_e\), and let \(s \in S\) with order \(ord(s)\). It is defined the adjustment of \(s\) in \(S\), denoted by \(adj(s;S)\) or simply \(adj(s)\), as \(adj(s) = s - ord(s) \cdot n_1\).

This definition comes from the objective of finding an algorithm to compute the maximal denumerant of a numerical semigroup.

Examples

Let \(S = \langle 10, 12, 15 \rangle\) and \(s = 70\). If \((\alpha, \beta, \gamma) \in \mathbf{Z}(70)\), where \(\mathbf{Z}(70)\) denotes the set of factorizations of \(70\) in \(S\),

\[ 70 = 10 \cdot \alpha + 12 \cdot \beta + 15 \cdot \gamma, \]

obtaining that \(0 \le \alpha \le 7, 0 \le \beta \le 4\) and \(0 \le \gamma \le 5\). From the previous argument, it is deduced that

\[ \mathbf{Z}(70) = \{(7, 0, 0), (1, 5, 0), (4, 0, 2), (1, 0, 4) \}, \]

and \(\mathbf{L}(70) = \{5, 6, 7\}\), where \(\mathbf{L}(70)\) denotes the set of lengths of \(70\) in \(S\). Therefore, \(ord(70) = 7\) and \(adj(70) = 70 - 7\cdot 10 = 0\).

Examples with GAP

Nowadays, there are no functions in package NumericalSgps related to adjustment of an element. However, 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

\(\diamond\) Let \(S = \langle 37, 39, 52, 60, 71 \rangle\) and \(s = 300\), in GAP:

gap> S := NumericalSemigroup(37, 39, 52, 60, 71);
<Numerical semigroup with 5 generators>
gap> s := 300;
300

Using the function defined above,

gap> s in S;
true
gap> AdjustmentOfElementInNumericalSemigroup(S, s);
4

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.