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
https://gap-packages.github.io/
numericalsgps
.