<Section> <Heading> Adding and removing elements of a numerical semigroup </Heading> In this section we show how to construct new numerical semigroups from a given numerical semigroup. Two dual operations are presented. The first one removes a minimal generator from a numerical semigroup. The second adds a special gap to a semigroup (see <Cite Key="RGGJ03"></Cite>). <ManSection> <Func Arg="n, S" Name="RemoveMinimalGeneratorFromNumericalSemigroup"></Func> <Description> <A>S</A> is a numerical semigroup and <A>n</A> is one if its minimal generators. <P/> The output is the numerical semigroup <M> <A>S</A> \setminus\{<A>n</A>\} </M> (see <Cite Key="RGGJ03"></Cite>; <M>S\setminus\{n\}</M> is a numerical semigroup if and only if <M>n</M> is a minimal generator of <M>S</M>). <Example><![CDATA[ gap> s:=NumericalSemigroup(3,5,7); <Numerical semigroup with 3 generators> gap> RemoveMinimalGeneratorFromNumericalSemigroup(7,s); <Numerical semigroup with 3 generators> gap> MinimalGeneratingSystemOfNumericalSemigroup(last); [ 3, 5 ] ]]> </Example> </Description> </ManSection> <ManSection> <Func Arg="g, S" Name="AddSpecialGapOfNumericalSemigroup"></Func> <Description> <A>S</A> is a numerical semigroup and <A>g</A> is a special gap of <A>S</A> <P/> The output is the numerical semigroup <M> <A>S</A> \cup\{<A>g</A>\} </M> (see <Cite Key="RGGJ03"></Cite>, where it is explained why this set is a numerical semigroup). <Example><![CDATA[ gap> s:=NumericalSemigroup(3,5,7); <Numerical semigroup with 3 generators> gap> s2:=RemoveMinimalGeneratorFromNumericalSemigroup(5,s); <Numerical semigroup with 3 generators> gap> s3:=AddSpecialGapOfNumericalSemigroup(5,s2); <Numerical semigroup> gap> SmallElementsOfNumericalSemigroup(s) = > SmallElementsOfNumericalSemigroup(s3); true gap> s=s3; true ]]> </Example> </Description> </ManSection> <ManSection> <Func Name="IntersectionOfNumericalSemigroups" Arg="S, T"/> <Description> <A>S</A> and <A>T</A> are numerical semigroups. Computes the intersection of <A>S</A> and <A>T</A> (which is a numerical semigroup). <Example><![CDATA[ gap> S := NumericalSemigroup("modular", 5,53); <Modular numerical semigroup satisfying 5x mod 53 <= x > gap> T := NumericalSemigroup(2,17); <Numerical semigroup with 2 generators> gap> SmallElementsOfNumericalSemigroup(S); [ 0, 11, 12, 13, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 38, 39, 43 ] gap> SmallElementsOfNumericalSemigroup(T); [ 0, 2, 4, 6, 8, 10, 12, 14, 16 ] gap> IntersectionOfNumericalSemigroups(S,T); <Numerical semigroup> gap> SmallElementsOfNumericalSemigroup(last); [ 0, 12, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 37, 38, 39, 43 ] ]]></Example> </Description> </ManSection> <ManSection> <Func Name="QuotientOfNumericalSemigroup" Arg="S, n"/> <Description> <A>S</A> is a numerical semigroup and <A>n</A> is an integer. Computes the quotient of <A>S</A> by <A>n</A>, that is, the set <M>\{ x\in {\mathbb N}\ |\ nx \in S\}</M>, which is again a numerical semigroup. <C>S / n</C> may be used as a short for <C>QuotientOfNumericalSemigroup(S, n)</C>. <Example><![CDATA[ gap> s:=NumericalSemigroup(3,29); <Numerical semigroup with 2 generators> gap> SmallElementsOfNumericalSemigroup(s); [ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 29, 30, 32, 33, 35, 36, 38, 39, 41, 42, 44, 45, 47, 48, 50, 51, 53, 54, 56 ] gap> t:=QuotientOfNumericalSemigroup(s,7); <Numerical semigroup> gap> SmallElementsOfNumericalSemigroup(t); [ 0, 3, 5, 6, 8 ] gap> u := s / 7; <Numerical semigroup> gap> SmallElementsOfNumericalSemigroup(u); [ 0, 3, 5, 6, 8 ] ]]></Example> </Description> </ManSection> </Section>