Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346<?xml version="1.0" encoding="UTF-8"?>1<Section>2<Heading>3Constructing the set of all numerical semigroups containing a given numerical semigroup4</Heading>5In order to construct the set of numerical semigroups containing a fixed numerical6semigroup <M>S</M>, one first constructs its unitary extensions, that is to say, the7sets <M>S\cup\{g\}</M> that are numerical semigroups with <M>g</M> a positive integer.8This is achieved by constructing the special gaps of the semigroup, and then adding each9of them to the numerical semigroup. Then we repeat the process for each of this new10numerical semigroups until we reach <M> {\mathbb N} </M>.1112<P/>13These procedures are described in <Cite Key="RGGJ03"></Cite>.14151617<ManSection>18<Func Arg="s" Name="OverSemigroupsNumericalSemigroup"></Func>19<Description>20<A>s</A> is a numerical semigroup. The output is the set of numerical semigroups21containing it.22<Example><![CDATA[23gap> OverSemigroupsNumericalSemigroup(NumericalSemigroup(3,5,7));24[ <The numerical semigroup N>, <Numerical semigroup with 2 generators>,25<Numerical semigroup with 3 generators>,26<Numerical semigroup with 3 generators> ]27gap> List(last,s->MinimalGenerators(s));28[ [ 1 ], [ 2, 3 ], [ 3 .. 5 ], [ 3, 5, 7 ] ]29]]></Example>30</Description>31</ManSection>3233</Section>3435<Section>36<Heading> Constructing the set of numerical semigroup with given Frobenius number</Heading>37<ManSection>38<Func Arg="f" Name="NumericalSemigroupsWithFrobeniusNumber"></Func>39<Description>40<A>f</A> is an non zero integer greater than or equal to -1. The output is the41set of numerical semigroups with Frobenius number <A>f</A>.42The algorithm implemented is given in <Cite Key="RGGJ04"/>.43<Example><![CDATA[44gap> Length(NumericalSemigroupsWithFrobeniusNumber(15));4520046]]></Example>47</Description>48</ManSection>4950</Section>5152<Section>53<Heading>54Constructing the set of numerical semigroups with genus g, that is, numerical55semigroups with exactly g gaps56</Heading>57Given a numerical semigroup of genus g, removing minimal generators, one58obtains numerical semigroups of genus g+1. In order to avoid repetitions,59we only remove minimal generators greater than the Frobenius number of60the numerical semigroup (this is accomplished with the local function sons).6162<P/>63These procedures are described in <Cite Key="RGGB03"></Cite> and <Cite Key="B-A08"></Cite>.64656667<ManSection>68<Func Arg="g" Name="NumericalSemigroupsWithGenus"></Func>69<Description>70<A>g</A> is a nonnegative integer. The output is the set of numerical semigroups71with genus <A>g</A>.72<Example><![CDATA[73gap> NumericalSemigroupsWithGenus(5);74[ <Numerical semigroup with 6 generators>,75<Numerical semigroup with 5 generators>,76<Numerical semigroup with 5 generators>,77<Numerical semigroup with 5 generators>,78<Numerical semigroup with 5 generators>,79<Numerical semigroup with 4 generators>,80<Numerical semigroup with 4 generators>,81<Numerical semigroup with 4 generators>,82<Numerical semigroup with 4 generators>,83<Numerical semigroup with 3 generators>,84<Numerical semigroup with 3 generators>,85<Numerical semigroup with 2 generators> ]86gap> List(last,MinimalGenerators);87[ [ 6 .. 11 ], [ 5, 7, 8, 9, 11 ], [ 5, 6, 8, 9 ], [ 5, 6, 7, 9 ],88[ 5, 6, 7, 8 ], [ 4, 6, 7 ], [ 4, 7, 9, 10 ], [ 4, 6, 9, 11 ],89[ 4, 5, 11 ], [ 3, 8, 10 ], [ 3, 7, 11 ], [ 2, 11 ] ]90]]></Example>91</Description>92</ManSection>9394</Section>95<Section>96<Heading>97Constructing the set of numerical semigroups with a given set of pseudo-Frobenius numbers98</Heading>99Refer to <Ref Func="PseudoFrobeniusOfNumericalSemigroup" />.100101<P/>102These procedures are described in <Cite Key="DGSRP15"></Cite>.103<ManSection>104<Func Arg="PF" Name="ForcedIntegersForPseudoFrobenius"></Func>105<Description>106<A>PF</A> is a list of positive integers (given as a list or individual elements). The output is:107<List><Item>108in case there exists a numerical semigroup <M>S</M> such that <M>PF(S)=PF</M>:109<List><Item>110a list <M>[forced\_gaps,forced\_elts]</M> such that:111<List><Item>112<M>forced\_gaps</M> is contained in <M>{\mathbb N} - S</M> for any numerical semigroup S such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>113</Item><Item>114forced_elts is contained in <M>S</M> for any numerical semigroup <M>S</M> such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>115</Item></List>116</Item></List>117</Item><Item>118"fail" in case it is found some condition that fails.119</Item></List>120<Example><![CDATA[121gap> pf := [ 58, 64, 75 ];122[ 58, 64, 75 ]123gap> ForcedIntegersForPseudoFrobenius(pf);124[ [ 1, 2, 3, 4, 5, 6, 7, 8, 11, 15, 16, 17, 25, 29, 32, 58, 64, 75 ],125[ 0, 59, 60, 67, 68, 69, 70, 71, 72, 73, 74, 76 ] ]126]]></Example>127</Description>128</ManSection>129<ManSection>130<Func Arg="fg,fe,PF" Name="SimpleForcedIntegersForPseudoFrobenius"></Func>131<Description>132Is just a quicker version of <Ref Func="ForcedIntegersForPseudoFrobenius"/>133<P/>134<A>fg</A> is a list of integers that we require to be gaps of the semigroup; <A>fe</A> is a list of integers that we require to be elements of the semigroup; <A>PF</A> is a list of positive integers. The output is:135<List><Item>136in case there exists a numerical semigroup <M>S</M> such that <M>PF(S)=PF</M>:137<List><Item>138a list <M>[forced\_gaps,forced\_elts]</M> such that:139<List><Item>140<M>forced\_gaps</M> is contained in <M>{\mathbb N} - S</M> for any numerical semigroup S such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>141</Item><Item>142forced_elts is contained in <M>S</M> for any numerical semigroup <M>S</M> such that <M>PF(S)=\{g\_1,\ldots,g\_n\}</M>143</Item></List>144</Item></List>145</Item><Item>146"fail" in case it is found some condition that fails.147</Item></List>148<Example><![CDATA[149gap> pf := [ 15, 20, 27, 35 ];;150gap> fint := ForcedIntegersForPseudoFrobenius(pf);151[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 16, 20, 27, 35 ],152[ 0, 19, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ]153gap> free := Difference([1..Maximum(pf)],Union(fint));154[ 11, 13, 14, 17, 18, 21, 22, 24 ]155gap> SimpleForcedIntegersForPseudoFrobenius(fint[1],Union(fint[2],[free[1]]),pf);156[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 20, 24, 27, 35 ],157[ 0, 11, 19, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36 ] ]158]]></Example>159</Description>160</ManSection>161162<ManSection>163<Func Arg="g" Name="NumericalSemigroupsWithPseudoFrobeniusNumbers"></Func>164<Description>165<A>PF</A> is a list of positive integers (given as a list or individual elements). The output is: a list of numerical semigroups S such that PF(S)=PF.166When Length(PF)=1, it makes use of the function <Ref Func="NumericalSemigroupsWithFrobeniusNumber"/>167<P/>168<Example><![CDATA[169gap> pf := [ 58, 64, 75 ];170[ 58, 64, 75 ]171gap> Length(NumericalSemigroupsWithPseudoFrobeniusNumbers(pf));172561173gap> pf := [11,19,22];;174gap> NumericalSemigroupsWithPseudoFrobeniusNumbers(pf);175[ <Numerical semigroup>, <Numerical semigroup>, <Numerical semigroup>,176<Numerical semigroup>, <Numerical semigroup> ]177gap> List(last,MinimalGenerators);178[ [ 7, 9, 17, 20 ], [ 7, 10, 13, 16, 18 ], [ 9, 12, 14, 15, 16, 17, 20 ],179[ 10, 13, 14, 15, 16, 17, 18, 21 ],180[ 12, 13, 14, 15, 16, 17, 18, 20, 21, 23 ] ]181]]></Example>182</Description>183</ManSection>184185<ManSection>186<Func Arg="g" Name="ANumericalSemigroupWithPseudoFrobeniusNumbers"></Func>187<Description>188<A>PF</A> is a list of positive integers (given as a list or individual elements). Alternatively, a record with fields "pseudo_frobenius" and "max_attempts" option189The output is: A numerical semigroup S such that PF(S)=PF. Returns fail if it concludes that it exists and suggests to use NumericalSemigroupsWithPseudoFrobeniusNumbers if it is not able to conclude...190<P/>191It makes use of the function <Ref Func="AnIrreducibleNumericalSemigroupWithFrobeniusNumber"/>, when Length(PF)=1 or Length(PF)=2 and 2*PF[1] = PF[2].192<P/>193<Example><![CDATA[194gap> pf := [ 83, 169, 173, 214, 259 ];;195gap> ANumericalSemigroupWithPseudoFrobeniusNumbers(pf);196<Numerical semigroup>197gap> gen := MinimalGeneratingSystem(last);198[ 38, 57, 64, 72, 79, 98, 99, 106, 118, 120, 124, 132, 134, 146, 147, 154,199165, 168, 179 ]200gap> ns := NumericalSemigroup(gen);201<Numerical semigroup with 19 generators>202gap> PseudoFrobeniusOfNumericalSemigroup(ns);203[ 83, 169, 173, 214, 259 ]204]]></Example>205</Description>206</ManSection>207</Section>208209210