Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/numericalsgps/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 30.7.2024 mit Größe 26 kB image not shown  

Quelle  good-semigroups.xml   Sprache: XML

 
<?xml version="1.0" encoding="UTF-8"?>


<Section>
    <Heading>
      Defining good semigroups
    </Heading>

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

    <ManSection>
      <Func Arg="S" Name="IsGoodSemigroup"></Func>
      <Description>
        Detects if <A>S</A> is an object of type good semigroup.
      </Description>
    </ManSection>

    <ManSection>
      <Func Arg="S, E" Name="NumericalSemigroupDuplication"></Func>
      <Description>
        <A>S</A> is a numerical semigroup and <A>E</A> is an ideal of <A>S</A> with <M>E\subseteq S</M>.
        The output is <M>S\bowtie E= D\cup (E\times E)\cup\{ a\wedge b\mid a\in D, b\in E\times E\},</M> where <M>D=\{(s,s)\mid s\in S\}</M>.

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> l:=Cartesian([1..11],[1..11]);;
gap> Intersection(dup,l);
[ [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],
  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ],
  [ 9, 10 ], [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ],
  [ 11, 9 ], [ 11, 11 ] ]
gap> [384938749837,349823749827] in dup;
true
]]></Example>
      </Description>
    </ManSection>


      <ManSection>
        <Func Arg="S, E, b" Name="AmalgamationOfNumericalSemigroups"></Func>
        <Description>
          <A>S</A> is a numerical semigroup, <A>E</A> is an ideal of a numerical semigroup <M>T</M> with <M>E\subseteq T</M>, and <A>b</A> is an integer such that multiplication by <A>b</A> is a morphism from <A>S</A> to <M>T</M>, say <M>g</M>.
          The output is <M>S\bowtie^g E= D\cup(g^{-1}(E)\times E)\cup \{a\wedge b\mid a\in D, b\in g^{-1}(E)\times E\},</M> where <M>D=\{(s,b s)\mid s\in S\}</M>.

          <Example><![CDATA[
gap> s:=NumericalSemigroup(2,3);;
gap> t:=NumericalSemigroup(3,4);;
gap> e:=3+t;;
gap> dup:=AmalgamationOfNumericalSemigroups(s,e,2);;
gap> [2,3] in dup;
true
]]></Example>
        </Description>
      </ManSection>


      <ManSection>
        <Func Arg="S, T" Name="CartesianProductOfNumericalSemigroups"></Func>
        <Description>
          <A>S</A> and <A>T</A> are numerical semigroups.
          The output is <M>S\times T</M>, which is a good semigroup.

          <Example><![CDATA[
gap> s:=NumericalSemigroup(2,3);;
gap> t:=NumericalSemigroup(3,4);;
gap> IsGoodSemigroup(CartesianProductOfNumericalSemigroups(s,t));
true
]]></Example>
        </Description>
      </ManSection>


      <ManSection>
        <Func Arg="X, C" Name="GoodSemigroup"></Func>
        <Description>
          <A>X</A> is a list of points with nonnegative integer coordinates and <M>C</M> is a pair of nonnegative integers (a list with two elements).
          If <M>M</M> is the affine and infimum closure of <A>X</A>, decides if it is a good semigroup, and if so, outputs it.

          <Example><![CDATA[
gap> G:=[[4,3],[7,13],[11,17],[14,27],[15,27],[16,20],[25,12],[25,16]];
[ [ 4, 3 ], [ 7, 13 ], [ 11, 17 ], [ 14, 27 ], [ 15, 27 ], [ 16, 20 ],
  [ 25, 12 ], [ 25, 16 ] ]
gap> C:=[25,27];
[ 25, 27 ]
gap> GoodSemigroup(G,C);
<Good semigroup>
]]></Example>
        </Description>
      </ManSection>

</Section>

