<Section> <Heading>Some basic tests</Heading> This section describes some basic tests on numerical semigroups.The first described tests refer to the way the semigroup was created. Then are presented functions to test if a given list represents the small elements, gaps or the Apéry set (see <Ref Label="zlab1" />) of a numerical semigroup; to test if an integer belongs to a numerical semigroup and if a numerical semigroup is a subsemigroup of another one. <ManSection> <Attr Name="IsNumericalSemigroup" Arg="NS"/> <Attr Name="IsNumericalSemigroupByGenerators" Arg="NS"/> <Attr Name="IsNumericalSemigroupByMinimalGenerators" Arg="NS"/> <Attr Name="IsNumericalSemigroupByInterval" Arg="NS"/> <Attr Name="IsNumericalSemigroupByOpenInterval" Arg="NS"/> <Attr Name="IsNumericalSemigroupBySubAdditiveFunction" Arg="NS"/> <Attr Name="IsNumericalSemigroupByAperyList" Arg="NS"/> <Attr Name="IsNumericalSemigroupBySmallElements" Arg="NS"/> <Attr Name="IsNumericalSemigroupByGaps" Arg="NS"/> <Attr Name="IsNumericalSemigroupByFundamentalGaps" Arg="NS"/> <Attr Name="IsProportionallyModularNumericalSemigroup" Arg="NS"/> <Attr Name="IsModularNumericalSemigroup" Arg="NS"/> <Description> <A>NS</A> is a numerical semigroup and these attributes are available (their names should be self explanatory). <Example><![CDATA[ gap> s:=NumericalSemigroup(3,7); <Numerical semigroup with 2 generators> gap> AperyListOfNumericalSemigroupWRTElement(s,30);; gap> t:=NumericalSemigroupByAperyList(last); <Numerical semigroup> gap> IsNumericalSemigroupByGenerators(s); true gap> IsNumericalSemigroupByGenerators(t); false gap> IsNumericalSemigroupByAperyList(s); false gap> IsNumericalSemigroupByAperyList(t); true ]]></Example> </Description> </ManSection> <ManSection> <Attr Name="RepresentsSmallElementsOfNumericalSemigroup" Arg="L"/> <Description> Tests if the list <A>L</A> (which has to be a set) may represent the ``small" # elements of a numerical semigroup. <Example><![CDATA[ gap> L:=[ 0, 3, 6, 9, 11, 12, 14, 15, 17, 18, 20 ]; [ 0, 3, 6, 9, 11, 12, 14, 15, 17, 18, 20 ] gap> RepresentsSmallElementsOfNumericalSemigroup(L); true gap> L:=[ 6, 9, 11, 12, 14, 15, 17, 18, 20 ]; [ 6, 9, 11, 12, 14, 15, 17, 18, 20 ] gap> RepresentsSmallElementsOfNumericalSemigroup(L); false ]]></Example> </Description> </ManSection> <ManSection> <Attr Name="RepresentsGapsOfNumericalSemigroup" Arg="L"/> <Description> Tests if the list <A>L</A> may represent the gaps (see <Ref Label="xx1" />) of a numerical semigroup. <Example><![CDATA[ gap> s:=NumericalSemigroup(3,7); <Numerical semigroup with 2 generators> gap> L:=GapsOfNumericalSemigroup(s); [ 1, 2, 4, 5, 8, 11 ] gap> RepresentsGapsOfNumericalSemigroup(L); true gap> L:=Set(List([1..21],i->RandomList([1..50]))); [ 2, 6, 7, 8, 10, 12, 14, 19, 24, 28, 31, 35, 42, 50 ] gap> RepresentsGapsOfNumericalSemigroup(L); false ]]></Example> </Description> </ManSection> <ManSection> <Func Name="IsAperyListOfNumericalSemigroup" Arg="L"/> <Description> Tests whether a list <A>L</A> of integers may represent the Apéry list of a numerical semigroup. It returns <K>true</K> when the periodic function represented by <A>L</A> is subadditive (see <Ref Func="RepresentsPeriodicSubAdditiveFunction" />) and the remainder of the division of <C>L[i]</C> by the length of <A>L</A> is <C>i</C> and returns <K>false</K> otherwise (the crieterium used is the one explained in <Cite Key="R96"></Cite>). <Example><![CDATA[ gap> IsAperyListOfNumericalSemigroup([0,21,7,28,14]); true ]]></Example> </Description> </ManSection> <ManSection> <Func Name="IsSubsemigroupOfNumericalSemigroup" Arg="S, T"/> <Description> <A>S</A> and <A>T</A> are numerical semigroups. Tests whether <A>T</A> is contained in <A>S</A>. <Example><![CDATA[ gap> S := NumericalSemigroup("modular", 5,53); <Modular numerical semigroup satisfying 5x mod 53 <= x > gap> T := NumericalSemigroup(2,3); <Numerical semigroup with 2 generators> gap> IsSubsemigroupOfNumericalSemigroup(T,S); true gap> IsSubsemigroupOfNumericalSemigroup(S,T); false ]]></Example> </Description> </ManSection> <ManSection> <Oper Name="BelongsToNumericalSemigroup" Arg="n,S"/> <Description> <A>n</A> is an integer and <A>S</A> is a numerical semigroup. Tests whether <A>n</A> belongs to <A>S</A>. <C>n in S</C> is the short for <C>BelongsToNumericalSemigroup(n,S)</C>. <Example><![CDATA[ gap> S := NumericalSemigroup("modular", 5,53); <Modular numerical semigroup satisfying 5x mod 53 <= x > gap> BelongsToNumericalSemigroup(15,S); false gap> 15 in S; false gap> SmallElementsOfNumericalSemigroup(S); [ 0, 11, 12, 13, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 38, 39, 43 ] gap> BelongsToNumericalSemigroup(13,S); true gap> 13 in S; true ]]></Example> </Description> </ManSection> </Section>