  
  [1X12 [33X[0;0YGood semigroups[133X[101X
  
  [33X[0;0YWe will only cover here good semigroups of [22XN^2[122X.[133X
  
  [33X[0;0YA [13Xgood semigroup[113X [22XS[122X is a submonoid of [22XN^2[122X, with the following properties.[133X
  
  [33X[0;0Y(G1) It is closed under infimums (minimum componentwise).[133X
  
  [33X[0;0Y(G2)  If [22Xa, b ∈ M[122X and [22Xa_i = b_i[122X for some [22Xi ∈ {1, 2}[122X, then there exists [22Xc ∈ M[122X
  such that [22Xc_i > a_i = b_i[122X and [22Xc_j = min{a_j,b_j}[122X, with [22Xj∈{1,2}∖ {i}[122X.[133X
  
  [33X[0;0Y(G3) There exists [22XC∈N^n[122X such that [22XC+N^n⊆ S[122X.[133X
  
  [33X[0;0YValue  semigroups  of  algebroid branches are good semigroups, but there are
  good  semigroups that are not of this form. Since good semigroups are closed
  under  infimums, if [22XC_1[122X and [22XC_2[122X fulfill [22XC_i+N^n⊆ S[122X, then [22XC_1∧ C_2+N^n⊆ S[122X. So
  there  is  a minimum [22XC[122X fulfilling [22XC+N^n⊆ S[122X, which is called the [13Xconductor[113X of
  [22XS[122X.[133X
  
  [33X[0;0YThe contents of this chapter are described in [DGSMT18].[133X
  
  
  [1X12.1 [33X[0;0YDefining good semigroups[133X[101X
  
  [33X[0;0YGood   semigroups   can   be   constructed   with   numerical  duplications,
  amalgamations, cartesian products, or by giving some of its generators and a
  candidate  for conductor. Not every set determines a good semigroup; this is
  because  the  intersection of good semigroups might not be a good semigroup.
  So the terminology "good semigroup generated" by a set is a bit fragile.[133X
  
  [1X12.1-1 IsGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XIsGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0YDetects if [3XS[103X is an object of type good semigroup.[133X
  
  [1X12.1-2 NumericalSemigroupDuplication[101X
  
  [33X[1;0Y[29X[2XNumericalSemigroupDuplication[102X( [3XS[103X, [3XE[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is  a numerical semigroup and [3XE[103X is an ideal of [3XS[103X with [22XE⊆ S[122X. The output is
  [22XS⋈ E= D∪ (E× E)∪{ a∧ b∣ a∈ D, b∈ E× E},[122X where [22XD={(s,s)∣ s∈ S}[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27Xl:=Cartesian([1..11],[1..11]);;[127X[104X
    [4X[25Xgap>[125X [27XIntersection(dup,l);[127X[104X
    [4X[28X[ [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],[128X[104X
    [4X[28X  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ],[128X[104X
    [4X[28X  [ 9, 10 ], [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ],[128X[104X
    [4X[28X  [ 11, 9 ], [ 11, 11 ] ][128X[104X
    [4X[25Xgap>[125X [27X[384938749837,349823749827] in dup;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.1-3 AmalgamationOfNumericalSemigroups[101X
  
  [33X[1;0Y[29X[2XAmalgamationOfNumericalSemigroups[102X( [3XS[103X, [3XE[103X, [3Xb[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a numerical semigroup, [3XE[103X is an ideal of a numerical semigroup [22XT[122X with [22XE⊆
  T[122X, and [3Xb[103X is an integer such that multiplication by [3Xb[103X is a morphism from [3XS[103X to
  [22XT[122X, say [22Xg[122X. The output is [22XS⋈^g E= D∪(g^-1(E)× E)∪ {a∧ b∣ a∈ D, b∈ g^-1(E)× E},[122X
  where [22XD={(s,b s)∣ s∈ S}[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(2,3);;[127X[104X
    [4X[25Xgap>[125X [27Xt:=NumericalSemigroup(3,4);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=3+t;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=AmalgamationOfNumericalSemigroups(s,e,2);;[127X[104X
    [4X[25Xgap>[125X [27X[2,3] in dup;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.1-4 CartesianProductOfNumericalSemigroups[101X
  
  [33X[1;0Y[29X[2XCartesianProductOfNumericalSemigroups[102X( [3XS[103X, [3XT[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  and  [3XT[103X  are  numerical  semigroups.  The  output is [22XS× T[122X, which is a good
  semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(2,3);;[127X[104X
    [4X[25Xgap>[125X [27Xt:=NumericalSemigroup(3,4);;[127X[104X
    [4X[25Xgap>[125X [27XIsGoodSemigroup(CartesianProductOfNumericalSemigroups(s,t));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.1-5 GoodSemigroup[101X
  
  [33X[1;0Y[29X[2XGoodSemigroup[102X( [3XX[103X, [3XC[103X ) [32X function[133X
  
  [33X[0;0Y[3XX[103X  is  a list of points with nonnegative integer coordinates and [22XC[122X is a pair
  of  nonnegative  integers (a list with two elements). If [22XM[122X is the affine and
  infimum  closure of [3XX[103X, decides if it is a good semigroup, and if so, outputs
  it.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[4,3],[7,13],[11,17],[14,27],[15,27],[16,20],[25,12],[25,16]];[127X[104X
    [4X[28X[ [ 4, 3 ], [ 7, 13 ], [ 11, 17 ], [ 14, 27 ], [ 15, 27 ], [ 16, 20 ],[128X[104X
    [4X[28X  [ 25, 12 ], [ 25, 16 ] ][128X[104X
    [4X[25Xgap>[125X [27XC:=[25,27];[127X[104X
    [4X[28X[ 25, 27 ][128X[104X
    [4X[25Xgap>[125X [27XGoodSemigroup(G,C);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
  [4X[32X[104X
  
  
  [1X12.2 [33X[0;0YNotable elements[133X[101X
  
  [33X[0;0YGood semigroups are a natural extension of numerical semigroups, and so some
  of  their  notable  elements  are  called  in  the  same  way  as in the one
  dimensional case.[133X
  
  [1X12.2-1 BelongsToGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XBelongsToGoodSemigroup[102X( [3Xv[103X, [3XS[103X ) [32X operation[133X
  [33X[1;0Y[29X[2X\in[102X( [3Xv[103X, [3XS[103X ) [32X operation[133X
  
  [33X[0;0Y[3XS[103X  is  a good semigroup and [3Xv[103X is a pair of integers. The output is [10Xtrue[110X if [3Xv[103X
  is  in [3XS[103X, and [10Xfalse[110X otherwise. Other ways to use this operation are [10X\in(v,S)[110X
  and [10Xv in S[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(2,3);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27XBelongsToGoodSemigroup([2,2],dup);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27X[2,2] in dup;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27X[3,2] in dup;[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X12.2-2 Conductor[101X
  
  [33X[1;0Y[29X[2XConductor[102X( [3XS[103X ) [32X function[133X
  [33X[1;0Y[29X[2XConductorOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. The output is its conductor.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XConductor(dup);[127X[104X
    [4X[28X[ 11, 11 ][128X[104X
    [4X[25Xgap>[125X [27XConductorOfGoodSemigroup(dup);[127X[104X
    [4X[28X[ 11, 11 ][128X[104X
  [4X[32X[104X
  
  [1X12.2-3 Multiplicity[101X
  
  [33X[1;0Y[29X[2XMultiplicity[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Y[3XS[103X  is  a  good semigroup. The output is its multiplicity (the minimum of the
  nonzero  elements of the semigroup with respect to the usual partial order).
  It the semigroup is not local, it returns an error.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=GoodSemigroup([[2,2],[3,3]],[4,4]);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XMultiplicity(s);[127X[104X
    [4X[28X[ 2, 2 ][128X[104X
  [4X[32X[104X
  
  [1X12.2-4 IsLocal[101X
  
  [33X[1;0Y[29X[2XIsLocal[102X( [3XS[103X ) [32X property[133X
  
  [33X[0;0Y[3XS[103X  is  a  good  semigroup. Returns true if the semigroup is local, and false
  otherwise.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=GoodSemigroup([[2,2],[3,3]],[4,4]);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XIsLoca(s);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.2-5 SmallElements[101X
  
  [33X[1;0Y[29X[2XSmallElements[102X( [3XS[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSmallElementsOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. The output is its set of small elements, that is, the
  elements  smaller  than  its  conductor  with  respect  to the usual partial
  ordering.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XSmallElementsOfGoodSemigroup(dup);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ],[128X[104X
    [4X[28X  [ 6, 10 ], [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ],[128X[104X
    [4X[28X  [ 9, 9 ], [ 9, 10 ], [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ],[128X[104X
    [4X[28X  [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.2-6 RepresentsSmallElementsOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XRepresentsSmallElementsOfGoodSemigroup[102X( [3XX[103X ) [32X function[133X
  
  [33X[0;0Y[3XX[103X  is  a list of points in the nonnegative orthant of the plane with integer
  coordinates. Determines if it represents the set of small elements of a good
  semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XSmallElementsOfGoodSemigroup(dup);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],[128X[104X
    [4X[28X  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ], [ 9, 10 ],[128X[104X
    [4X[28X  [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ][128X[104X
    [4X[25Xgap>[125X [27XRepresentsSmallElementsOfGoodSemigroup(last);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.2-7 GoodSemigroupBySmallElements[101X
  
  [33X[1;0Y[29X[2XGoodSemigroupBySmallElements[102X( [3XX[103X ) [32X function[133X
  
  [33X[0;0Y[3XX[103X  is  a list of points in the nonnegative orthant of the plane with integer
  coordinates. Determines if it represents the set of small elements of a good
  semigroup,  and  then  outputs  the  good semigroup having [3XX[103X as set of small
  elements.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XSmallElementsOfGoodSemigroup(dup);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],[128X[104X
    [4X[28X  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ], [ 9, 10 ],[128X[104X
    [4X[28X  [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ][128X[104X
    [4X[25Xgap>[125X [27XG:=GoodSemigroupBySmallElements(last);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27Xdup=G;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.2-8 MaximalElementsOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XMaximalElementsOfGoodSemigroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. The output is the set of elements [22X(x,y)[122X of [3XS[103X with the
  following  property:  there  is  no  other element [22X(x',y')[122X in [3XS[103X with [22X(x,y)le
  (x',y')[122X sharing a coordinate with [22X(x,y)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[4,3],[7,13],[11,17]];;[127X[104X
    [4X[25Xgap>[125X [27Xg:=GoodSemigroup(G,[11,17]);;[127X[104X
    [4X[25Xgap>[125X [27Xmx:=MaximalElementsOfGoodSemigroup(g);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 4, 3 ], [ 7, 13 ], [ 8, 6 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.2-9 IrreducibleMaximalElementsOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XIrreducibleMaximalElementsOfGoodSemigroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Y[3XS[103X  is  a  good  semigroup. The output is the set of elements nonzero maximal
  elements  that  cannot be expressed as a sum of two nonzero maximal elements
  of the good semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[4,3],[7,13],[11,17]];;[127X[104X
    [4X[25Xgap>[125X [27Xg:=GoodSemigroup(G,[11,17]);;[127X[104X
    [4X[25Xgap>[125X [27XIrreducibleMaximalElementsOfGoodSemigroup(g);[127X[104X
    [4X[28X[ [ 4, 3 ], [ 7, 13 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.2-10 GoodSemigroupByMaximalElements[101X
  
  [33X[1;0Y[29X[2XGoodSemigroupByMaximalElements[102X( [3XS[103X, [3XT[103X, [3XM[103X, [3XC[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  and  [3XT[103X  are  numerical semigroups, [3XM[103X is a list of pairs in [22XS× T[122X. [3XC[103X is the
  conductor, and thus a pair of nonnegative integers. The output is the set of
  elements  of [22XS× T[122X that are not above an element in [3XM[103X, that is, if they share
  a  coordinate  with  an  element in [3XM[103X, then they must be smaller or equal to
  that  element  with  respect  to the usual partial ordering. The output is a
  good semigroup, if [3XM[103X is an correct set of maximal elements.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[4,3],[7,13],[11,17]];;[127X[104X
    [4X[25Xgap>[125X [27Xg:=GoodSemigroup(G,[11,17]);;[127X[104X
    [4X[25Xgap>[125X [27Xsm:=SmallElements(g);;[127X[104X
    [4X[25Xgap>[125X [27Xmx:=MaximalElementsOfGoodSemigroup(g);;[127X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroupBySmallElements(Set(sm,x->x[1]));;[127X[104X
    [4X[25Xgap>[125X [27Xt:=NumericalSemigroupBySmallElements(Set(sm,x->x[2]));;[127X[104X
    [4X[25Xgap>[125X [27XConductor(g);[127X[104X
    [4X[28X[ 11, 15 ][128X[104X
    [4X[25Xgap>[125X [27Xgg:=GoodSemigroupByMaximalElements(s,t,mx,[11,15]);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27Xgg=g;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.2-11 MinimalGoodGenerators[101X
  
  [33X[1;0Y[29X[2XMinimalGoodGenerators[102X( [3XS[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XMinimalGoodGeneratingSystemOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is  a  good  semigroup.  The output is its minimal good generating system
  (which is unique in the local case, [DGSMT18]).[133X
  
  [33X[0;0Y[10XMinimalGoodGeneratingSystemOfGoodSemigroup[110X   and  [10XMinimalGoodGenerators[110X  are
  synonyms.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=6+s;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XMinimalGoodGenerators(dup);[127X[104X
    [4X[28X[ [ 3, 3 ], [ 5, 5 ], [ 6, 11 ], [ 7, 7 ], [ 11, 6 ] ][128X[104X
    [4X[25Xgap>[125X [27XMinimalGoodGeneratingSystemOfGoodSemigroup(dup);[127X[104X
    [4X[28X[ [ 3, 3 ], [ 5, 5 ], [ 6, 11 ], [ 7, 7 ], [ 11, 6 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X12.2-12 ProjectionOfAGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XProjectionOfAGoodSemigroup[102X( [3XS[103X, [3Xnum[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is  a  good  semigroup  and [3Xnum[103X is an integer, 1 or 2, which identify the
  numerical  semigroup  projection  to  compute.  The output is the projection
  [22XS_i={α_i∣ (α_1,α_2)∈ S}[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],[127X[104X
    [4X[28X[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],[128X[104X
    [4X[28X[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],[128X[104X
    [4X[28X[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],[128X[104X
    [4X[28X[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],[128X[104X
    [4X[28X[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XS1:=ProjectionOfGoodSemigroup(S,1);;[127X[104X
    [4X[25Xgap>[125X [27XSmallElements(S1);[127X[104X
    [4X[28X[ 0, 4, 8, 11, 12, 15, 16, 18, 19, 20, 22 ][128X[104X
    [4X[25Xgap>[125X [27XS2:=ProjectionOfGoodSemigroup(S,2);;[127X[104X
    [4X[25Xgap>[125X [27XSmallElements(S2);[127X[104X
    [4X[28X[ 0, 5, 6, 7, 8, 10 ][128X[104X
  [4X[32X[104X
  
  [1X12.2-13 Genus[101X
  
  [33X[1;0Y[29X[2XGenus[102X( [3XS[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XGenusOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is a good semigroup. The output is the genus of [3XS[103X, defined as [22Xg(S)=d(N^2∖
  C(S)[122X, where [22XC(S)={(α_1,α_2)∈ S∣ (α_1,α_2)≥ boldsymbolc}[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],[127X[104X
    [4X[28X[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],[128X[104X
    [4X[28X[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],[128X[104X
    [4X[28X[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],[128X[104X
    [4X[28X[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],[128X[104X
    [4X[28X[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XGenusOfGoodSemigroup(S);[127X[104X
    [4X[28X21[128X[104X
  [4X[32X[104X
  
  [1X12.2-14 Length[101X
  
  [33X[1;0Y[29X[2XLength[102X( [3XS[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XLengthOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is  a good semigroup. The output is the lenght of [3XS[103X, defined as [22Xg(S)=d(S∖
  C(S)[122X, where [22XC(S)={(α_1,α_2)∈ S∣ (α_1,α_2)≥ boldsymbolc}[122X.[133X
  
  [33X[0;0YWhen  the  good semigroup is the good semigroup of valuation of a ring [22XR[122X, it
  corresponds to the length of [22XR/C[122X as [22XR[122X-module, with [22XC[122X the conductor of [22XR[122X. See
  [BDF00b], [BDF00a], [DdlM88].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],[127X[104X
    [4X[28X[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],[128X[104X
    [4X[28X[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],[128X[104X
    [4X[28X[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],[128X[104X
    [4X[28X[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],[128X[104X
    [4X[28X[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XLength(S);[127X[104X
    [4X[28X15[128X[104X
    [4X[25Xgap>[125X [27XLengthOfGoodSemigroup(S);[127X[104X
    [4X[28X15[128X[104X
  [4X[32X[104X
  
  [1X12.2-15 AperySetOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XAperySetOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. The output is the list of the Apery set of [3XS[103X, defined
  as  [22XAp(S)={boldsymbolα∈  S∣  boldsymbolα-boldsymbole∉  S[122X,  where  [22Xe[122X  is  the
  multiplicity of the good semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],[127X[104X
    [4X[28X[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],[128X[104X
    [4X[28X[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],[128X[104X
    [4X[28X[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],[128X[104X
    [4X[28X[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],[128X[104X
    [4X[28X[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XAperySetOfGoodSemigroup(S);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 4, 6 ], [ 8, 5 ], [ 8, 7 ], [ 8, 8 ], [ 8, 12 ], [ 8, 13 ], [128X[104X
    [4X[28X  [ 8, 14 ], [ 8, 15 ], [ 11, 5 ], [ 11, 7 ], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X  [ 11, 11 ], [ 11, 12 ], [ 11, 13 ], [ 11, 14 ], [ 11, 15 ], [ 12, 5 ], [128X[104X
    [4X[28X  [ 12, 7 ], [ 12, 8 ], [ 12, 11 ], [ 12, 14 ], [ 15, 5 ], [ 15, 7 ], [128X[104X
    [4X[28X  [ 15, 8 ], [ 15, 11 ], [ 15, 14 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [128X[104X
    [4X[28X  [ 16, 11 ], [ 16, 14 ], [ 18, 5 ], [ 19, 7 ], [ 19, 8 ], [ 19, 11 ], [128X[104X
    [4X[28X  [ 19, 14 ], [ 20, 7 ], [ 20, 8 ], [ 20, 11 ], [ 20, 14 ], [ 22, 7 ], [128X[104X
    [4X[28X  [ 22, 8 ], [ 22, 11 ], [ 22, 12 ], [ 22, 13 ], [ 22, 14 ], [ 22, 15 ], [128X[104X
    [4X[28X  [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 23, 11 ], [ 23, 14 ], [ 24, 7 ], [128X[104X
    [4X[28X  [ 24, 8 ], [ 24, 10 ], [ 24, 11 ], [ 24, 14 ], [ 25, 7 ], [ 25, 8 ], [128X[104X
    [4X[28X  [ 26, 7 ], [ 26, 10 ], [ 26, 11 ], [ 26, 14 ], [ 27, 7 ], [ 27, 10 ], [128X[104X
    [4X[28X  [ 27, 11 ], [ 27, 14 ], [ 28, 7 ], [ 28, 10 ], [ 28, 11 ], [ 28, 14 ], [128X[104X
    [4X[28X  [ 29, 7 ], [ 29, 10 ], [ 29, 11 ], [ 29, 14 ], [ 29, 15 ], [ 30, 7 ], [128X[104X
    [4X[28X  [ 30, 10 ], [ 30, 11 ], [ 30, 13 ], [ 30, 14 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.2-16 StratifiedAperySetOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XStratifiedAperySetOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is a good semigroup. The function prints the number of level of the Apery
  Set.  The  output  is  a  list where the [22Xi[122Xth element is the [22Xi[122Xth level of the
  Apery Set of [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],[127X[104X
    [4X[28X[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], [128X[104X
    [4X[28X[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],[128X[104X
    [4X[28X[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],[128X[104X
    [4X[28X[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],[128X[104X
    [4X[28X[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],[128X[104X
    [4X[28X[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);;[128X[104X
    [4X[25Xgap>[125X [27XStratifiedAperySetOfGoodSemigroup(S);[127X[104X
    [4X[28X[ [ [ 0, 0 ] ], [ [ 4, 6 ], [ 8, 5 ], [ 11, 5 ] ], [128X[104X
    [4X[28X  [ [ 8, 7 ], [ 11, 7 ], [ 12, 5 ], [ 15, 5 ], [ 16, 5 ], [ 18, 5 ] ], [128X[104X
    [4X[28X  [ [ 8, 8 ], [ 11, 8 ], [ 12, 7 ], [ 15, 7 ], [ 16, 7 ], [ 19, 7 ], [128X[104X
    [4X[28X      [ 20, 7 ], [ 22, 7 ], [ 23, 7 ], [ 24, 7 ], [ 25, 7 ] ], [128X[104X
    [4X[28X  [ [ 8, 12 ], [ 8, 13 ], [ 8, 14 ], [ 11, 10 ], [ 11, 11 ], [ 12, 8 ], [128X[104X
    [4X[28X      [ 15, 8 ], [ 16, 8 ], [ 19, 8 ], [ 20, 8 ], [ 22, 8 ], [ 23, 8 ], [128X[104X
    [4X[28X      [ 24, 8 ], [ 25, 8 ], [ 26, 7 ], [ 27, 7 ], [ 28, 7 ], [ 29, 7 ], [128X[104X
    [4X[28X      [ 30, 7 ] ], [128X[104X
    [4X[28X  [ [ 8, 15 ], [ 11, 12 ], [ 11, 13 ], [ 11, 14 ], [ 12, 11 ], [ 15, 11 ], [128X[104X
    [4X[28X      [ 16, 11 ], [ 19, 11 ], [ 20, 11 ], [ 22, 11 ], [ 23, 10 ], [ 24, 10 ], [128X[104X
    [4X[28X      [ 26, 10 ], [ 27, 10 ], [ 28, 10 ], [ 29, 10 ], [ 30, 10 ] ], [128X[104X
    [4X[28X  [ [ 11, 15 ], [ 12, 14 ], [ 15, 14 ], [ 16, 14 ], [ 19, 14 ], [ 20, 14 ], [128X[104X
    [4X[28X      [ 22, 12 ], [ 22, 13 ], [ 22, 14 ], [ 23, 11 ], [ 24, 11 ], [ 26, 11 ], [128X[104X
    [4X[28X      [ 27, 11 ], [ 28, 11 ], [ 29, 11 ], [ 30, 11 ] ], [128X[104X
    [4X[28X  [ [ 22, 15 ], [ 23, 14 ], [ 24, 14 ], [ 26, 14 ], [ 27, 14 ], [ 28, 14 ], [128X[104X
    [4X[28X  [ 29, 14 ], [ 30, 13 ] ], [ [ 29, 15 ], [ 30, 14 ] ] ][128X[104X
  [4X[32X[104X
  
  
  [1X12.3 [33X[0;0YSymmetric good semigroups[133X[101X
  
  [33X[0;0YThe concept of symmetry in a numerical semigroup extends to good semigroups.
  Here we describe a test for symmetry.[133X
  
  [1X12.3-1 IsSymmetric[101X
  
  [33X[1;0Y[29X[2XIsSymmetric[102X( [3XS[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsSymmetricGoodSemigroup[102X( [3XS[103X ) [32X attribute[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. Determines if [3XS[103X is a symmetric good semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=CanonicalIdealOfNumericalSemigroup(s);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=15+e;;[127X[104X
    [4X[25Xgap>[125X [27Xdup:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27XIsSymmetric(dup);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsSymmetricGoodSemigroup(dup);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X12.4 [33X[0;0YArf good closure[133X[101X
  
  [33X[0;0YThe  definition  of  Arf  good semigroup is similar to the definition of Arf
  numerical  semigroup.  In this section, we provide a function to compute the
  Arf good closure of a good semigroup.[133X
  
  [1X12.4-1 ArfClosure[101X
  
  [33X[1;0Y[29X[2XArfClosure[102X( [3XS[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XArfGoodSemigroupClosure[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. Determines the Arf good semigroup closure of [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[3,3],[4,4],[5,4],[4,6]];[127X[104X
    [4X[28X[ [ 3, 3 ], [ 4, 4 ], [ 5, 4 ], [ 4, 6 ] ][128X[104X
    [4X[25Xgap>[125X [27XC:=[6,6];[127X[104X
    [4X[28X[ 6, 6 ][128X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroup(G,C);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XSmallElements(S);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 3, 3 ], [ 4, 4 ], [ 4, 6 ], [ 5, 4 ], [ 6, 6 ] ][128X[104X
    [4X[25Xgap>[125X [27XA:=ArfClosure(S);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XSmallElements(A);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 3, 3 ], [ 4, 4 ] ][128X[104X
    [4X[25Xgap>[125X [27XArfGoodSemigroupClosure(S) = ArfClosure(S);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X12.5 [33X[0;0YGood ideals[133X[101X
  
  [33X[0;0YA  relative  ideal [22XI[122X of a relative good semigroup [22XM[122X is a relative good ideal
  if [22XI[122X fulfills conditions (G1) and (G2) of the definition of good semigroup.[133X
  
  [1X12.5-1 GoodIdeal[101X
  
  [33X[1;0Y[29X[2XGoodIdeal[102X( [3XX[103X, [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XX[103X  is  a  list  of points with nonnegative integer coordinates and [22XS[122X is good
  semigroup.  Decides  if the closure of [22XX+S[122X under infimums is a relative good
  ideal of [22XS[122X, and if so, outputs it.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=[[4,3],[7,13],[11,17],[14,27],[15,27],[16,20],[25,12],[25,16]];[127X[104X
    [4X[28X[ [ 4, 3 ], [ 7, 13 ], [ 11, 17 ], [ 14, 27 ], [ 15, 27 ], [ 16, 20 ],[128X[104X
    [4X[28X[ 25, 12 ], [ 25, 16 ] ][128X[104X
    [4X[25Xgap>[125X [27XC:=[25,27];[127X[104X
    [4X[28X[ 25, 27 ][128X[104X
    [4X[25Xgap>[125X [27Xg := GoodSemigroup(G,C);[127X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27Xi:=GoodIdeal([[2,3]],g);[127X[104X
    [4X[28X<Good ideal of good semigroup>[128X[104X
  [4X[32X[104X
  
  [1X12.5-2 GoodGeneratingSystemOfGoodIdeal[101X
  
  [33X[1;0Y[29X[2XGoodGeneratingSystemOfGoodIdeal[102X( [3XI[103X ) [32X function[133X
  
  [33X[0;0Y[3XI[103X  is  a  good  ideal  of  a good semigroup. The output is a good generating
  system of [3XI[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xd:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=GoodIdeal([[2,3],[3,2],[2,2]],d);;[127X[104X
    [4X[25Xgap>[125X [27XGoodGeneratingSystemOfGoodIdeal(e);[127X[104X
    [4X[28X[ [ 2, 2 ], [ 2, 3 ], [ 3, 2 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.5-3 AmbientGoodSemigroupOfGoodIdeal[101X
  
  [33X[1;0Y[29X[2XAmbientGoodSemigroupOfGoodIdeal[102X( [3XI[103X ) [32X function[133X
  
  [33X[0;0YIf [3XI[103X is a good ideal of a good semigroup [22XM[122X, then the output is [22XM[122X. The output
  is a good generating system of [3XI[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xa:=AmalgamationOfNumericalSemigroups(s,e,5);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=GoodIdeal([[2,3],[3,2],[2,2]],a);;[127X[104X
    [4X[25Xgap>[125X [27Xa=AmbientGoodSemigroupOfGoodIdeal(e);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.5-4 MinimalGoodGeneratingSystemOfGoodIdeal[101X
  
  [33X[1;0Y[29X[2XMinimalGoodGeneratingSystemOfGoodIdeal[102X( [3XI[103X ) [32X function[133X
  
  [33X[0;0Y[3XI[103X  is  a  good  ideal  of  a  good semigroup. The output is the minimal good
  generating system of [3XI[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xd:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=GoodIdeal([[2,3],[3,2],[2,2]],d);;[127X[104X
    [4X[25Xgap>[125X [27XMinimalGoodGeneratingSystemOfGoodIdeal(e);[127X[104X
    [4X[28X[ [ 2, 3 ], [ 3, 2 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.5-5 BelongsToGoodIdeal[101X
  
  [33X[1;0Y[29X[2XBelongsToGoodIdeal[102X( [3Xv[103X, [3XI[103X ) [32X operation[133X
  [33X[1;0Y[29X[2X\in[102X( [3Xv[103X, [3XI[103X ) [32X operation[133X
  
  [33X[0;0Y[3XI[103X  is  a  good  ideal  of  a good semigroup and [3Xv[103X is a pair of integers. The
  output  is  [10Xtrue[110X  if  [3Xv[103X is in [3XI[103X, and [10Xfalse[110X otherwise. Other ways to use this
  operation are [10X\in(v,I)[110X and [10Xv in I[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xd:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=GoodIdeal([[2,3],[3,2]],d);;[127X[104X
    [4X[25Xgap>[125X [27X[1,1] in e;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27X[2,2] in e;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X12.5-6 SmallElements[101X
  
  [33X[1;0Y[29X[2XSmallElements[102X( [3XI[103X ) [32X function[133X
  [33X[1;0Y[29X[2XSmallElementsOfGoodIdeal[102X( [3XI[103X ) [32X function[133X
  
  [33X[0;0Y[3XI[103X  is  a  good  ideal. The output is its set of small elements, that is, the
  elements  smaller  than  its  conductor  and larger than its minimum element
  (with respect to the usual partial ordering).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xd:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=GoodIdeal([[2,3],[3,2]],d);;[127X[104X
    [4X[25Xgap>[125X [27XSmallElements(e);[127X[104X
    [4X[28X[ [ 2, 2 ], [ 2, 3 ], [ 3, 2 ], [ 5, 5 ], [ 5, 6 ], [ 6, 5 ], [ 7, 7 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.5-7 CanonicalIdealOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XCanonicalIdealOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup. The output is the canonical ideal of [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xs:=NumericalSemigroup(3,5,7);;[127X[104X
    [4X[25Xgap>[125X [27Xe:=10+s;;[127X[104X
    [4X[25Xgap>[125X [27Xd:=NumericalSemigroupDuplication(s,e);;[127X[104X
    [4X[25Xgap>[125X [27Xc:=CanonicalIdealOfGoodSemigroup(d);;[127X[104X
    [4X[25Xgap>[125X [27XMinimalGoodGeneratingSystemOfGoodIdeal(c);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 2, 2 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.5-8 AbsoluteIrreduciblesOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XAbsoluteIrreduciblesOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X is a good semigroup; this function returns the absolute irreducibles of [3XS[103X:
  nonzero  elements of the semigroup that are irreducible with respect to both
  operations  (that  is, in the semiring [22X(S,operatornamemin,+)[122X). The notations
  [22X(x,∞)[122X  and  [22X(∞,y)[122X denote that starting from a certain element the respective
  line is included in the semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 5, 4 ], [ 5, 8 ], [ 5, 11 ],[127X[104X
    [4X[28X[ 5, 12 ], [ 5, 13 ], [ 6, 4 ], [ 7, 8 ], [ 7, 11 ], [ 7, 12 ], [ 7, 14 ],[128X[104X
    [4X[28X[ 8, 8 ], [ 8, 11 ], [ 8, 12 ], [ 8, 15 ], [ 8, 16 ], [ 8, 17 ], [ 8, 18 ], [128X[104X
    [4X[28X[ 10, 8 ], [ 10, 11 ], [ 10, 12 ], [ 10, 15 ], [ 10, 16 ], [ 10, 17 ], [128X[104X
    [4X[28X[ 10, 18 ], [ 11, 8 ], [ 11, 11 ], [ 11, 12 ], [ 11, 15 ], [ 11, 16 ],[128X[104X
    [4X[28X[ 11, 17 ], [ 12, 8 ], [ 12, 11 ], [ 12, 12 ], [ 12, 15 ], [ 12, 16 ], [128X[104X
    [4X[28X[ 12, 18 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XAbsoluteIrreduciblesOfGoodSemigroup(S);[127X[104X
    [4X[28X[ [ 5, 13 ], [ 6, 4 ], [ 7, 14 ], [ 8, infinity ], [ 10, infinity ],[128X[104X
    [4X[28X  [ 12, infinity ], [ infinity, 8 ], [ infinity, 11 ], [ infinity, 18 ] ][128X[104X
  [4X[32X[104X
  
  [1X12.5-9 TracksOfGoodSemigroup[101X
  
  [33X[1;0Y[29X[2XTracksOfGoodSemigroup[102X( [3XS[103X ) [32X function[133X
  
  [33X[0;0Y[3XS[103X  is  a  good  semigroup.  This  function  returns  the  tracks of the good
  semigroup  (see  [tt19]  for  the  definition  of track). Tracks behave like
  minimal  generators in a numerical semigroups, because removing the elements
  of  a  track  from  the  semigroup,  with  the  exception of the infimums of
  incomparable elements, we obtain a good semigroup contained in [3XS[103X.[133X
  
  [33X[0;0YA  track  [22XT(boldsymbolα_1,...,boldsymbolα_n)[122X is represented with the list of
  the elements [22Xboldsymbolα_1,...,boldsymbolα_n[122X that determine it completely.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 3 ], [ 8, 6 ], [ 8, 7 ],[127X[104X
    [4X[28X[ 12, 6 ], [ 12, 9 ], [ 12, 10 ], [ 16, 6 ], [ 16, 9 ], [ 16, 12 ], [ 16, 13 ],[128X[104X
    [4X[28X[ 16, 14 ], [ 18, 6 ], [ 20, 9 ], [ 20, 12 ], [ 20, 13 ], [ 20, 15 ], [ 20, 16 ],[128X[104X
    [4X[28X[ 20, 17 ], [ 22, 9 ], [ 24, 12 ], [ 24, 13 ], [ 24, 15 ], [ 24, 16 ], [ 24, 18 ],[128X[104X
    [4X[28X[ 26, 12 ], [ 26, 13 ], [ 28, 12 ], [ 28, 15 ], [ 28, 16 ], [ 28, 18 ],[ 30, 12 ], [128X[104X
    [4X[28X[ 30, 15 ], [ 30, 16 ], [ 30, 18 ] ]);[128X[104X
    [4X[28X<Good semigroup>[128X[104X
    [4X[25Xgap>[125X [27XTracksOfGoodSemigroup(S);[127X[104X
    [4X[28X[ [ [ 4, 3 ] ], [ [ 8, 7 ], [ 18, 6 ] ],[128X[104X
    [4X[28X  [ [ 30, infinity ], [ infinity, 16 ] ],[128X[104X
    [4X[28X  [ [ 31, infinity ], [ infinity, 16 ] ], [ [ 31, infinity ] ],[128X[104X
    [4X[28X  [ [ 33, infinity ], [ infinity, 16 ] ], [ [ 33, infinity ] ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