<Section>
    <Heading>
      Notable elements
  </Heading>

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

    <ManSection>
      <Oper Arg="v,S" Name="BelongsToGoodSemigroup"></Oper>
      <Oper Name="\in" Arg="v,S" Label="membership for good semigroup"/>
      <Description>
        <A>S</A> is a good semigroup and <A>v</A> is a pair of integers. The output is <C>true</C> if <A>v</A> is in <A>S</A>, and <C>false</C> otherwise.

        Other ways to use this operation are <C>\in(v,S)</C> and <C>v in S</C>.
        <Example><![CDATA[
gap> s:=NumericalSemigroup(2,3);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);;
gap> BelongsToGoodSemigroup([2,2],dup);
true
gap> [2,2] in dup;
true
gap> [3,2] in dup;
false
]]></Example>
      </Description>
    </ManSection>

  <ManSection>
    <Func Arg="S" Name="Conductor" Label="for good semigroups"></Func>
    <Func Arg="S" Name="ConductorOfGoodSemigroup"></Func>
    <Description>
      <A>S</A> is a good semigroup. The output is its conductor.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> Conductor(dup);
[ 11, 11 ]
gap> ConductorOfGoodSemigroup(dup);
[ 11, 11 ]
]]></Example>
    </Description>
  </ManSection>

  <ManSection>
    <Attr Arg="S" Name="Multiplicity" Label="for good semigroups"></Attr>
    <Description>
      <A>S</A> 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.

      <Example><![CDATA[
gap> s:=GoodSemigroup([[2,2],[3,3]],[4,4]);
<Good semigroup>
gap> Multiplicity(s);
[ 2, 2 ]
]]></Example>
    </Description>
  </ManSection>


  <ManSection>
    <Prop Arg="S" Name="IsLocal" Label="for good semigroups"></Prop>
    <Description>
      <A>S</A> is a good semigroup. Returns true if the semigroup is local, and false otherwise.

      <Example><![CDATA[
gap> s:=GoodSemigroup([[2,2],[3,3]],[4,4]);
<Good semigroup>
gap> IsLoca(s);
true
]]></Example>
    </Description>
  </ManSection>



  <ManSection>
    <Func Arg="S" Name="SmallElements" Label="for good semigroup"></Func>
    <Func Arg="S" Name="SmallElementsOfGoodSemigroup"></Func>

    <Description>
      <A>S</A> 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.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> SmallElementsOfGoodSemigroup(dup);
[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ],
  [ 6, 10 ], [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ],
  [ 9, 9 ], [ 9, 10 ], [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ],
  [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ]
]]></Example>
    </Description>
  </ManSection>

  <ManSection>
    <Func Arg="X" Name="RepresentsSmallElementsOfGoodSemigroup"></Func>
    <Description>
      <A>X</A> 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.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> SmallElementsOfGoodSemigroup(dup);
[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],
  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ], [ 9, 10 ],
  [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ]
gap> RepresentsSmallElementsOfGoodSemigroup(last);
true
]]></Example>
    </Description>
  </ManSection>

  <ManSection>
    <Func Arg="X" Name="GoodSemigroupBySmallElements"></Func>
    <Description>
      <A>X</A> 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 <A>X</A> as set of small elements.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> SmallElementsOfGoodSemigroup(dup);
[ [ 0, 0 ], [ 3, 3 ], [ 5, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 6, 9 ], [ 6, 10 ],
  [ 6, 11 ], [ 7, 6 ], [ 7, 7 ], [ 8, 6 ], [ 8, 8 ], [ 9, 6 ], [ 9, 9 ], [ 9, 10 ],
  [ 9, 11 ], [ 10, 6 ], [ 10, 9 ], [ 10, 10 ], [ 11, 6 ], [ 11, 9 ], [ 11, 11 ] ]
