Constructing the set of all numerical semigroups containing a given numerical semigroup
In order to construct the set of numerical semigroups containing a fixed numerical semigroup S, one first constructs its unitary extensions, that is to say, the sets S\cup\{g\} that are numerical semigroups with g a positive integer. This is achieved by constructing the special gaps of the semigroup, and then adding each of them to the numerical semigroup. Then we repeat the process for each of this new numerical semigroups until we reach {\mathbb N} .

These procedures are described in .

s is a numerical semigroup. The output is the set of numerical semigroups containing it. gap> OverSemigroupsNumericalSemigroup(NumericalSemigroup(3,5,7)); [ <Numerical semigroup with 1 generators>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup with 3 generators> ] ]] gap> List(last,s->MinimalGeneratingSystemOfNumericalSemigroup(s)); [ [ 1 ], [ 3, 4, 5 ], [ 2, 3 ], [ 3, 5, 7 ] ]
f is an non zero integer greater than or equal to -1. The output is the set of numerical semigroups with Frobenius number f. The algorithm implemented is given in . gap> Length(NumericalSemigroupsWithFrobeniusNumber(20)); 900