Some basic definitions¶
Recall that a numerical semigroup is a subset of the set of nonnegative integers, , that is closed under addition, , and there are only finitely many positive integers not belonging to . The first two contidions imply that is a submonoid of .
The set is known as the set of gaps of , denoted , and the largest integer not belonging to is its Frobenius number, . The conductor of , has the following property: .
LoadPackage("num");
true
s:=NumericalSemigroupByGaps([1..5]);
<Numerical semigroup>
10 in s;
true
FrobeniusNumber(s);
5
Gaps(s);
[ 1 .. 5 ]
We can see which elements in the semigroup are in a given interval.
Intersection(s,[0..30]);
[ 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ]
Or which is the th element in the semigroup.
s[30];
34
Or even, what are the first elements in the semigroup.
s{[1..20]};
[ 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 ]
The genus of is the cardinality of , denoted .
Genus(s);
5
The set is known as the set of small elements of (if we remove the conductor, then somtimes is called the set of left or sporadic elements).
SmallElements(s);
[ 0, 6 ]
s=NumericalSemigroupBySmallElements([0,6]);
true
Denote by . It follows that . Since for every with we have that , we have that there are less left elements than gaps, and so the following inequality always holds.
Genus(s)>= (FrobeniusNumber(s)+1)/2;
true
Given a set of positive integers, the submonoid (under addition) of generated by is the intersection of all submonoids of contanining , which can be described as
The submonoid is a numerical semigroup if and only if .
We say that is a generating system of if , and that is a minimal generating system of if, in addition, no proper subset of generates .
Every numerical semgiroup has a unique minimal generating system: , with . Sometimes the elements in the minimal generating system of are called minimal generators, atoms, irreducible, or primitive elements of . The cardinality of the minimal generating system of is known as the embedding dimension of , denoted .
Generators(s);
[ 6 .. 11 ]
MinimalGenerators(s);
[ 6 .. 11 ]
EmbeddingDimension(s);
6
We can define a numerical semigoup by giving one of its generating sets.
s:=NumericalSemigroup(3,5,7);
<Numerical semigroup with 3 generators>
The multiplicity of a numerical semigroup is the least positive integer in (and coincides with its smallest minimal generator), we will denote it by .
Multiplicity(s);
3
Apéry sets¶
One of the most important tools when studying numerical semigroups is the concept of Apéry sets. Given a numerical semigroup and a nonzero element of (one can define also Apéry sets for elements outside , but we are not going to deal with them here), the Apéry set of in (or of with respect to ) is the set
This set has precisely elements, one in each congruence class modulo . Moreover, for every there exist unique and such that . This in particular implies that the embedding dimension of is always smaller than or equal to its multiplicity, since is a minimal generating set of for all .
s:=NumericalSemigroup(6,10,15);;
AperyList(s,12);
[ 0, 25, 26, 15, 16, 41, 6, 31, 20, 21, 10, 35 ]
If the second argument is not given, then the Apéry set is taken with respect to the multiplicity of the numerical semigroup.
AperyList(s);
[ 0, 25, 20, 15, 10, 35 ]
The output is arranged in a list, so that in the th position (starting in 0) we find the least element in congruent with modulo . In this way, membership to becomes trivial once an Apéry set of the semigroup is known.
This has some other interesting consequences:
FrobeniusNumber(s)=Maximum(AperyList(s,12))-12;
true
Genus(s)=(Sum(AperyList(s,12)))/12- (12-1)/2;
true
Let be the multiplcity of , and let be the element in the Apéry set of in congruent with modulo . We can write . The tuple is known as the Kunz coordinates of .
KunzCoordinates(s);
[ 4, 3, 2, 1, 5 ]
Notice that every nonnegative integer can be written as for some , with . It follows easily that if and only if . So it is at no surprise that the genus is precisely the sum of the Kunz coordinates of , which is just a reformulation of the above statement on the genus.
Genus(s)=Sum(KunzCoordinates(s));
true
Notice that for all , and thus , this imposes some conditions on the tuples that can be Kunz coordinates of a numerical semigroup with multiplicity . In fact, there is a one to one correspondence between numerical semigroups with multiplicity and integers points in what it is called the Kunz polyhedron.
KunzPolytope(6);
[ [ 1, 0, 0, 0, 0, -1 ], [ 0, 1, 0, 0, 0, -1 ], [ 0, 0, 1, 0, 0, -1 ], [ 0, 0, 0, 1, 0, -1 ], [ 0, 0, 0, 0, 1, -1 ], [ 2, -1, 0, 0, 0, 0 ], [ 1, 1, -1, 0, 0, 0 ], [ 1, 0, 1, -1, 0, 0 ], [ 1, 0, 0, 1, -1, 0 ], [ 0, 2, 0, -1, 0, 0 ], [ 0, 1, 1, 0, -1, 0 ], [ -1, 1, 0, 0, 1, 1 ], [ -1, 0, 1, 1, 0, 1 ], [ 0, -1, 1, 0, 1, 1 ], [ 0, -1, 0, 2, 0, 1 ], [ 0, 0, -1, 1, 1, 1 ], [ 0, 0, 0, -1, 2, 1 ] ]
The first elements of this output mean that , while for instance translates to , and to .
x:=List([1..5],i->Indeterminate(Rationals,i));;
x1:=Concatenation(x,[1]);;
for eq in KunzPolytope(6) do Print(eq*x1," ≥ 0\n"); od;
x_1-1 ≥ 0
x_2-1 ≥ 0
x_3-1 ≥ 0
x_4-1 ≥ 0
x_5-1 ≥ 0
2*x_1-x_2 ≥ 0
x_1+x_2-x_3 ≥ 0
x_1+x_3-x_4 ≥ 0
x_1+x_4-x_5 ≥ 0
2*x_2-x_4 ≥ 0
x_2+x_3-x_5 ≥ 0
-x_1+x_2+x_5+1 ≥ 0
-x_1+x_3+x_4+1 ≥ 0
-x_2+x_3+x_5+1 ≥ 0
-x_2+2*x_4+1 ≥ 0
-x_3+x_4+x_5+1 ≥ 0
-x_4+2*x_5+1 ≥ 0
Pseudo-Frobenius numbers and type¶
Let be a numerical semigroup. A pseudo-Frobenius number is an integer such that . In particular, the Frobenius number of is a pseudo-Frobenius number. The cardinality of the set of pseudo-Frobenius numbers of , , is known as the type of .
The semigroup induces the following ordering over the integers: if . It easily follows that
s:=NumericalSemigroup(6,11,13,21);
<Numerical semigroup with 4 generators>
PseudoFrobenius(s);
[ 15, 16, 20 ]
Type(s);
3
Is is not difficult to prove that for any ,
rap:=HasseDiagramOfAperyListOfNumericalSemigroup(s);
<general mapping: Domain([ 0, 11, 13, 21, 22, 26 ]) -> Domain([ 0, 11, 13, 21, 22, 26 ]) >
JupyterSplashDot(DotBinaryRelation(rap));
6+PseudoFrobenius(s);
[ 21, 22, 26 ]
The minimal elements in with respect to are precisely the minimal generators of .
For every element , we have that is a gap of . Thus . By combining this with , we obtain
Genus(s);
13
(FrobeniusNumber(s)+Type(s))/2;
23/2
Duality minimal generators and special gaps¶
Notice that for a given numerical semigroup , an element is a minimal generator if and only if is also a numerical semigroup (which has one more gap than ). Starting with , by removing minimal generators we can construct all numerical semigroups with a given genus.
c:=Union(List([0..4],i->NumericalSemigroupsWithGenus(i)));;
cc:=Filtered(Cartesian(c,c),p->IsSubset(p[2],p[1]) and IsSubset(MinimalGenerators(p[2]),Difference(p[2],p[1]))
and Length(Difference(p[2],p[1]))=1);;
d:=Domain(List(c,MinimalGenerators));;
pairs:=List(cc,p->Tuple([MinimalGenerators(p[1]),MinimalGenerators(p[2])]));;
br:=BinaryRelationByElements(d,pairs);
<general mapping: Domain([ [ 1 ], [ 2, 3 ], [ 2, 5 ], [ 2, 7 ], [ 2, 9 ], [ 3 .. 5 ], [ 3, 4 ], [ 3, 5, 7 ], [ 3, 5 ], [ 3, 7, 8 ], [ 4 .. 7 ], [ 4, 5, 6 ], [ 4, 5, 7 ], [ 4, 6, 7, 9 ], [ 5 .. 9 ] ]) -> Domain([ [ 1 ], [ 2, 3 ], [ 2, 5 ], [ 2, 7 ], [ 2, 9 ], [ 3 .. 5 ], [ 3, 4 ], [ 3, 5, 7 ], [ 3, 5 ], [ 3, 7, 8 ], [ 4 .. 7 ], [ 4, 5, 6 ], [ 4, 5, 7 ], [ 4, 6, 7, 9 ], [ 5 .. 9 ] ]) >
JupyterSplashDot(DotBinaryRelation(br));
For any numerical semigroup (other than ), the set is also a numerical semigroup. The semigroup is obtained from by removing a minimal generator larger than its Frobenius number.
So if we remove minimal generators larger than the Frobenius number, we still obtain the same numerical semigroups, but the above directed graph becomes a tree.
cc:=Filtered(Cartesian(c,c),p->IsSubset(p[2],p[1]) and Difference(p[2],p[1])=[FrobeniusNumber(p[1])]);;
pairs:=List(cc,p->Tuple([MinimalGenerators(p[1]),MinimalGenerators(p[2])]));;
br:=BinaryRelationByElements(d,pairs);
<general mapping: Domain([ [ 1 ], [ 2, 3 ], [ 2, 5 ], [ 2, 7 ], [ 2, 9 ], [ 3 .. 5 ], [ 3, 4 ], [ 3, 5, 7 ], [ 3, 5 ], [ 3, 7, 8 ], [ 4 .. 7 ], [ 4, 5, 6 ], [ 4, 5, 7 ], [ 4, 6, 7, 9 ], [ 5 .. 9 ] ]) -> Domain([ [ 1 ], [ 2, 3 ], [ 2, 5 ], [ 2, 7 ], [ 2, 9 ], [ 3 .. 5 ], [ 3, 4 ], [ 3, 5, 7 ], [ 3, 5 ], [ 3, 7, 8 ], [ 4 .. 7 ], [ 4, 5, 6 ], [ 4, 5, 7 ], [ 4, 6, 7, 9 ], [ 5 .. 9 ] ]) >
JupyterSplashDot(DotBinaryRelation(br));
Now let us think about the dual process: what are the gaps that I may add to a numerical semigroup in order to obtain a nuew numerical semigroup. We already know that we can always add the Frobenius number, but we may have some other options. Let be a numerical semigroup and let be a gap of . As we want to be a numerical semigroup, , and consequently must be in . But also for every positive integer . This means that . The set of gaps having these properties are known as special gaps.
s:=NumericalSemigroup(4,7,9,10);;
SpecialGaps(s);
[ 5, 6 ]
If we keep adding special gaps to our semigroup and the resulting semigroups, we will obtain the set of all oversemigroups of the given numerical semigroup.
s:=NumericalSemigroup(4,5,7);;
JupyterSplashDot(DotOverSemigroups(s));
When some bounds are attained¶
Numerical semigroups with maximal embedding dimension¶
We have already seen that the embedding dimension of a numerical semigroup is always less than or equal to the multiplicity. We say that a numerical semigroup has maximal embedding dimension if .
s:=NumericalSemigroup(3,5,7);;
IsMED(s);
true
A numerical semigroup is of maximal embedding dimension if and only if is a numerical semigroup, or equivalently, for any with , we have .
It turns out that the intersecction of two maximal embedding dimension numerical semigroups is again of maximal embedding dimension, and thus we can think about a maximal embedding dimension closure.
s:=NumericalSemigroup(3,5);;
MinimalGenerators(MEDClosure(s));
[ 3, 5, 7 ]
It also makes sense to talk abot the minimal generators as a numerical semigroup with maximal embedding dimension. An element in a numerical semigroup with maximal embedding dimension, with , will be in that minimal MED generating system if and only if is again a numerical semigroup with maximal embedding dimension.
MinimalMEDGeneratingSystemOfMEDNumericalSemigroup(NumericalSemigroup(3,5,7));
[ 3, 5 ]
t:=RemoveMinimalGeneratorFromNumericalSemigroup(5,s);
<Numerical semigroup with 3 generators>
MinimalGenerators(t);
[ 3, 8, 10 ]
IsMED(t);
true
If is a numerical semigroup with maximal embedding dimension, then , and thus . It is not hard to prove that has maximal embedding dimension if and only if it has maximal type.
Type(NumericalSemigroup(3,5,7));
2
A particular class of numerical semigroups with maximal embedding dimension is that of Arf numerical semigroups. A numerical semigroup if Arf if for any , with , one gets . Clearly, the intersection of two Arf numerical semigroups is again an Arf numerical semigroup.
MinimalGenerators(ArfNumericalSemigroupClosure(NumericalSemigroup(3,5)));
[ 3, 5, 7 ]
Irreducible numerical semigroups¶
We say that a numerical semigroup is irreducible if it cannot be expressed as the intersection of two numerical semigroups properly containing it.
It can be (easily) shown that if we fix a positive integer , then is irreducible if and only if it is maximal (with respect to inclusion) in the set of all numerical semigroups with Frobenius number (or equivalently, in the set of all numerical semigroups not containing ).
Recall that . Having less genus means being “bigger”, and so if is odd, then is irreducible if and only if .
For even, we obtain that is irreducible if and only if .
Every numerical semigroup can be expressed as a finite intersection of irreducible numerical semigroups. Two minimal (non-redundant) expressions of the semigroup as intersection of irreducible numerical semigroup may have different factors.
s:=NumericalSemigroup(3,7,8);
<Numerical semigroup with 3 generators>
SmallElements(s);
[ 0, 3, 6 ]
IsIrreducible(s);
false
l:=DecomposeIntoIrreducibles(s);
[ <Numerical semigroup with 2 generators>, <Numerical semigroup with 3 generators> ]
List(l,SmallElements);
[ [ 0, 3, 4, 6 ], [ 0, 3, 5 ] ]
Notice also that for every integer , both and cannot be in (since otherwise their sum, which is , would be in ). If we want to have the least possible number of gaps once the Frobenius number is fixed, then we do not want and to be gaps at the same time (unless they are the same and then ).
Assume that is odd. Then we say that is symmetric if for any integer , we have that . A numerical semigroup with odd Frobenius number is irreducible if and only if it is symmetric.
For the case even, we have to take into account . A numerical semigroup is pseudo-symmetric if is even and for any integer not in and different from , we have that . A numerical semigroup with even Frobenius number is irreducible if and only if it is pseudo-symmetric.
PseudoFrobenius(s);
[ 4, 5 ]
li:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(13);
[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup> ]
List(li,PseudoFrobenius);
[ [ 13 ], [ 13 ], [ 13 ], [ 13 ], [ 13 ], [ 13 ], [ 13 ], [ 13 ] ]
li:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(14);
[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup> ]
List(li,PseudoFrobenius);
[ [ 7, 14 ], [ 7, 14 ], [ 7, 14 ], [ 7, 14 ], [ 7, 14 ], [ 7, 14 ] ]
Symmetric numerical semigroups correspond with those numerical semigroups of type one, while is pseudo-symmetric if and only if . As we have seen above, there are numerical semigroups with type two that are not pseudo-symmetric.
LoadPackage("jupyterviz");
true
li:=List([1..25], i->[i,Length(IrreducibleNumericalSemigroupsWithFrobeniusNumber(i))]);
[ [ 1, 1 ], [ 2, 1 ], [ 3, 1 ], [ 4, 1 ], [ 5, 2 ], [ 6, 1 ], [ 7, 3 ], [ 8, 2 ], [ 9, 3 ], [ 10, 3 ], [ 11, 6 ], [ 12, 2 ], [ 13, 8 ], [ 14, 6 ], [ 15, 7 ], [ 16, 7 ], [ 17, 15 ], [ 18, 7 ], [ 19, 20 ], [ 20, 11 ], [ 21, 18 ], [ 22, 20 ], [ 23, 36 ], [ 24, 14 ], [ 25, 44 ] ]
# Plot(li);
Display(li);
[ [ 1, 1 ],
[ 2, 1 ],
[ 3, 1 ],
[ 4, 1 ],
[ 5, 2 ],
[ 6, 1 ],
[ 7, 3 ],
[ 8, 2 ],
[ 9, 3 ],
[ 10, 3 ],
[ 11, 6 ],
[ 12, 2 ],
[ 13, 8 ],
[ 14, 6 ],
[ 15, 7 ],
[ 16, 7 ],
[ 17, 15 ],
[ 18, 7 ],
[ 19, 20 ],
[ 20, 11 ],
[ 21, 18 ],
[ 22, 20 ],
[ 23, 36 ],
[ 24, 14 ],
[ 25, 44 ] ]
Almost symmetric numerical semigroups¶
Recall that for a numerical semigroup , . We say that is almost symmetric if . Consequently, these are numerical semigroups maximal with respect to inclusion once the type and the Frobenius number are fixed.
Clearly, every irreducible numerical semigroup is almost symmetric.
s:=NumericalSemigroup(3,7,8);;
IsAlmostSymmetric(s);
false
FrobeniusNumber(s);
5
la:=AlmostSymmetricNumericalSemigroupsWithFrobeniusNumber(5);
[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup> ]
List(la,SmallElements);
[ [ 0, 6 ], [ 0, 4, 6 ], [ 0, 2, 4, 6 ], [ 0, 3, 4, 6 ] ]
SmallElements(s);
[ 0, 3, 6 ]
li:=List([1..25], i->[i,Length(AlmostSymmetricNumericalSemigroupsWithFrobeniusNumber(i))]);;
Display(li);
[ [ 1, 1 ],
[ 2, 1 ],
[ 3, 2 ],
[ 4, 2 ],
[ 5, 4 ],
[ 6, 3 ],
[ 7, 7 ],
[ 8, 6 ],
[ 9, 11 ],
[ 10, 9 ],
[ 11, 20 ],
[ 12, 15 ],
[ 13, 32 ],
[ 14, 24 ],
[ 15, 47 ],
[ 16, 42 ],
[ 17, 83 ],
[ 18, 58 ],
[ 19, 131 ],
[ 20, 103 ],
[ 21, 188 ],
[ 22, 151 ],
[ 23, 323 ],
[ 24, 241 ],
[ 25, 494 ] ]
There are many other generalizations of symmetry.