gap> G:=GoodSemigroupBySmallElements(last);
<Good semigroup>
gap> dup=G;
true
]]></Example>
    </Description>
  </ManSection>

  <ManSection>
      <Attr Name="MaximalElementsOfGoodSemigroup" Arg="S"/>
      <Description>
       <A>S</A> is a good semigroup. The output is the set of elements <M>(x,y)</M>
       of <A>S</A> with the following property: there is no other element <M>(x',y')</M> in <A>S</A>
       with <M>(x,y)\le (x',y')</M> sharing a coordinate with <M>(x,y)</M>.
      <Example><![CDATA[
gap> G:=[[4,3],[7,13],[11,17]];;
gap> g:=GoodSemigroup(G,[11,17]);;
gap> mx:=MaximalElementsOfGoodSemigroup(g);
[ [ 0, 0 ], [ 4, 3 ], [ 7, 13 ], [ 8, 6 ] ]
]]></Example>
     </Description>
   </ManSection>

   <ManSection>
       <Attr Name="IrreducibleMaximalElementsOfGoodSemigroup" Arg="S"/>
       <Description>
        <A>S</A> 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.
       <Example><![CDATA[
gap> G:=[[4,3],[7,13],[11,17]];;
gap> g:=GoodSemigroup(G,[11,17]);;
gap> IrreducibleMaximalElementsOfGoodSemigroup(g);
[ [ 4, 3 ], [ 7, 13 ] ]
]]></Example>
      </Description>
    </ManSection>


  <ManSection>
    <Func Arg="S, T, M, C" Name="GoodSemigroupByMaximalElements"></Func>
    <Description>
      <A>S</A> and <A>T</A> are numerical semigroups, <A>M</A> is a list of pairs in <M>S\times T</M>. <A>C</A> is the conductor, and thus a pair of nonnegative integers.
      The output is the set of elements of <M>S\times T</M> that are not above an element in <A>M</A>, that is, if they share a coordinate with an element in <A>M</A>, then they must be smaller or equal to that element with respect to the usual partial ordering. The output is a good semigroup, if <A>M</A> is an correct set of maximal elements.

      <Example><![CDATA[
gap> G:=[[4,3],[7,13],[11,17]];;
gap> g:=GoodSemigroup(G,[11,17]);;
gap> sm:=SmallElements(g);;
gap> mx:=MaximalElementsOfGoodSemigroup(g);;
gap> s:=NumericalSemigroupBySmallElements(Set(sm,x->x[1]));;
gap> t:=NumericalSemigroupBySmallElements(Set(sm,x->x[2]));;
gap> Conductor(g);
[ 11, 15 ]
gap> gg:=GoodSemigroupByMaximalElements(s,t,mx,[11,15]);
<Good semigroup>
gap> gg=g;
true
]]></Example>
    </Description>
  </ManSection>

  <ManSection>
   <Attr Name="MinimalGoodGenerators" Arg="S"/>
   <Func Arg="S" Name="MinimalGoodGeneratingSystemOfGoodSemigroup"></Func>
     
     <Description>
       <A>S</A> is a good semigroup. The output is its minimal good generating system (which is unique in the local case, <Cite Key="DGSM"></Cite>).
       <P/>
       <C>MinimalGoodGeneratingSystemOfGoodSemigroup</C> and <C>MinimalGoodGenerators</C> are synonyms.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=6+s;;
gap> dup:=NumericalSemigroupDuplication(s,e);
<Good semigroup>
gap> MinimalGoodGenerators(dup);
[ [ 3, 3 ], [ 5, 5 ], [ 6, 11 ], [ 7, 7 ], [ 11, 6 ] ]
gap> MinimalGoodGeneratingSystemOfGoodSemigroup(dup);
[ [ 3, 3 ], [ 5, 5 ], [ 6, 11 ], [ 7, 7 ], [ 11, 6 ] ]

]]></Example>
    </Description>
  </ManSection>

