by P.A. García-Sánchez, D. Marín-Aragón, and A.M. Robles-Pérez
Case study of the tree of numerical semigroups with multiplicity three
A numerical semigroup is a submonoid of the set of nonnegative integers with respect to addition, with the special property that only finitely many positive integers do not belong to the semigroup. These integers not in the numerical semigroup are called gaps, and their cardinality, the genus of the numerical semigroup.
The number of numerical semigroups with a given genus seems to grow as the genus grows. It was conjectured (and later solved) that this sequence grows as the Fibonacci series.
GAP offers a package for working with numerical semigroups (NumericalSgps), and a package for displaying data in a jupyter notebook is under development: francy. FrancyMonoids takes profit of them both. In order to use it in GAP we load it with LoadPackage
.
LoadPackage("FrancyMonoids");
#I Please load package NormalizInterface or 4ti2Interface #I to have extended functionalities. #I Please load package SingularInterface or singular (not both) #I or GradedModules to have extended functionalities.
true
FrancyMonoids loads both NumericalSgps and francy, so for instance we may have a look at the first 15 elements of our sequence.
List([1..15], g->Length(NumericalSemigroupsWithGenus(g)));
[ 1, 2, 4, 7, 12, 23, 39, 67, 118, 204, 343, 592, 1001, 1693, 2857 ]
The maximum genus for which we know the number of numerical semigroups with this genus is 70. Just the set of numerical semigroups with genus less than or equal to 57 is worth 14TB of memory (see Manuel Delgado's numbers page with some nice pictures). In this repository you will find the sequence up to 70.
Even though it has been shown that the number of numerical semigroups with given genus grows like the Fibonacci sequence, we still do not know if there are more numerical semigroups with genus
For a given numerical semigroup
Let us have a look at the tree of numerical semigroups with genus up to 6. We start with
Francy gives the possibility of drawing d3js interactive trees. Methods to construct trees and draw them using GAP are provided in francy.
DrawTreeOfSonsOfNumericalSemigroup(NumericalSemigroup(1),6,MinimalGenerators);
Dark blue dots in levels over the last level are leafs, that is, numerical semigroups with no irreducibles greater than the Frobenius number. Non-leaves are "collapsable": by clicking on them the subtree rooted in that node collapses to the node. Also zoom and dragging is possible.
It would be nice to control how many leaves do we have in a certain level, and how many numerical semigroups with more than one descendant.
The multiplicity of a numerical semigroup is the least positive integer in the semigroup. A simplification of the above problem would be to see if for a given multiplicity
Let us have a look at how the tree restricted to multiplicity three looks like.
First, we must change MinimalGenerators
in the above example to compute those generators that are not the multiplicity, and then replace
gens:=s->Difference(MinimalGenerators(s), [Multiplicity(s)]);
function( s ) ... end
s:=NumericalSemigroup(3,4,5);
Numerical semigroup with 3 generators
DrawTreeOfSonsOfNumericalSemigroup(s,5,gens);
Observe that the labels of the nodes are the set of minimal generators of the semigroups without the multiplicity.
Let us go a bit further.
DrawTreeOfSonsOfNumericalSemigroup(s,15,gens);
And a couple of steps beyond.
DrawTreeOfSonsOfNumericalSemigroup(s,25,gens);
It looks like a pattern arises. And indeed is the case. There are several places where numerical semigroups with multiplicity 3 and genus
If you want to know more, please have a look at this preprint. You will find there references and results for multiplicity up to five. This is a quite easy problem to state, and it has produced a nice bunch of beautiful papers.
An introduction to numerical semigroups can be found here and some applications in this monograph.