<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>