<ManSection>
      <Func Arg="S, num" Name="ProjectionOfAGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup and <A>num</A> is an integer, 1 or 2, which identify the numerical semigroup projection to compute.
        The output is the projection <M>S_i=\{\alpha_i\mid (\alpha_1,\alpha_2)\in S\}</M>.

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],
[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], 
[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],
[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],
[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],
[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],
[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);
<Good semigroup>
gap> S1:=ProjectionOfGoodSemigroup(S,1);;
gap> SmallElements(S1);
[ 0, 4, 8, 11, 12, 15, 16, 18, 19, 20, 22 ]
gap> S2:=ProjectionOfGoodSemigroup(S,2);;
gap> SmallElements(S2);
[ 0, 5, 6, 7, 8, 10 ]
]]></Example>
      </Description>
    </ManSection>


    <ManSection>
      <Attr Name="Genus" Arg="S" Label="for good semigroup"/>
      <Func Arg="S" Name="GenusOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup.
        The output is the genus of <A>S</A>, defined as <M>g(S)=d(\mathbb{N}^2\setminus C(S))</M>, where <M>C(S)=\{(\alpha_1,\alpha_2)\in S\mid (\alpha_1,\alpha_2)\geq c\}</M>, and <M>c</M> is the conductor.

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],
[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], 
[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],
[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],
[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],
[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],
[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);
<Good semigroup>
gap> GenusOfGoodSemigroup(S);
21
]]></Example>
      </Description>
</ManSection>


<ManSection>
  <Attr Arg="S" Name="Length" Label="for good semigroup"/>
      <Func Arg="S" Name="LengthOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup.
        The output is the lenght of <A>S</A>, defined as <M>g(S)=d(S\setminus C(S))</M>, where <M>C(S)=\{(\alpha_1,\alpha_2)\in S\mid (\alpha_1,\alpha_2)\geq c\}</M> (<M>c</M> is the conductor).

        <P/>
         When the good semigroup is the good semigroup of valuation of a ring <M>R</M>, it corresponds to the length of <M>R/C</M> as <M>R</M>-module, with <M>C</M> the conductor of <M>R</M>. See <Cite Key="B-DA-F-1"/>, <Cite Key="B-DA-F-2"/>, <Cite Key="DM"/>.

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],
[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], 
[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],
[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],
[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],
[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],
[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);
<Good semigroup>
gap> Length(S);
15
gap> LengthOfGoodSemigroup(S);
15
]]></Example>
      </Description>
</ManSection>

<ManSection>
      <Func Arg="S" Name="AperySetOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup.
        The output is the list of the Apery set of <A>S</A>, defined as <M>Ap(S)=\{\alpha\in S\mid \alpha-e \notin S</M>, where <M>e</M> is the multiplicity of the good semigroup.

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],
[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], 
[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],
[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],
[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],
[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],
[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);
<Good semigroup>
gap> AperySetOfGoodSemigroup(S);
[ [ 0, 0 ], [ 4, 6 ], [ 8, 5 ], [ 8, 7 ], [ 8, 8 ], [ 8, 12 ], [ 8, 13 ], 
  [ 8, 14 ], [ 8, 15 ], [ 11, 5 ], [ 11, 7 ], [ 11, 8 ], [ 11, 10 ], 
  [ 11, 11 ], [ 11, 12 ], [ 11, 13 ], [ 11, 14 ], [ 11, 15 ], [ 12, 5 ], 
  [ 12, 7 ], [ 12, 8 ], [ 12, 11 ], [ 12, 14 ], [ 15, 5 ], [ 15, 7 ], 
  [ 15, 8 ], [ 15, 11 ], [ 15, 14 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], 
  [ 16, 11 ], [ 16, 14 ], [ 18, 5 ], [ 19, 7 ], [ 19, 8 ], [ 19, 11 ], 
  [ 19, 14 ], [ 20, 7 ], [ 20, 8 ], [ 20, 11 ], [ 20, 14 ], [ 22, 7 ], 
  [ 22, 8 ], [ 22, 11 ], [ 22, 12 ], [ 22, 13 ], [ 22, 14 ], [ 22, 15 ], 
  [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 23, 11 ], [ 23, 14 ], [ 24, 7 ], 
  [ 24, 8 ], [ 24, 10 ], [ 24, 11 ], [ 24, 14 ], [ 25, 7 ], [ 25, 8 ], 
  [ 26, 7 ], [ 26, 10 ], [ 26, 11 ], [ 26, 14 ], [ 27, 7 ], [ 27, 10 ], 
  [ 27, 11 ], [ 27, 14 ], [ 28, 7 ], [ 28, 10 ], [ 28, 11 ], [ 28, 14 ], 
  [ 29, 7 ], [ 29, 10 ], [ 29, 11 ], [ 29, 14 ], [ 29, 15 ], [ 30, 7 ], 
  [ 30, 10 ], [ 30, 11 ], [ 30, 13 ], [ 30, 14 ] ]
]]></Example>
      </Description>
