Factorizations in Numerical Semigroups Let S be a numerical semigroup minimally generated by \{m_1,\ldots,m_n\} . A factorization of an element s\in S is an n-tuple a=(a_1,\ldots,a_n) of nonnegative integers such that n=a_1 n_1+\cdots+a_n m_n. The lenght of a is |a|=a_1+\cdots+a_n. Given two factorizations a and b of n, the distance between a and b is d(a,b)=\max \{ |a-\gcd(a,b)|,|b-\gcd(a,b)|\}, where \gcd((a_1,\ldots,a_n),(b_1,\ldots,b_n))=(\min(a_1,b_1),\ldots,\min(a_n,b_n)).

If l_1>\cdots > l_k are the lenghts of all the factorizations of s \in S, the Delta set associated to s is \Delta(s)=\{l_1-l_2,\ldots,l_k-l_{k-1}\}.

The catenary degree of an element in S is the least positive integer c such that for any two of its factorizations a and b, there exists a chain of factorizations starting in a and ending in b and so that the distance between two consecutive links is at most c. The catenary degree of S is the supremum of the catenary degrees of the elements in S.

The tame degree of S is the least positive integer t for any factorization a of an element s in S, and any i such that s-m_i\in S, there exists another factorization b of s so that the distance to a is at most t and b_i\not = 0.

The \omega-primality of an elment s in S is the least positive integer k such that if (\sum_{i\in I} s_i)-s\in S, s_i\in S, then there exists \Omega\subseteq I with cardinality k such that (\sum_{i\in \Omega} s_i)-s\in S. The \omega-primality is the maximum of the \omega-primality of its minimal generators.

