Numerical semigroups with maximal embedding dimension This section describes the basic functions to deal with maximal embedding dimension numerical semigroups, and MED generating systems. S is a numerical semigroup. Returns true if S is a MED numerical semigroup and false otherwise.
gap> IsMED(NumericalSemigroup(3,5,7)); true gap> IsMEDNumericalSemigroup(NumericalSemigroup(3,5)); false
S is a numerical semigroup. Returns the MED closure of S.
gap> s := MEDClosure(NumericalSemigroup(3,5)); <Numerical semigroup> gap> MinimalGenerators(s); [ 3, 5, 7 ] gap> MEDNumericalSemigroupClosure(NumericalSemigroup(3,5)) = s; true
S is a MED numerical semigroup. Returns the minimal MED generating system of S.
gap> MinimalMEDGeneratingSystemOfMEDNumericalSemigroup( > NumericalSemigroup(3,5,7)); [ 3, 5 ]
Numerical semigroups with the Arf property and Arf closures A numerical semigroup S is Arf if for every x,y,z in S with x\geq y\geq z, one has that x+y-z\in S. Numerical semigroups with the Arf property are a special kind of numerical semigroups with maximal embedding dimension.

The intersection of two Arf numerical semigroups is again Arf, and thus we can consider the Arf closure of a set of nonnegative integers with greatest common divisor equal to one. Analogously as with MED numerical semigroups, we define Arf systems of generators and minimal Arf generating system for an Arf numerical semigroup. These are also unique (see ). S is a numerical semigroup. Returns true if S is an Arf numerical semigroup and false otherwise.

This property implies and .
gap> IsArf(NumericalSemigroup(3,5,7)); true gap> IsArfNumericalSemigroup(NumericalSemigroup(3,7,11)); false gap> IsMED(NumericalSemigroup(3,7,11)); true
S is a numerical semigroup. Returns the Arf closure of S.
gap> s := NumericalSemigroup(3,7,11);; gap> t := ArfClosure(s); <Numerical semigroup> gap> MinimalGenerators(t); [ 3, 7, 8 ] gap> ArfNumericalSemigroupClosure(s) = t; true
S is an Arf numerical semigroup. Returns the minimal Arf generating system of S. The current version of this algorithm is due to G. Zito.
gap> s := NumericalSemigroup(3,7,8); <Numerical semigroup with 3 generators> gap> ArfCharactersOfArfNumericalSemigroup(s); [ 3, 7 ] gap> MinimalArfGeneratingSystemOfArfNumericalSemigroup(s); [ 3, 7 ]
f is an integer. The output is the set of all Arf numerical semigroups with Frobenius number f. The current version of this algorithm is due to G. Zito.
gap> ArfNumericalSemigroupsWithFrobeniusNumber(10); [ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup> ] gap> Set(last,MinimalGenerators); [ [ 3, 11, 13 ], [ 4, 11, 13, 14 ], [ 6, 9, 11, 13, 14, 16 ], [ 6, 11, 13, 14, 15, 16 ], [ 7, 9, 11, 12, 13, 15, 17 ], [ 7, 11, 12, 13, 15, 16, 17 ], [ 8, 11, 12, 13, 14, 15, 17, 18 ], [ 9, 11, 12, 13, 14, 15, 16, 17, 19 ], [ 11 .. 21 ] ]
f is an integer. The output is the set of all Arf numerical semigroups with Frobenius number less than or equal to f. The current version of this algorithm is due to G. Zito.
gap> Length(ArfNumericalSemigroupsWithFrobeniusNumberUpTo(10)); 46
g is a nonnegative integer. The output is the set of all Arf numerical semigroups with genus equal to g. The current version of this algorithm is due to G. Zito.
gap> Length(ArfNumericalSemigroupsWithGenus(10)); 21
g is a nonnegative integer. The output is the set of all Arf numerical semigroups with genus less than or equal to g. The current version of this algorithm is due to G. Zito.
gap> Length(ArfNumericalSemigroupsWithGenusUpTo(10)); 86
f and g are integers. The output is the set of all Arf numerical semigroups with genus g and Frobenius number f. The algorithm is explained in .
gap> ArfNumericalSemigroupsWithGenusAndFrobeniusNumber(10,13); [ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup> ] gap> List(last,MinimalGenerators); [ [ 8, 10, 12, 14, 15, 17, 19, 21 ], [ 6, 10, 14, 15, 17, 19 ], [ 5, 12, 14, 16, 18 ], [ 6, 9, 14, 16, 17, 19 ], [ 4, 14, 15, 17 ] ]
s is an Arf numerical semigroup. The output is the set of gaps g of s such that s\cup \{g\} is an Arf numerical semigroup. The implementation is based on .
gap> s:=NumericalSemigroup(10,24,25,26,27,28,29,31,32,33);; gap> ArfSpecialGaps(s); [ 15, 22, 23 ]
s is an Arf numerical semigroup. The output is the set of Arf oversemigroups of s. The implementation is based on .
gap> s:=NumericalSemigroup(6,9,11,13,14,16);; gap> List(ArfOverSemigroups(s),MinimalGenerators); [ [ 1 ], [ 2, 3 ], [ 2, 5 ], [ 2, 7 ], [ 2, 9 ], [ 3 .. 5 ], [ 3, 5, 7 ], [ 3, 7, 8 ], [ 3, 8, 10 ], [ 3, 10, 11 ], [ 3, 11, 13 ], [ 4 .. 7 ], [ 4, 6, 7, 9 ], [ 4, 6, 9, 11 ], [ 5 .. 9 ], [ 6 .. 11 ], [ 6, 8, 9, 10, 11, 13 ], [ 6, 9, 10, 11, 13, 14 ], [ 6, 9, 11, 13, 14, 16 ] ]
s is an Arf numerical semigroup. Detects if s is Arf-irreducible, that is, irreducible in the Frobenius variety of Arf numerical semigroups. The implementation is based on .
gap> s:=NumericalSemigroupBySmallElements([0,10,17,20]);; gap> IsArfIrreducible(s); true gap> IsIrreducible(s); false
s is an Arf numerical semigroup. The output is a set of Arf irreuducible numerical semigroups whose intersection is s. This decomposition is not redundant in the sense that no semigroup can be removes. The implementation is based on .
gap> s:=NumericalSemigroup(6,9,11,13,14,16);; gap> List(DecomposeIntoArfIrreducibles(s),MinimalGenerators); [ [ 2, 9 ], [ 3, 11, 13 ] ]
Saturated numerical semigroups A numerical semigroup S is saturated if the following condition holds: s, s_1 , \ldots , s_r in S are such that s_i \leq s for all i in \{1, \ldots , r\} and z_1 , \ldots , z_r in \mathbb Z are such that z_1 s_1 + \cdots + z_r s_r\geq 0, then s + z_1 s_1 + \cdots + z_r s_r in S. Saturated numerical semigroups are a special kind of numerical semigroups with maximal embedding dimension.