</ManSection>


<ManSection>
      <Func Arg="S" Name="StratifiedAperySetOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup.
        The function prints the number of level of the Apery Set.
        The output is a list where the <M>i</M>th element is the <M>i</M>th level of the Apery Set of <A>S</A>.
    

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 5 ], [ 4, 6 ], [ 8, 5 ],
[ 8, 7 ], [ 8, 8 ], [ 8, 10 ], [ 11, 5 ], [ 11, 7], [ 11, 8 ], [ 11, 10 ], 
[ 12, 5 ], [ 12, 7 ], [ 12, 8 ], [ 12, 10 ], [ 15, 5 ], [ 15, 7 ], [ 15, 8 ],
[ 15, 10 ], [ 16, 5 ], [ 16, 7 ], [ 16, 8 ], [ 16, 10 ], [ 18, 5 ], [ 19, 7 ],
[ 19, 8 ], [ 19, 10 ], [ 20, 7 ], [ 20, 8 ], [ 20, 10 ], [ 22, 7 ], [ 22, 8 ],
[ 22, 10 ], [ 23, 7 ], [ 23, 8 ], [ 23, 10 ], [ 24, 7 ], [ 24, 8 ], [ 24, 10 ],
[ 25, 7 ], [ 25, 8 ], [ 26, 7 ], [ 26, 10 ] ]);;
gap> StratifiedAperySetOfGoodSemigroup(S);
[ [ [ 0, 0 ] ], [ [ 4, 6 ], [ 8, 5 ], [ 11, 5 ] ], 
  [ [ 8, 7 ], [ 11, 7 ], [ 12, 5 ], [ 15, 5 ], [ 16, 5 ], [ 18, 5 ] ], 
  [ [ 8, 8 ], [ 11, 8 ], [ 12, 7 ], [ 15, 7 ], [ 16, 7 ], [ 19, 7 ], 
      [ 20, 7 ], [ 22, 7 ], [ 23, 7 ], [ 24, 7 ], [ 25, 7 ] ], 
  [ [ 8, 12 ], [ 8, 13 ], [ 8, 14 ], [ 11, 10 ], [ 11, 11 ], [ 12, 8 ], 
      [ 15, 8 ], [ 16, 8 ], [ 19, 8 ], [ 20, 8 ], [ 22, 8 ], [ 23, 8 ], 
      [ 24, 8 ], [ 25, 8 ], [ 26, 7 ], [ 27, 7 ], [ 28, 7 ], [ 29, 7 ], 
      [ 30, 7 ] ], 
  [ [ 8, 15 ], [ 11, 12 ], [ 11, 13 ], [ 11, 14 ], [ 12, 11 ], [ 15, 11 ], 
      [ 16, 11 ], [ 19, 11 ], [ 20, 11 ], [ 22, 11 ], [ 23, 10 ], [ 24, 10 ], 
      [ 26, 10 ], [ 27, 10 ], [ 28, 10 ], [ 29, 10 ], [ 30, 10 ] ], 
  [ [ 11, 15 ], [ 12, 14 ], [ 15, 14 ], [ 16, 14 ], [ 19, 14 ], [ 20, 14 ], 
      [ 22, 12 ], [ 22, 13 ], [ 22, 14 ], [ 23, 11 ], [ 24, 11 ], [ 26, 11 ], 
      [ 27, 11 ], [ 28, 11 ], [ 29, 11 ], [ 30, 11 ] ], 
  [ [ 22, 15 ], [ 23, 14 ], [ 24, 14 ], [ 26, 14 ], [ 27, 14 ], [ 28, 14 ], 
  [ 29, 14 ], [ 30, 13 ] ], [ [ 29, 15 ], [ 30, 14 ] ] ]
]]></Example>
      </Description>
    </ManSection>