The basic properties of these constants can be found in . The algorithm used to compute the catenary and tame degree is an adaptation of the algorithms appearing in for numerical semigroup (see ). The computation of the elascitiy of a numerical semigroup reduces to m/n with m the multiplicity of the semigroup and n its largest minimal generator (see or ). ls is a list of integers and n an integer. The output is the set of factorizations of n in terms of the elements in the list ls. This function uses RestrictedPartitions.
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ]
S is a numerical semigroup and n a nonnegative integer. The output is the set of factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> FactorizationsElementWRTNumericalSemigroup(1100,s); [ [ 0, 8, 1, 0, 0, 0 ], [ 0, 0, 0, 2, 2, 0 ], [ 5, 1, 1, 0, 0, 1 ], [ 0, 2, 3, 0, 0, 1 ] ]
ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The output is the set of \mathcal R-classes of this set of factorizations as defined in Chapter 7 of .
gap> s:=NumericalSemigroup(10,11,19,23);; gap> BettiElementsOfNumericalSemigroup(s); [ 30, 33, 42, 57, 69 ] gap> FactorizationsElementWRTNumericalSemigroup(69,s); [ [ 5, 0, 1, 0 ], [ 2, 1, 2, 0 ], [ 0, 0, 0, 3 ] ] gap> RClassesOfSetOfFactorizations(last); [ [ [ 2, 1, 2, 0 ], [ 5, 0, 1, 0 ] ], [ [ 0, 0, 0, 3 ] ] ]
S is a numerical semigroup. The output is the number of LShapes associated to S. These are ways of arranging the set of factorizations of the elements in the Apéry set of the largest generator, so that if one factorization x is chosen for w and w-w'\in S, then only the factorization of x' of w' with x'\le can be in the LShape (and if there is no such a factorization, then we have no LShape with x in it), see .
gap> s:=NumericalSemigroup(4,6,9);; gap> LShapesOfNumericalSemigroup(s); [ [ [ 0, 0 ], [ 1, 0 ], [ 0, 1 ], [ 2, 0 ], [ 1, 1 ], [ 0, 2 ], [ 2, 1 ], [ 1, 2 ], [ 2, 2 ] ], [ [ 0, 0 ], [ 1, 0 ], [ 0, 1 ], [ 2, 0 ], [ 1, 1 ], [ 3, 0 ], [ 2, 1 ], [ 4, 0 ], [ 5, 0 ] ] ]
S is a numerical semigroup and n a positive integer. The output is the number of factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,195,272,278,286);; gap> DenumerantOfElementInNumericalSemigroup(1311,s); 6
Invariants based on lengths ls is a list of integers and n an integer. The output is the set of lengths of the factorizations of n in terms of the elements in ls.
gap> LengthsOfFactorizationsIntegerWRTList(100,[11,13,15,19]); [ 6, 8 ]
S is a numerical semigroup and n a nonnegative integer. The output is the set of lengths of the factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> LengthsOfFactorizationsElementWRTNumericalSemigroup(1100,s); [ 4, 6, 8, 9 ]
S is a numerical semigroup and n a positive integer. The output is the maximum length divided by the minimum length of the factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> ElasticityOfFactorizationsElementWRTNumericalSemigroup(1100,s); 9/4
S is a numerical semigroup. The output is the elasticity of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> ElasticityOfNumericalSemigroup(s); 286/101
ls is list of integers. The output is the Delta set of the elements in ls, that is, the set of differences of consecutive elements in the list.
gap> LengthsOfFactorizationsIntegerWRTList(100,[11,13,15,19]); [ 6, 8 ] gap> DeltaSetOfSetOfIntegers(last); [ 2 ]
S is a numerical semigroup and n a nonnegative integer. The output is the Delta set of the factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> DeltaSetOfFactorizationsElementWRTNumericalSemigroup(1100,s); [ 1, 2 ]
S is a numerical semigroup and n a nonnegative integer. The output is the maximum length of the factorizations of n in terms of the minimal generating set of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> MaximumDegreeOfElementWRTNumericalSemigroup(1100,s); 9
S is a numerical semigroup and n a positive integer. The output is the number of factorizations of n in terms of the minimal generating set of S with maximal length.
gap> s:=NumericalSemigroup(101,113,196,272,278,286);; gap> MaximalDenumerantOfElementInNumericalSemigroup(1100,s); 1 gap> MaximalDenumerantOfElementInNumericalSemigroup(1311,s); 2
ls is list of factorizations (a list of lists of nonnegative integers with the same lenght). The output is number of elements in ls with maximal length.
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> MaximalDenumerantOfSetOfFactorizations(last); 6
S is a numerical semigroup. The output is the maximal denumerant of S, that is, the maximum of the maximal denumerant of the elements in S (see ).
gap> s:=NumericalSemigroup(101,113,196,272,278,286);; gap> MaximalDenumerantOfNumericalSemigroup(s); 4
S is a numerical semigroup. The output is the adjustment of S as defined in .
gap> s:=NumericalSemigroup(101,113,196,272,278,286);; gap> AdjustmentOfNumericalSemigroup(s); [ 0, 12, 24, 36, 48, 60, 72, 84, 95, 96, 107, 108, 119, 120, 131, 132, 143, 144, 155, 156, 167, 168, 171, 177, 179, 180, 183, 185, 189, 190, 191, 192, 195, 197, 201, 203, 204, 207, 209, 213, 215, 216, 219, 221, 225, 227, 228, 231, 233, 237, 239, 240, 243, 245, 249, 251, 252, 255, 257, 261, 263, 264, 266, 267, 269, 273, 275, 276, 279, 280, 281, 285, 287, 288, 292, 293, 299, 300, 304, 305, 311, 312, 316, 317, 323, 324, 328, 329, 335, 336, 340, 341, 342, 347, 348, 352, 353, 354, 356, 359, 360, 361, 362, 364, 365, 366, 368, 370, 371, 372, 374, 376, 377, 378, 380, 382, 383, 384, 388, 389, 390, 394, 395, 396, 400, 401, 402, 406, 407, 408, 412, 413, 414, 418, 419, 420, 424, 425, 426, 430, 431, 432, 436, 437, 438, 442, 444, 448, 450, 451, 454, 456, 460, 465, 466, 472, 477, 478, 484, 489, 490, 496, 501, 502, 508, 513, 514, 519, 520, 525, 526, 527, 531, 532, 533, 537, 539, 543, 545, 549, 551, 555, 561, 567, 573, 579, 585, 591, 597, 603, 609, 615, 621, 622, 627, 698, 704, 710, 716, 722 ]
S is a numerical semigroup. Detects if S is additive, that is, ord(m+x)=ord(x)+1 for all x in S, where m is the multiplicity of S and ord stands for MaximumDegreeOfElementWRTNumericalSemigroup. For these semigroups gr_m(K[[S]]) is Cohen-Macaulay(see ).
gap> l:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(31);; gap> Length(l); 109 gap> Length(Filtered(l,IsAdditiveNumericalSemigroup)); 20
S is a numerical semigroup. Detects if S is supersymmetric, that is, it is symmetric, additive and whenever w+w'=f+m (with m the multiplicity and f the Frobenius number) we have ord(w+w')=ord(w)+ord(w'), where ord stands for MaximumDegreeOfElementWRTNumericalSemigroup.
gap> l:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(31);; gap> Length(l); 109 gap> Length(Filtered(l,IsSuperSymmetricNumericalSemigroup)); 7
Invariants based on distances ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The output is the catenary degree of this set of factorizations.
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> CatenaryDegreeOfSetOfFactorizations(last); 5
ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The output is the adjacent catenary degree of this set of factorizations, that is, the supremum of the distance between to sets of factorizations with adjacet lengths. More precisely, if l_1,\ldots,l_t are the lengths of the factorizations of the elements in ls, and Z_{l_i} is the set of factorizations in ls with length l_i, then the adjacent catenary degre is the maximum of the distances \mathrm d (Z_{l_i},Z_{l_{i+1}}).
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> AdjacentCatenaryDegreeOfSetOfFactorizations(last); 5
ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The same as CatenaryDegreeOfSetOfFactorizations, but now the factorizations joined by the chain must have the same length, and the elements in the chain also. Equivalently, if l_1,\ldots,l_t are the lengths of the factorizations of the elements in ls, and Z_{l_i} is the set of factorizations in ls with length l_i, then the equal catenary degre is the maximum of the CatenaryDegreeOfSetOfFactorizations of \mathrm d (Z_{l_i},Z_{l_{i+1}}).
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> EqualCatenaryDegreeOfSetOfFactorizations(last); 2
ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The same as CatenaryDegreeOfSetOfFactorizations, but now the factorizations are joined by a chain with nondecreasing lengths. Equivalently, it is the maximum of the AdjacentCatenaryDegreeOfSetOfFactorizations and the EqualCatenaryDegreeOfSetOfFactorizations.
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> MonotoneCatenaryDegreeOfSetOfFactorizations(last); 5
n is a nonnegative integer and S is a numerical semigroup. The output is the catenary degree of n relative to S.
gap> CatenaryDegreeOfElementInNumericalSemigroup(157,NumericalSemigroup(13,18)); 0 gap> CatenaryDegreeOfElementInNumericalSemigroup(1157,NumericalSemigroup(13,18)); 18
ls is a set of factorizations (a list of lists of nonnegative integers with the same lenght). The output is the tame degree of this set of factorizations.
gap> FactorizationsIntegerWRTList(100,[11,13,15,19]); [ [ 2, 6, 0, 0 ], [ 3, 4, 1, 0 ], [ 4, 2, 2, 0 ], [ 5, 0, 3, 0 ], [ 5, 2, 0, 1 ], [ 6, 0, 1, 1 ], [ 0, 1, 2, 3 ], [ 1, 1, 0, 4 ] ] gap> TameDegreeOfSetOfFactorizations(last); 4
S is a numerical semigroup. The output is the catenary degree of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> CatenaryDegreeOfNumericalSemigroup(s); 8
S is a numerical semigroup.

The output is the set of elements s in S such that there exists a minimal solution to msg\cdot x-msg\cdot y = 0, such that x,y are factorizations with the same length of s, and msg is the minimal generating system of S. These elements are used to compute the equal catenary degree of S.
gap> s:=NumericalSemigroup(3,5,7);; gap> BettiElementsOfNumericalSemigroup(s); [ 10, 12, 14 ]
S is a numerical semigroup. The output is the equal catenary degree of S.
gap> s:=NumericalSemigroup(3,5,7);; gap> EqualPrimitiveElementsOfNumericalSemigroup(s); [ 3, 5, 7, 10 ]
S is a numerical semigroup.

The output is the set of elements s in S such that there exists a minimal solution to msg\cdot x-msg\cdot y = 0, such that x,y are factorizations of s, with |x|\le |y|; msg stands the minimal generating system of S. These elements are used to compute the monotone catenary degree of S.
gap> s:=NumericalSemigroup(3,5,7);; gap> MonotonePrimitiveElementsOfNumericalSemigroup(s); [ 3, 5, 7, 10, 12, 14, 15, 21, 28, 35 ]
S is a numerical semigroup. The output is the monotone catenary degree of S.
gap> s:=NumericalSemigroup(10,23,31,44);; gap> CatenaryDegreeOfNumericalSemigroup(s); 9 gap> MonotoneCatenaryDegreeOfNumericalSemigroup(s); 21
S is a numerical semigroup. The output is the tame degree of S.
gap> s:=NumericalSemigroup(101,113,196,272,278,286); <Numerical semigroup with 6 generators> gap> TameDegreeOfNumericalSemigroup(s); 14
n is an elment of the numerical semigroup S. The output is the tame degree of n in S.
gap> s:=NumericalSemigroup(10,11,13); <Numerical semigroup with 3 generators> gap> TameDegreeOfElementInNumericalSemigroup(100,s); 5
Primality n is an elment of the numerical semigroup S. The output is the \omega-primality of n in S as explained in . The current implementation is due to Chris O'Neill based on a work in progress with Pelayo and Thomas.
gap> s:=NumericalSemigroup(10,11,13); <Numerical semigroup with 3 generators> gap> OmegaPrimalityOfElementInNumericalSemigroup(100,s); 13
S is a numerical semigroup. The output is the maximum of the \omega-primalities of the minimal generators of S.
gap> s:=NumericalSemigroup(10,11,13); <Numerical semigroup with 3 generators> gap> OmegaPrimalityOfNumericalSemigroup(s); 5
Homogenization of Numerical Semigroups Let S be a numerical semigroup minimally generated by \{m_1,\ldots,m_n\} . The homogenization of S, S^\mathrm{hom} is the semigroup generated by \{(1,0),(1,m_1),\ldots, (1,m_n)\}. The catenary degree of S^\mathrm{hom} coincides with the homogeneous catenary degree of S, and it is between the catenary and the monotone catenary degree of S. The advantage of this catenary degree is that is less costly to compute than the monotone catenary degree, and has some nice interpretations (). This section contains the auxiliary functions needed to compute the homogeneous catenary degree. S is a numerical semigroup and n a list with two entries (a pair). The output is true if the n belongs to the homogenization of S.
gap> s:=NumericalSemigroup(10,11,13);; gap> BelongsToHomogenizationOfNumericalSemigroup([10,23],s); true gap> BelongsToHomogenizationOfNumericalSemigroup([1,23],s); false
S is a numerical semigroup and n a list with two entries (a pair). The output is the set of factorizations n in terms of the minimal generating system of the homogenization of S.
gap> s:=NumericalSemigroup(10,11,13);; gap> FactorizationsInHomogenizationOfNumericalSemigroup([20,230],s); [ [ 0, 0, 15, 5 ], [ 0, 2, 12, 6 ], [ 0, 4, 9, 7 ], [ 0, 6, 6, 8 ], [ 0, 8, 3, 9 ], [ 0, 10, 0, 10 ], [ 1, 1, 7, 11 ], [ 1, 3, 4, 12 ], [ 1, 5, 1, 13 ], [ 2, 0, 2, 16 ] ] gap> FactorizationsElementWRTNumericalSemigroup(230,s); [ [ 23, 0, 0 ], [ 12, 10, 0 ], [ 1, 20, 0 ], [ 14, 7, 1 ], [ 3, 17, 1 ], [ 16, 4, 2 ], [ 5, 14, 2 ], [ 18, 1, 3 ], [ 7, 11, 3 ], [ 9, 8, 4 ], [ 11, 5, 5 ], [ 0, 15, 5 ], [ 13, 2, 6 ], [ 2, 12, 6 ], [ 4, 9, 7 ], [ 6, 6, 8 ], [ 8, 3, 9 ], [ 10, 0, 10 ], [ 1, 7, 11 ], [ 3, 4, 12 ], [ 5, 1, 13 ], [ 0, 2, 16 ] ]
S is a numerical semigroup. The output is the set of Betti elements of the homogenization of S.
gap> s:=NumericalSemigroup(10,17,19);; gap> BettiElementsOfNumericalSemigroup(s); [ 57, 68, 70 ] gap> HomogeneousBettiElementsOfNumericalSemigroup(s); [ [ 5, 57 ], [ 5, 68 ], [ 6, 95 ], [ 7, 70 ], [ 9, 153 ] ]
S is a numerical semigroup. The output is the homogeneus catenary degree of S. Observe that for a single element in the homogenization of S, its catenary degree can be computed with CatenaryDegreeOfSetOfFactorizations and FactorizationsInHomogenizationOfNumericalSemigroup.
gap> s:=NumericalSemigroup(10,17,19);; gap> CatenaryDegreeOfNumericalSemigroup(s); 7 gap> HomogeneousCatenaryDegreeOfNumericalSemigroup(s); 9
Divisors, posets Given a numerical semigroup S and two integers a,b, we write a\le_S b if b-a\in S. We also say that a divides b (with respecto to S). The semigroup S with this binary relation is a poset. S is a numerical semigroup and n is an integer. As (S,\le_S) is a poset, we can define the Möbius function associtate to it as in . The output is the value of the Möbius function in the integer n, that is, the alternate sum of the number of chains from 0 to n.
gap> s:=NumericalSemigroup(3,5,7);; gap> MoebiusFunctionAssociatedToNumericalSemigroup(s,10); 2 gap> MoebiusFunctionAssociatedToNumericalSemigroup(s,34); 25