
<Section>
    <Heading>
        Factorizations in Numerical Semigroups
    </Heading>
        Let <M> S </M> be a numerical semigroup minimally generated by
        <M> \{m_1,\ldots,m_n\} </M>. A factorization of an element <M>s\in S</M>
        is an n-tuple <M> a=(a_1,\ldots,a_n) </M> of nonnegative integers such that
        <M> n=a_1 n_1+\cdots+a_n m_n</M>. The lenght of <M>a</M> is <M>|a|=a_1+\cdots+a_n</M>.
        Given two factorizations <M>a</M> and <M>b</M> of  <M>n</M>, the distance
        between <M>a</M> and <M>b</M> is <M>d(a,b)=\max \{ |a-\gcd(a,b)|,|b-\gcd(a,b)|\}</M>,
        where <M>\gcd((a_1,\ldots,a_n),(b_1,\ldots,b_n))=(\min(a_1,b_1),\ldots,\min(a_n,b_n))</M>.

        <P/>
        If <M>l_1>\cdots > l_k</M> are the lenghts of all the factorizations of
        <M>s \in S</M>, the Delta set associated to <M>s</M> is
        <M>\Delta(s)=\{l_1-l_2,\ldots,l_k-l_{k-1}\}</M>.

        <P/>
        The catenary degree of <M>S</M> is the least positive integer <M>c</M> such that for any two
        factorizations <M>a</M> and <M>b</M> of an element in <M>S</M>, there exists a chain of
        factorizations staring in <M>a</M> and ending in <M>b</M> and so that the distance between
        two consecutive links is at most <M>c</M>.

        <P/>
        The tame degree of <M>S</M> is the least positive integer <M>t</M> for any
        factorization <M>a</M> of an element <M>s</M> in <M>S</M>, and any <M>i</M> such that
        <M>s-m_i\in S</M>, there exists another factorization <M>b</M> of <M>s</M> so that
        the distance to <M>a</M> is at most <M>t</M> and <M>b_i\not = 0</M>.

        <P/>
        The basic properties of these constants can be found in <Cite Key="GHKb"></Cite>.
        The algorithm used to compute the catenary and tame degree
        is an adaptation of the algorithms appearing
        in <Cite Key="CGLPR"></Cite> for numerical semigroup (see <Cite Key="CGL"></Cite>).
        The computation of the elascitiy of a numerical semigroup reduces to <M>m/n</M> with <M>m</M> the
        multiplicity of the semigroup and <M>n</M> its largest minimal generator (see <Cite Key="CHM06"></Cite>
        or <Cite Key="GHKb"></Cite>).


    <ManSection>

        <Func Arg="n, S" Name="FactorizationsElementWRTNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup and <A>n</A> a nonnegative integer.
            The output is the set of factorizations of <A>n</A> in terms of the minimal
            generating set of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> FactorizationsElementWRTNumericalSemigroup(1100,s);
[ [ 0, 0, 0, 2, 2, 0 ], [ 0, 2, 3, 0, 0, 1 ], [ 0, 8, 1, 0, 0, 0 ],
  [ 5, 1, 1, 0, 0, 1 ] ]
]]></Example>
         </Description>
    </ManSection>


    <ManSection>

        <Func Arg="n, S" Name="LengthsOfFactorizationsElementWRTNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup and <A>n</A> a nonnegative integer.
            The output is the set of lengths of the factorizations of <A>n</A> in terms of the minimal
            generating set of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> LengthsOfFactorizationsElementWRTNumericalSemigroup(1100,s);
[ 4, 6, 8, 9 ]
]]></Example>
         </Description>
    </ManSection>


    <ManSection>

        <Func Arg="n, S" Name="ElasticityOfFactorizationsElementWRTNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup and <A>n</A> a positive integer.
            The output is the maximum length divided by the minimum length
            of the factorizations of <A>n</A> in terms of the minimal
            generating set of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> ElasticityOfFactorizationsElementWRTNumericalSemigroup(1100,s);
9/4
]]></Example>
         </Description>
    </ManSection>


    <ManSection>

        <Func Arg="S" Name="ElasticityOfNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup.
            The output is the elasticity of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> ElasticityOfNumericalSemigroup(s);
286/101
]]></Example>
         </Description>
    </ManSection>


    <ManSection>

        <Func Arg="n, S" Name="DeltaSetOfFactorizationsElementWRTNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup and <A>n</A> a nonnegative integer.
            The output is the Delta set of the factorizations of <A>n</A> in terms of the minimal
            generating set of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> DeltaSetOfFactorizationsElementWRTNumericalSemigroup(1100,s);
[ 1, 2 ]
]]></Example>
         </Description>
    </ManSection>

    <ManSection>

        <Func Arg="n, S" Name="MaximumDegreeOfElementWRTNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup and <A>n</A> a nonnegative integer.
            The output is the maximum length of the factorizations of <A>n</A> in terms of the minimal
            generating set of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> MaximumDegreeOfElementWRTNumericalSemigroup(1100,s);
9
]]></Example>
         </Description>
    </ManSection>


    <ManSection>

        <Func Arg="S" Name="CatenaryDegreeNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup.
            The output is the catenary degree of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> CatenaryDegreeNumericalSemigroup(s);
8
]]></Example>
         </Description>
    </ManSection>

    <ManSection>
        <Func Arg="S" Name="TameDegreeNumericalSemigroup"></Func>
        <Description>
            <A>S</A> is a numerical semigroup.
            The output is the tame degree of <A>S</A>.

            <Example><![CDATA[
gap> s:=NumericalSemigroup(101,113,196,272,278,286);
<Numerical semigroup with 6 generators>
gap> TameDegreeNumericalSemigroup(s);
14
]]></Example>
        </Description>
    </ManSection>
</Section>