</Section>

<Section>
    <Heading>
      Symmetric good semigroups
  </Heading>

  The concept of symmetry in a numerical semigroup extends to good semigroups. Here we describe a test for symmetry. 
  <ManSection>
  <Attr Arg="S" Name="IsSymmetric" Label="for good semigroups"></Attr>
    <Attr Arg="S" Name="IsSymmetricGoodSemigroup"></Attr>
    <Description>
      <A>S</A> is a good semigroup. Determines if <A>S</A> is a symmetric good semigroup.

      <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=CanonicalIdealOfNumericalSemigroup(s);;
gap> e:=15+e;;
gap> dup:=NumericalSemigroupDuplication(s,e);;
gap> IsSymmetric(dup);
true
gap> IsSymmetricGoodSemigroup(dup);
true
]]></Example>
    </Description>
  </ManSection>


</Section>


<Section>
  <Heading>
    Arf good closure
  </Heading>
  The 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.
  
  <ManSection>
  <Oper Arg="S" Name="ArfClosure" Label="of good semigroup"></Oper>
    <Func Arg="S" Name="ArfGoodSemigroupClosure"></Func>
    <Description>
      <A>S</A> is a good semigroup. Determines the Arf good semigroup closure of <A>S</A>.

      <Example><![CDATA[
gap> G:=[[3,3],[4,4],[5,4],[4,6]];
[ [ 3, 3 ], [ 4, 4 ], [ 5, 4 ], [ 4, 6 ] ]
gap> C:=[6,6];
[ 6, 6 ]
gap> S:=GoodSemigroup(G,C);
<Good semigroup>
gap> SmallElements(S);
[ [ 0, 0 ], [ 3, 3 ], [ 4, 4 ], [ 4, 6 ], [ 5, 4 ], [ 6, 6 ] ]
gap> A:=ArfClosure(S);
<Good semigroup>
gap> SmallElements(A);
[ [ 0, 0 ], [ 3, 3 ], [ 4, 4 ] ]
gap> ArfGoodSemigroupClosure(S) = ArfClosure(S);
true
]]></Example>
    </Description>
  </ManSection>

</Section>