The intersection of two saturated numerical semigroups is again saturated, and thus we can consider the saturated closure of a set of nonnegative integers with greatest common divisor equal to one (see ). S is a numerical semigroup. Returns true if S is a saturated numerical semigroup and false otherwise.

This property implies .
gap> IsSaturated(NumericalSemigroup(4,6,9,11)); true gap> IsSaturatedNumericalSemigroup(NumericalSemigroup(8, 9, 12, 13, 15, 19 )); false
S is a numerical semigroup. Returns the saturated closure of S.
gap> s := NumericalSemigroup(8, 9, 12, 13, 15);; gap> SaturatedClosure(s); <Numerical semigroup> gap> MinimalGenerators(last); [ 8 .. 15 ] gap> SaturatedNumericalSemigroupClosure(s) = SaturatedClosure(s); true
f is an integer. The output is the set of all saturated numerical semigroups with Frobenius number f.
gap> SaturatedNumericalSemigroupsWithFrobeniusNumber(10); [ <Numerical semigroup with 3 generators>, <Numerical semigroup with 4 generators>, <Numerical semigroup with 6 generators>, <Numerical semigroup with 6 generators>, <Numerical semigroup with 7 generators>, <Numerical semigroup with 8 generators>, <Numerical semigroup with 9 generators>, <Numerical semigroup with 11 generators> ] gap> List(last,MinimalGenerators); [ [ 3, 11, 13 ], [ 4, 11, 13, 14 ], [ 6, 9, 11, 13, 14, 16 ], [ 6, 11, 13, 14, 15, 16 ], [ 7, 11, 12, 13, 15, 16, 17 ], [ 8, 11, 12, 13, 14, 15, 17, 18 ], [ 9, 11, 12, 13, 14, 15, 16, 17, 19 ], [ 11 .. 21 ] ]