  
  [1X4 Presentations of Numerical Semigroups[0X
  
  In  this  chapter  we  explain  how  to  compute a minimal presentation of a
  numerical semigroup. There are three functions involved in this process.
  
  
  [1X4.1 Presentations of Numerical Semigroups[0X
  
  [1X4.1-1 FortenTruncatedNCForNumericalSemigroups[0m
  
  [2X> FortenTruncatedNCForNumericalSemigroups( [0X[3XL[0X[2X ) _____________________[0Xfunction
  
  [3XL[0m  contains  the  list  of  coefficients  of  a single linear equation. This
  function  gives  a  minimal generator of the affine semigroup of nonnegative
  solutions  of  this  equation  with  the  first coordinate equal to one (see
  [CD94]). Returns [10Xfail[0m if no solution exists.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> FortenTruncatedNCForNumericalSemigroups([ -57, 3 ]);[0X
    [4X[ 1, 19 ][0X
    [4Xgap> FortenTruncatedNCForNumericalSemigroups([ -57, 33 ]);[0X
    [4Xfail[0X
    [4Xgap> FortenTruncatedNCForNumericalSemigroups([ -57, 19 ]);[0X
    [4X[ 1, 3 ][0X
  [4X------------------------------------------------------------------[0X
  
  [1X4.1-2 MinimalPresentationOfNumericalSemigroup[0m
  
  [2X> MinimalPresentationOfNumericalSemigroup( [0X[3XS[0X[2X ) _____________________[0Xfunction
  
  [3XS[0m is a numerical semigroup. The output is a list of lists with two elements.
  Each  list  of  two  elements  represents  a  relation  between  the minimal
  generators  of the numerical semigroup. If { {x_1,y_1},...,{x_k,y_k}} is the
  output  and  {m_1,...,m_n}  is  the  minimal  system  of  generators  of the
  numerical  semigroup,  then  {x_i,y_i}={{a_i_1,...,a_i_n},{b_i_1,...,b_i_n}}
  and a_i_1m_1+cdots+a_i_nm_n= b_i_1m_1+ cdots +b_i_nm_n.
  
  Any  other  relation  among  the  minimal generators of the semigroup can be
  deduced from the ones given in the output.
  
  The algorithm implemented is described in [Ros96a] (see also [RG99]).
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> s:=NumericalSemigroup(3,5,7);[0X
    [4X<Numerical semigroup with 3 generators>[0X
    [4Xgap> MinimalPresentationOfNumericalSemigroup(s);[0X
    [4X[ [ [ 1, 0, 1 ], [ 0, 2, 0 ] ], [ [ 4, 0, 0 ], [ 0, 1, 1 ] ],[0X
    [4X  [ [ 3, 1, 0 ], [ 0, 0, 2 ] ] ][0X
    [4X[0X
    [4X                        [0X
  [4X------------------------------------------------------------------[0X
  
  The first element in the list means that 1x 3+1x 7=2x 5, and so on.
  
  [1X4.1-3 GraphAssociatedToElementInNumericalSemigroup[0m
  
  [2X> GraphAssociatedToElementInNumericalSemigroup( [0X[3Xn, S[0X[2X ) _____________[0Xfunction
  
  [3XS[0m is a numerical semigroup and [3Xn[0m is an element in [3XS[0m.
  
  The  output  is a pair. If {m_1,...,m_n} is the set of minimal generators of
  [3XS[0m,  then  the first component is the set of vertices of the graph associated
  to  [3Xn[0m in [3XS[0m, that is, the set { m_i | n-m_iin S}, and the second component is
  the set of edges of this graph, that is, { {m_i,m_j} | n-(m_i+m_j)in S}.
  
  This  function  is  used  to compute a minimal presentation of the numerical
  semigroup [3XS[0m, as explained in [Ros96a].
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> s:=NumericalSemigroup(3,5,7);[0X
    [4X<Numerical semigroup with 3 generators>[0X
    [4Xgap> GraphAssociatedToElementInNumericalSemigroup(10,s);[0X
    [4X[ [ 3, 5, 7 ], [ [ 3, 7 ] ] ][0X
    [4X[0X
    [4X                        [0X
  [4X------------------------------------------------------------------[0X
  