<Section>
    <Heading>
      Good ideals
    </Heading>

    A relative ideal <M>I</M> of a relative good semigroup <M>M</M> is a relative good ideal if <M>I</M> fulfills conditions (G1) and (G2) of the definition of good semigroup.

    <ManSection>
      <Func Arg="X, S" Name="GoodIdeal"></Func>
      <Description>
        <A>X</A> is a list of points with nonnegative integer coordinates and <M>S</M> is good semigroup.
        Decides if the closure of <M>X+S</M> under infimums is a relative good ideal of <M>S</M>, and if so, outputs it.

        <Example><![CDATA[
gap> G:=[[4,3],[7,13],[11,17],[14,27],[15,27],[16,20],[25,12],[25,16]];
[ [ 4, 3 ], [ 7, 13 ], [ 11, 17 ], [ 14, 27 ], [ 15, 27 ], [ 16, 20 ],
[ 25, 12 ], [ 25, 16 ] ]
gap> C:=[25,27];
[ 25, 27 ]
gap> g := GoodSemigroup(G,C);
<Good semigroup>
gap> i:=GoodIdeal([[2,3]],g);
<Good ideal of good semigroup>
]]></Example>
      </Description>
    </ManSection>


    <ManSection>
      <Func Arg="I" Name="GoodGeneratingSystemOfGoodIdeal"></Func>
      <Description>
        <A>I</A> is a good ideal of a good semigroup. The output is a good generating system of <A>I</A>.

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> d:=NumericalSemigroupDuplication(s,e);;
gap> e:=GoodIdeal([[2,3],[3,2],[2,2]],d);;
gap> GoodGeneratingSystemOfGoodIdeal(e);
[ [ 2, 2 ], [ 2, 3 ], [ 3, 2 ] ]
]]></Example>
      </Description>
    </ManSection>

    <ManSection>
      <Func Arg="I" Name="AmbientGoodSemigroupOfGoodIdeal"></Func>
      <Description>
        If <A>I</A> is a good ideal of a good semigroup <M>M</M>, then the output is <M>M</M>. The output is a good generating system of <A>I</A>.

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> a:=AmalgamationOfNumericalSemigroups(s,e,5);;
gap> e:=GoodIdeal([[2,3],[3,2],[2,2]],a);;
gap> a=AmbientGoodSemigroupOfGoodIdeal(e);
true
]]></Example>
      </Description>
    </ManSection>

    <ManSection>
      <Func Arg="I" Name="MinimalGoodGeneratingSystemOfGoodIdeal"></Func>
      <Description>
        <A>I</A> is a good ideal of a good semigroup. The output is the minimal good generating system of <A>I</A>.

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> d:=NumericalSemigroupDuplication(s,e);;
gap> e:=GoodIdeal([[2,3],[3,2],[2,2]],d);;
gap> MinimalGoodGeneratingSystemOfGoodIdeal(e);
[ [ 2, 3 ], [ 3, 2 ] ]
]]></Example>
      </Description>
    </ManSection>

    <ManSection>
      <Oper Arg="v,I" Name="BelongsToGoodIdeal"></Oper>
      <Oper Name="\in" Arg="v,I" Label="membership for good ideal"/>
      <Description>
        <A>I</A> is a good ideal of a good semigroup and <A>v</A> is a pair of integers. The output is <C>true</C> if <A>v</A> is in <A>I</A>, and <C>false</C> otherwise.

        Other ways to use this operation are <C>\in(v,I)</C> and <C>v in I</C>.
        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> d:=NumericalSemigroupDuplication(s,e);;
gap> e:=GoodIdeal([[2,3],[3,2]],d);;
gap> [1,1] in e;
false
gap> [2,2] in e;
true
]]></Example>
      </Description>
    </ManSection>


    <ManSection>
      <Func Arg="I" Name="SmallElements" Label="for good ideal"></Func>
      <Func Arg="I" Name="SmallElementsOfGoodIdeal"></Func>

      <Description>
        <A>I</A> 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).

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> d:=NumericalSemigroupDuplication(s,e);;
gap> e:=GoodIdeal([[2,3],[3,2]],d);;
gap> SmallElements(e);
[ [ 2, 2 ], [ 2, 3 ], [ 3, 2 ], [ 5, 5 ], [ 5, 6 ], [ 6, 5 ], [ 7, 7 ] ]
]]></Example>
      </Description>
    </ManSection>


    <ManSection>
      <Func Arg="S" Name="CanonicalIdealOfGoodSemigroup" ></Func>
      <Description>
        <A>S</A> is a good semigroup. The output is the canonical ideal of <A>S</A>.

        <Example><![CDATA[
gap> s:=NumericalSemigroup(3,5,7);;
gap> e:=10+s;;
gap> d:=NumericalSemigroupDuplication(s,e);;
gap> c:=CanonicalIdealOfGoodSemigroup(d);;
gap> MinimalGoodGeneratingSystemOfGoodIdeal(c);
[ [ 0, 0 ], [ 2, 2 ] ]
]]></Example>
      </Description>
    </ManSection>


