Maximal denumerant of an element

Definition

Let \(S\) be a numerical semigroup, \(s \in S\), let \(\mathbf{Z}(s)\) be the set of factorizations and let \(\mathbf{L}(s)\) be the set of lengths of \(s\) in \(S\). It is defined the maximal denumerant of \(s\) in \(S\), denoted by \(d_{max}(s;S)\), as the number of factorizations \(x \in \mathbf{Z}(s)\) such that the length of \(x\) is maximum in \(\mathbf{L}(s)\), that is,

\[ d_{max}(s;S) = |\{x \in \mathbf{Z}(s) ~ | ~ |x| = \max \mathbf{L}(s) \}|, \]

where \(|x|\) denotes the length of \(x\).

Examples

\(\circ\) Let \(S = \langle 6, 7, 9 \rangle\) and \(s = 70\). Since, \(s = 70 = 7 \cdot 10\), we have that \(s \in S\). The set of factorizations of \(s\) in \(S\) is

\[ \mathbf{Z}(s) = \{(7, 4, 0), (0, 10, 0), (9, 1, 1), (2, 7, 1), (4, 4, 2), \]

\[ (6, 1, 3), (1, 4, 4), (3, 1, 5), (0, 1, 7) \}, \]

and \(\mathbf{L}(s) = \{8,9,10,11\}\). Therefore, the maximal denumerant of \(s = 70\) in \(S\) are the number of factorizations of \(70\) with length \(11\). It is deduced from the set of factorizations that

\[ d_{max}(70;S) = |\{(7,4,0), (9,1,1)\}| = 2. \]

Examples with GAP

The following examples are made with the package NumericalSgps in GAP.

\(\diamond\) Let \(S = \langle 19, 32, 40, 52, 73, 75, 125 \rangle\), in GAP:

gap> S := NumericalSemigroup(19, 32, 40, 52, 73, 75, 125);
<Numerical semigroup with 7 generators>

Given a numerical semigroup \(S\) and an element \(n \in S\), the functions MaximalDenumerant and MaximalDenumerantOfElementInNumericalSemigroup return the maximal denumerant of \(n\) in \(S\).

gap> 126 in S;
true
gap> MaximalDenumerant(S, 126);
1
gap> MaximalDenumerant(126, S);
1
gap> MaximalDenumerantOfElementInNumericalSemigroup(126, S);
1

Given a numerical semigroup \(S\) and an element \(n \in S\), the following function returns the factorizations \(x \in \mathbf{Z}(s)\) such that \(|x|\) is maximum in \(\mathbf{L}(s)\).

gap> WhichMaximalDenumerantOfElementInNumericalSemigroup := function(S,n)
>       local list_fact, length_max, list_max_den, fact, length_fact;
>       if not IsNumericalSemigroup(S) then
>           Error("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;
> 
>       list_fact := Factorizations(S,n);
>       length_max := Sum(Factorizations(S,n)[1]);
>       list_max_den := [];
>       for fact in list_fact do
>           length_fact := Sum(fact);
>           if Sum(fact) = length_max then
>               Add(list_max_den, fact);
>           fi;
> 
>           if length_fact > length_max then
>               list_max_den := [fact];
>               length_max := length_fact;
>           fi;
>       od;
>       return list_max_den;
> end;
function( S, n ) ... end
gap> 179 in S;
true
gap> Factorizations(S, 179);
[ [ 1, 5, 0, 0, 0, 0 ], [ 1, 0, 4, 0, 0, 0 ], [ 5, 1, 0, 1, 0, 0 ],
  [ 0, 2, 1, 0, 0, 1 ], [ 0, 0, 0, 2, 0, 1 ] ]
gap> WhichMaximalDenumerantOfElementInNumericalSemigroup(S, 179);
[ [ 5, 1, 0, 1, 0, 0 ] ]

If we compute the maximal denumerant of S, that is, \(\max_{s \in S} \{d_{max}(s;S)\}\) with the function MaximalDenumerant,

gap> MaximalDenumerant(S);
2

Therefore, each element has at most two factorizations with maximal length.

\(\diamond\) Given a list of lists of non-negative integers with the same length \(Is\) (in particular a set of factorizations), the function MaximalDenumerantOfSetOfFactorizations returns the maximal denumerant of \(Is\).

gap> I := [[3,1,0], [2,2,0], [4,0,2], [0,5,0], [2, 1, 3]];
[ [ 3, 1, 0 ], [ 2, 2, 0 ], [ 4, 0, 2 ], [ 0, 5, 0 ], [ 2, 1, 3 ] ]
gap> MaximalDenumerantOfSetOfFactorizations(I);
2

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.