<ManSection>
      <Func Arg="S" Name="AbsoluteIrreduciblesOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup; this function returns the absolute irreducibles of <A>S</A>: nonzero elements of 
        the semigroup that are irreducible with respect to both operations (that is, 
        in the semiring <M>(S,\mathrm{min},+)</M>). The notations <M>(x,\infty)</M> and <M>(\infty,y)</M> denote that 
        starting from a certain element the respective line is included in the semigroup.
        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 5, 4 ], [ 5, 8 ], [ 5, 11 ],
[ 5, 12 ], [ 5, 13 ], [ 6, 4 ], [ 7, 8 ], [ 7, 11 ], [ 7, 12 ], [ 7, 14 ],
[ 8, 8 ], [ 8, 11 ], [ 8, 12 ], [ 8, 15 ], [ 8, 16 ], [ 8, 17 ], [ 8, 18 ], 
[ 10, 8 ], [ 10, 11 ], [ 10, 12 ], [ 10, 15 ], [ 10, 16 ], [ 10, 17 ], 
[ 10, 18 ], [ 11, 8 ], [ 11, 11 ], [ 11, 12 ], [ 11, 15 ], [ 11, 16 ],
[ 11, 17 ], [ 12, 8 ], [ 12, 11 ], [ 12, 12 ], [ 12, 15 ], [ 12, 16 ], 
[ 12, 18 ] ]);
<Good semigroup>
gap> AbsoluteIrreduciblesOfGoodSemigroup(S);
[ [ 5, 13 ], [ 6, 4 ], [ 7, 14 ], [ 8, infinity ], [ 10, infinity ],
  [ 12, infinity ], [ infinity, 8 ], [ infinity, 11 ], [ infinity, 18 ] ]
]]></Example>
      </Description>
    </ManSection>


<ManSection>
      <Func Arg="S" Name="TracksOfGoodSemigroup"></Func>
      <Description>
        <A>S</A> is a good semigroup. This function returns the tracks of the good semigroup (see <Cite Key="M-Z"></Cite>
        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 <A>S</A>.
        <P/>
        A track <M>T(\alpha_1,\ldots,\alpha_n)</M> is represented with the list of the elements
        <M>\alpha_1,\ldots,\alpha_n</M> that determine it completely.

        <Example><![CDATA[
gap> S:=GoodSemigroupBySmallElements([ [ 0, 0 ], [ 4, 3 ], [ 8, 6 ], [ 8, 7 ],
[ 12, 6 ], [ 12, 9 ], [ 12, 10 ], [ 16, 6 ], [ 16, 9 ], [ 16, 12 ], [ 16, 13 ],
[ 16, 14 ], [ 18, 6 ], [ 20, 9 ], [ 20, 12 ], [ 20, 13 ], [ 20, 15 ], [ 20, 16 ],
[ 20, 17 ], [ 22, 9 ], [ 24, 12 ], [ 24, 13 ], [ 24, 15 ], [ 24, 16 ], [ 24, 18 ],
[ 26, 12 ], [ 26, 13 ], [ 28, 12 ], [ 28, 15 ], [ 28, 16 ], [ 28, 18 ],[ 30, 12 ], 
[ 30, 15 ], [ 30, 16 ], [ 30, 18 ] ]);
<Good semigroup>
gap> TracksOfGoodSemigroup(S);
[ [ [ 4, 3 ] ], [ [ 8, 7 ], [ 18, 6 ] ],
  [ [ 30, infinity ], [ infinity, 16 ] ],
  [ [ 31, infinity ], [ infinity, 16 ] ], [ [ 31, infinity ] ],
  [ [ 33, infinity ], [ infinity, 16 ] ], [ [ 33, infinity ] ] ]

]]></Example>
      </Description>
    </ManSection>



</Section>

100%


¤ Dauer der Verarbeitung: 0.32 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.