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"?>12Let <M>S</M> be a numerical semigroup. A set <M>I</M> of integers is an <E>ideal relative</E>3to a numerical semigroup <M>S</M> provided that <M>I+S\subseteq I</M> and that there4exists <M>d\in S</M> such that <M>d+I\subseteq S</M>.5<P/>6If <M>\{i_1,\ldots,i_k\}</M> is a subset of <M>{\mathbb Z}</M>, then the set7<M>I=\{i_1,\ldots,i_k\}+S=\bigcup_{n=1}^k i_n+S</M> is an ideal relative to <M>S</M>,8and <M>\{i_1,\ldots, i_k\}</M> is a system of generators of <M>I</M>. A system of generators9<M>M</M> is minimal if no proper subset of <M>M</M> generates the same ideal.10Usually, ideals are specified by means of its generators and the ambient numerical11semigroup to which they are ideals (for more information see for instance12<Cite Key="BDF97"></Cite>).1314<Section>15<Heading>16Definitions and basic operations17</Heading>181920<ManSection>21<Func Arg="l,S" Name="IdealOfNumericalSemigroup"></Func>22<Func Arg="l,S" Name="+" Label="for defining ideal of numerical semigroup"></Func>23<Description>24<A>S</A> is a numerical semigroup and <A>l</A> a list of integers.25The output is the ideal of <A>S</A> generated by <A>l</A>.2627<P/>28There are several shortcuts for this function, as shown in the example.29<Example><![CDATA[30gap> IdealOfNumericalSemigroup([3,5],NumericalSemigroup(9,11));31<Ideal of numerical semigroup>32gap> [3,5]+NumericalSemigroup(9,11);33<Ideal of numerical semigroup>34gap> last=last2;35true36gap> 3+NumericalSemigroup(5,9);37<Ideal of numerical semigroup>38]]></Example>39</Description>40</ManSection>414243<ManSection>44<Func Arg="Obj" Name="IsIdealOfNumericalSemigroup"></Func>45<Description>46Tests if the object <A>Obj</A> is an ideal of a47numerical semigroup.4849<Example><![CDATA[50gap> I:=[1..7]+NumericalSemigroup(7,19);;51gap> IsIdealOfNumericalSemigroup(I);52true53gap> IsIdealOfNumericalSemigroup(2);54false55]]></Example>56</Description>57</ManSection>58596061<ManSection>62<Attr Arg="I" Name="MinimalGenerators" Label="for ideal of numerical semigroup"></Attr>63<Attr Arg="I" Name="MinimalGeneratingSystem" Label="for ideal of numerical semigroup"></Attr>64<Attr Arg="I" Name="MinimalGeneratingSystemOfIdealOfNumericalSemigroup"></Attr>65<Description>66<A>I</A> is an ideal of a numerical semigroup.67The output is the minimal system of generators of <A>I</A>.6869<Example><![CDATA[70gap> I:=[3,5,9]+NumericalSemigroup(2,11);;71gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);72[ 3 ]73gap> MinimalGeneratingSystem(I);74[ 3 ]75gap> MinimalGenerators([3,5]+NumericalSemigroup(2,11));76[ 3 ]77]]></Example>78</Description>79</ManSection>8081<ManSection>82<Attr Arg="I" Name="Generators" Label="for ideal of numerical semigroup"></Attr>83<Attr Arg="I" Name="GeneratorsOfIdealOfNumericalSemigroup"></Attr>84<Description>85<A>I</A> is an ideal of a numerical semigroup.86The output is a system of generators of the ideal.87<P/>88Remark: from Version 1.0.1 on, this value does not change even when a set of minimal generators is computed.899091<Example><![CDATA[92gap> I:=[3,5,9]+NumericalSemigroup(2,11);;93gap> GeneratorsOfIdealOfNumericalSemigroup(I);94[ 3, 5, 9 ]95gap> Generators(I);96[ 3, 5, 9 ]97]]></Example>98</Description>99</ManSection>100101102103<ManSection>104<Func Arg="I" Name="AmbientNumericalSemigroupOfIdeal"></Func>105<Description>106<A>I</A> is an ideal of a numerical semigroup, say <M>S</M>.107The output is <M>S</M>.108109<Example><![CDATA[110gap> I:=[3,5,9]+NumericalSemigroup(2,11);;111gap> AmbientNumericalSemigroupOfIdeal(I);112<Numerical semigroup with 2 generators>113]]></Example>114</Description>115</ManSection>116117<ManSection>118<Prop Arg="I" Name="IsIntegral"></Prop>119<Prop Arg="I" Name="IsIntegralIdealOfNumericalSemigroup"></Prop>120<Description>121<A>I</A> is an ideal of a numerical semigroup, say <M>S</M>.122Detects if <M>I\subseteq S</M>.123124<Example><![CDATA[125gap> s:=NumericalSemigroup(3,7,5);;126gap> IsIntegralIdealOfNumericalSemigroup(4+s);127false128gap> IsIntegralIdealOfNumericalSemigroup(10+s);129true130gap> IsIntegral(10+s);131true132]]></Example>133</Description>134</ManSection>135136<ManSection>137<Func Arg="I" Name="SmallElements" Label="for ideal of numerical semigroup"></Func>138<Func Arg="I" Name="SmallElementsOfIdealOfNumericalSemigroup"></Func>139<Description>140<A>I</A> is an ideal of a numerical semigroup.141The output is a list with the elements in <A>I</A> that are less than or equal142to the greatest integer not belonging to the ideal plus one.143144<Example><![CDATA[145gap> I:=[3,5,9]+NumericalSemigroup(2,11);;146gap> SmallElementsOfIdealOfNumericalSemigroup(I);147[ 3, 5, 7, 9, 11, 13 ]148gap> SmallElements(I) = SmallElementsOfIdealOfNumericalSemigroup(I);149true150gap> J:=[2,11]+NumericalSemigroup(2,11);;151gap> SmallElementsOfIdealOfNumericalSemigroup(J);152[ 2, 4, 6, 8, 10 ]153]]></Example>154</Description>155</ManSection>156157<ManSection>158<Attr Name="Conductor" Arg="NS" Label="for ideal of numerical semigroup"/>159<Func Arg="I" Name="ConductorOfIdealOfNumericalSemigroup"></Func>160<Description>161<A>I</A> is an ideal of a numerical semigroup.162The output is the largest element in <A>SmallElements(I)</A>.163164<Example><![CDATA[165gap> s:=NumericalSemigroup(3,7,5);;166gap> ConductorOfIdealOfNumericalSemigroup(10+s);16715168gap> Conductor(10+s);16915170]]></Example>171</Description>172</ManSection>173174<ManSection>175<Oper Name="Minimum" Arg="I" Label="minimum of ideal of numerical semigroup"/>176<Description>177<A>I</A> is an ideal of a numerical semigroup.178The output is the minimum of <A>I</A>.179180<Example><![CDATA[181gap> J:=[2,11]+NumericalSemigroup(2,11);;182gap> Minimum(J);1832184]]></Example>185</Description>186</ManSection>187188189<ManSection>190<Func Arg="n, I" Name="BelongsToIdealOfNumericalSemigroup"></Func>191<Oper Name="\in" Arg="n, I" Label="membership test in ideal of numerical semigroup"/>192<Description>193<A>I</A> is an ideal of a numerical semigroup, <A>n</A> is an integer.194The output is true if <A>n</A> belongs to <A>I</A>.195196<P/>197<A> n in I</A> can be used for short.198199<Example><![CDATA[200gap> J:=[2,11]+NumericalSemigroup(2,11);;201gap> BelongsToIdealOfNumericalSemigroup(9,J);202false203gap> 9 in J;204false205gap> BelongsToIdealOfNumericalSemigroup(10,J);206true207gap> 10 in J;208true209]]></Example>210</Description>211</ManSection>212213214<ManSection>215<Func Arg="I, J" Name="SumIdealsOfNumericalSemigroup"></Func>216<Func Arg="I, J" Name="+" Label="for ideals of numerical semigroup"></Func>217<Description>218<A>I, J</A> are ideals of a numerical semigroup.219The output is the sum of both ideals <M>\{ i+j \ |\ i\in <A>I</A>, j\in <A>J</A>\}</M>.220221<Example><![CDATA[222gap> I:=[3,5,9]+NumericalSemigroup(2,11);;223gap> J:=[2,11]+NumericalSemigroup(2,11);;224gap> I+J;225<Ideal of numerical semigroup>226gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);227[ 5, 14 ]228gap> SumIdealsOfNumericalSemigroup(I,J);229<Ideal of numerical semigroup>230gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);231[ 5, 14 ]232]]></Example>233</Description>234</ManSection>235236<ManSection>237<Func Arg="n, I" Name="MultipleOfIdealOfNumericalSemigroup"></Func>238<Func Arg="n, I" Name="*" Label="for multiple of ideal of numerical semigroup"></Func>239<Description>240<A>I</A> is an ideal of a numerical semigroup, <A>n</A> is a non negative integer.241The output is the ideal <M><A>I</A>+\cdots+<A>I</A></M> (<A>n</A> times).242243<P/>244<A> n * I</A> can be used for short.245246<Example><![CDATA[247gap> I:=[0,1]+NumericalSemigroup(3,5,7);;248gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(2*I);249[ 0, 1, 2 ]250]]></Example>251</Description>252</ManSection>253254255<ManSection>256<Func Arg="I, J" Name="SubtractIdealsOfNumericalSemigroup"></Func>257<Func Arg="I, J" Name="-" Label="for ideals of numerical semigroup"></Func>258<Description>259<A>I, J</A> are ideals of a numerical semigroup.260The output is the ideal <M>\{ z\in {\mathbb Z}\ |\ z+<A>J</A>\subseteq <A>I</A>\}</M>.261262<P/>263<M>I - J</M> is a synonym of <C>SubtractIdealsOfNumericalSemigroup</C>.264265<P/>266<M>S-</M><A>J</A> is a synonym of <M>(0+S)-</M><A>J</A>, if <M>S</M> is the ambient semigroup of <A>I</A> and <A>J</A>.267268The following example appears in <Cite Key="HS04"></Cite>.269<Example><![CDATA[270gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;271gap> I:=[0,1]+S;;272gap> II:=S-I;;273gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);274[ 0, 1 ]275gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(II);276[ 14, 20 ]277gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I+II);278[ 14, 15, 20, 21 ]279]]></Example>280</Description>281</ManSection>282283284285<ManSection>286<Oper Name="Difference" Arg="I, J" Label="for ideals of numerical semigroups"/>287<Func Arg="I, J" Name="DifferenceOfIdealsOfNumericalSemigroup"></Func>288<Description>289<A>I, J</A> are ideals of a numerical semigroup. <A>J</A> must be contained in <A>I</A>.290The output is the set <M><A>I</A>\setminus <A>J</A></M>.291292<Example><![CDATA[293gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;294gap> I:=[0,1]+S;295<Ideal of numerical semigroup>296gap> 2*I-2*I;297<Ideal of numerical semigroup>298gap> I-I;299<Ideal of numerical semigroup>300gap> ii := 2*I-2*I;301<Ideal of numerical semigroup>302gap> i := I-I;303<Ideal of numerical semigroup>304gap> DifferenceOfIdealsOfNumericalSemigroup(last2,last);305[ 26, 27, 37, 38 ]306gap> Difference(ii,i);307[ 26, 27, 37, 38 ]308gap> Difference(i,ii);309[ ]310]]></Example>311</Description>312</ManSection>313314315<ManSection>316<Func Arg="k, I" Name="TranslationOfIdealOfNumericalSemigroup"></Func>317<Func Arg="k, I" Name="+" Label="translation of ideal of numerical semigroup"></Func>318<Description>319Given an ideal <A>I</A> of a numerical semigroup S and an integer <A>k</A>320returns an ideal of the numerical semigroup S generated by321<M>\{i_1+k,\ldots,i_n+k\}</M> where <M>\{i_1,\ldots,i_n\}</M> is the system of generators of <A>I</A>.322<P/>323As a synonym to <C>TranslationOfIdealOfNumericalSemigroup(k, I)</C> the expression324<C>k + I</C> may be used.325326<Example><![CDATA[327gap> s:=NumericalSemigroup(13,23);;328gap> l:=List([1..6], _ -> Random([8..34]));329[ 22, 29, 34, 25, 10, 12 ]330gap> I:=IdealOfNumericalSemigroup(l, s);;331gap> It:=TranslationOfIdealOfNumericalSemigroup(7,I);332<Ideal of numerical semigroup>333gap> It2:=7+I;334<Ideal of numerical semigroup>335gap> It2=It;336true337]]></Example>338</Description>339</ManSection>340341<ManSection>342<Oper Name="Intersection" Arg="I, J" Label="for ideals of numerical semigroups"/>343<Func Arg="I, J" Name="IntersectionIdealsOfNumericalSemigroup"></Func>344<Description>345Given two ideals <A>I</A> and <A>J</A> of a numerical semigroup <A>S</A>346returns the ideal of the numerical semigroup <A>S</A> which is the347intersection of the ideals <A>I</A> and <A>J</A>.348349<Example><![CDATA[350gap> i:=IdealOfNumericalSemigroup([75,89],s);;351gap> j:=IdealOfNumericalSemigroup([115,289],s);;352gap> IntersectionIdealsOfNumericalSemigroup(i,j);353<Ideal of numerical semigroup>354]]></Example>355</Description>356</ManSection>357358359<ManSection>360<Func Arg="S" Name="MaximalIdealOfNumericalSemigroup"></Func>361<Description>362Returns the maximal ideal of the numerical semigroup <A>S</A>.363364<Example><![CDATA[365gap> MaximalIdealOfNumericalSemigroup(NumericalSemigroup(3,7));366<Ideal of numerical semigroup>367]]></Example>368</Description>369</ManSection>370371372<ManSection>373<Func Arg="S" Name="CanonicalIdealOfNumericalSemigroup"></Func>374<Description>375<A>S</A> is a numerical semigroup.376Computes a canonical ideal of <A>S</A> (<Cite Key="BF06"></Cite>):377<M>\{ x \in \mathbb{Z} | g-x \not \in S\} </M>.378379<Example><![CDATA[380gap> s:=NumericalSemigroup(4,6,11);;381gap> m:=MaximalIdealOfNumericalSemigroup(s);;382gap> c:=CanonicalIdealOfNumericalSemigroup(s);383<Ideal of numerical semigroup>384gap> c-(c-m)=m;385true386gap> id:=3+s;387<Ideal of numerical semigroup>388gap> c-(c-id)=id;389true390]]></Example>391</Description>392</ManSection>393394<ManSection>395<Prop Arg="E" Name="IsCanonicalIdeal"></Prop>396<Prop Arg="E" Name="IsCanonicalIdealOfNumericalSemigroup"></Prop>397<Description>398<A>E</A> is an ideal of a numerical semigroup, say <M>S</M>. Determines if <A>E</A> is a translation of the canonical ideal of <M>S</M>, or equivalently, for every ideal <M>J</M>, <M>E-(E-J)=J</M>.399400<Example><![CDATA[401gap> s:=NumericalSemigroup(3,5,7);;402gap> c:=3+CanonicalIdealOfNumericalSemigroup(s);;403gap> c-(c-(3+s))=3+s;404true405gap> IsCanonicalIdealOfNumericalSemigroup(c);406true407]]></Example>408</Description>409</ManSection>410411<ManSection>412<Func Arg="S" Name="TypeSequenceOfNumericalSemigroup"></Func>413<Description>414415<A>S</A> is a numerical semigroup.416<P/>417418Computes the type sequence of a numerical semigroup. That is, the secuence <M>t_i(<A>S</A>)=\sharp(<A>S</A>(i)\setminus <A>S</A>(i-1))</M>, with <M><A>S</A>(i)=\{ s\in S\mid s\ge s_i\}</M> and <M>s_i</M> the <M>i</M>th element of <A>S</A>.419<P/>420This function is the implementation of the algorithm given in421<Cite Key="BDF97"></Cite>.422423424<Example><![CDATA[425gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;426gap> TypeSequenceOfNumericalSemigroup(s);427[ 13, 3, 4, 4, 7, 3, 3, 3, 2, 2, 2, 3, 3, 2, 4, 3, 2, 1, 3, 2, 1, 1, 2, 2, 1,4281, 1, 2, 2, 1, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,4291, 1, 1 ]430gap> s:=NumericalSemigroup(4,6,11);;431gap> TypeSequenceOfNumericalSemigroup(s);432[ 1, 1, 1, 1, 1, 1, 1 ]433]]></Example>434</Description>435</ManSection>436437</Section>438439<Section>440<Heading>441Blow ups and closures442</Heading>443444<ManSection>445<Func Arg="n, I" Name="HilbertFunctionOfIdealOfNumericalSemigroup"></Func>446<Description>447<A>I</A> is an ideal of a numerical semigroup, <A>n</A> is a non negative integer. <A>I</A> must be contained in its ambient semigroup.448The output is the cardinality of the set <M><A>n</A><A>I</A>\setminus (<A>n</A>+1)<A>I</A></M>.449450<Example><![CDATA[451gap> I:=[6,9,11]+NumericalSemigroup(6,9,11);;452gap> List([1..7],n->HilbertFunctionOfIdealOfNumericalSemigroup(n,I));453[ 3, 5, 6, 6, 6, 6, 6 ]454]]></Example>455</Description>456</ManSection>457458<ManSection>459<Func Arg="I" Name="BlowUpIdealOfNumericalSemigroup"></Func>460<Description>461<A>I</A> is an ideal of a numerical semigroup.462The output is the ideal <M>\bigcup_{n\geq 0} n<A>I</A>-n<A>I</A></M>.463464<Example><![CDATA[465gap> I:=[0,2]+NumericalSemigroup(6,9,11);;466gap> BlowUpIdealOfNumericalSemigroup(I);;467gap> SmallElementsOfIdealOfNumericalSemigroup(last);468[ 0, 2, 4, 6, 8 ]469]]></Example>470</Description>471</ManSection>472473474475<ManSection>476<Attr Arg="I" Name="ReductionNumber" Label="for ideals of numerical semigroups"></Attr>477<Attr Arg="I" Name="ReductionNumberIdealNumericalSemigroup"></Attr>478<Description>479<A>I</A> is an ideal of a numerical semigroup.480The output is the least integer481such that <M>n <A>I</A> + i=(n+1)<A>I</A></M>, where <M>i=min(<A>I</A>)</M>.482483<Example><![CDATA[484gap> I:=[0,2]+NumericalSemigroup(6,9,11);;485gap> ReductionNumberIdealNumericalSemigroup(I);4862487]]></Example>488</Description>489</ManSection>490491492493494495<ManSection>496<Func Arg="S" Name="BlowUpOfNumericalSemigroup"></Func>497<Description>498<A>S</A> is a numerical semigroup.499If <A>M</A> is the maximal ideal of the numerical semigroup, then500the output is the numerical semigroup501<M>\bigcup_{n\geq 0} n<A>M</A>-n<A>M</A></M>.502503504<Example><![CDATA[505gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;506gap> BlowUpOfNumericalSemigroup(s);507<Numerical semigroup with 10 generators>508gap> SmallElementsOfNumericalSemigroup(last);509[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,51040, 41, 42, 44 ]511gap> m:=MaximalIdealOfNumericalSemigroup(s);512<Ideal of numerical semigroup>513gap> BlowUpIdealOfNumericalSemigroup(m);514<Ideal of numerical semigroup>515gap> SmallElementsOfIdealOfNumericalSemigroup(last);516[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,51740, 41, 42, 44 ]518]]></Example>519</Description>520</ManSection>521<ManSection>522<Func Name="LipmanSemigroup" Arg="S"></Func>523<Description>524This is just a synonym of <Ref Func="BlowUpOfNumericalSemigroup"/>.525<Example><![CDATA[526gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;527gap> LipmanSemigroup(s);528<Numerical semigroup with 10 generators>529gap> SmallElementsOfNumericalSemigroup(last);530[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,53140, 41, 42, 44 ]532]]></Example>533534</Description>535</ManSection>536537538<ManSection>539<Func Arg="I" Name="RatliffRushNumberOfIdealOfNumericalSemigroup"></Func>540<Description>541<A>I</A> is an ideal of a numerical semigroup.542The output is the least integer543such that <M>(n+1)<A>I</A>-n<A>I</A></M> is the Ratliff-Rush closure of <A>I</A>.544545<Example><![CDATA[546gap> I:=[0,2]+NumericalSemigroup(6,9,11);;547gap> RatliffRushNumberOfIdealOfNumericalSemigroup(I);5481549]]></Example>550</Description>551</ManSection>552553554<ManSection>555<Func Arg="I" Name="RatliffRushClosureOfIdealOfNumericalSemigroup"></Func>556<Description>557<A>I</A> is an ideal of a numerical semigroup.558The output is the Ratliff-Rush closure of <A>I</A>: <M>\bigcup_{n\in \mathbb{N}}(n+1)<A>I</A>-n<A>I</A></M> (see <Cite Key="DA-G-H"></Cite>).559560<Example><![CDATA[561gap> I:=[0,2]+NumericalSemigroup(6,9,11);;562gap> RatliffRushClosureOfIdealOfNumericalSemigroup(I);563<Ideal of numerical semigroup>564gap> MinimalGenerators(last);565[ 0, 2, 4 ]566]]></Example>567</Description>568</ManSection>569570<ManSection>571<Func Arg="I" Name="AsymptoticRatliffRushNumberOfIdealOfNumericalSemigroup"></Func>572<Description>573<A>I</A> is an ideal of a numerical semigroup.574The output is the least <M>n</M> such that the Ratliff-Rush closure of <M>m<A>I</A></M> equals <M>m<A>I</A></M> for all <M>m\ge n</M>(see <Cite Key="DA-G-H"></Cite>).575576<Example><![CDATA[577gap> I:=[0,2]+NumericalSemigroup(6,9,11);;578gap> AsymptoticRatliffRushNumberOfIdealOfNumericalSemigroup(I);5792580]]></Example>581</Description>582</ManSection>583584585<ManSection>586<Func Name="MultiplicitySequenceOfNumericalSemigroup" Arg="S"/>587<Description>588<A>S</A> is a numerical semigroup. The output is a list with the multiplicities of the sequence <M>S\subseteq L(S)\subseteq \cdots \subseteq \mathbb{N}</M>, where <M>L(\cdot)</M> means <Ref Func="LipmanSemigroup"/>.589<Example><![CDATA[590gap> s:=NumericalSemigroup(3,5);591<Numerical semigroup with 2 generators>592gap> MultiplicitySequenceOfNumericalSemigroup(s);593[ 3, 2, 1 ]594]]></Example>595</Description>596</ManSection>597598599<ManSection>600<Func Arg="S" Name="MicroInvariantsOfNumericalSemigroup"></Func>601<Description>602Returns the microinvariants of the numerical semigroup <A>S</A> defined603in <Cite Key="E01"></Cite>. For their computation we have used the formula604given in <Cite Key="BF06"></Cite>. The Apéry set of <A>S</A> and its605blow up are involved in this computation.606607<Example><![CDATA[608gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;609gap> bu:=BlowUpOfNumericalSemigroup(s);;610gap> ap:=AperyListOfNumericalSemigroupWRTElement(s,30);;611gap> apbu:=AperyListOfNumericalSemigroupWRTElement(bu,30);;612gap> (ap-apbu)/30;613[ 0, 4, 4, 3, 2, 1, 3, 4, 4, 3, 2, 3, 1, 4, 4, 3, 3, 1, 4, 4, 4, 3, 2, 4, 2,6145, 4, 3, 3, 2 ]615gap> MicroInvariantsOfNumericalSemigroup(s)=last;616true617]]></Example>618</Description>619</ManSection>620621622623624<Heading>625Apéry sets of ideals of numerical semigroups626</Heading>627628629<ManSection>630<Func Arg="I,n" Name="AperyListOfIdealOfNumericalSemigroupWRTElement"></Func>631<Description>632<A>I</A> is an ideal and <A>n</A> is an integer.633Computes the set of elements <M>x</M> of <A>I</A> such that <M>x-</M><A>n</A> is not in the ideal <A>I</A>,634where <A>n</A> is supposed to be in the ambient semigroup of <A>I</A>.635The element in the <M>i</M>th position of the output list (starting in 0) is congruent with <M>i</M> modulo <A>n</A>.636637<Example><![CDATA[638gap> s:=NumericalSemigroup(10,11,13);;639gap> i:=[12,14]+s;;640gap> AperyListOfIdealOfNumericalSemigroupWRTElement(i,10);641[ 40, 51, 12, 23, 14, 25, 36, 27, 38, 49 ]642]]></Example>643</Description>644</ManSection>645646647<ManSection>648<Func Arg="s" Name="AperyTableOfNumericalSemigroup"></Func>649<Description>650651Computes the Apéry table associated to the numerical semigroup <A>s</A> as explained in <Cite Key="CJZ"></Cite>,652that is, a list containing the Apéry list of <A>s</A> with respect to its multiplicity and the Apéry lists of <M>kM</M>653(with <M>M</M> the maximal ideal of <A>s</A>) with respect to the multiplicity of <A>s</A>, for <M>k\in\{1,\ldots,r\}</M>,654where <M>r</M> is the reduction number of <M>M</M> (see <Ref Func="ReductionNumberIdealNumericalSemigroup"/>).655656<Example><![CDATA[657gap> s:=NumericalSemigroup(10,11,13);;658gap> AperyTableOfNumericalSemigroup(s);659[ [ 0, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],660[ 10, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],661[ 20, 21, 22, 23, 24, 35, 26, 37, 48, 39 ],662[ 30, 31, 32, 33, 34, 35, 36, 37, 48, 39 ],663[ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ] ]664]]></Example>665</Description>666</ManSection>667668<ManSection>669<Func Arg="i, is" Name="StarClosureOfIdealOfNumericalSemigroup"></Func>670<Description>671672<A>i</A> is an ideal and <A>is</A> is a set of ideals (all from the same numerical semigroup<M>s</M>).673The output is <M>i^{*_{is}}</M>, where <M>*_{is}</M> is the star operation generated by <A>is</A>: <M>(s-(s-i))\bigcap_{k\in is} (k-(k-i))</M>.674The implementation uses Section 3 of <Cite Key="MR3354072"></Cite>.675676<Example><![CDATA[677gap> s:=NumericalSemigroup(3,5,7);;678gap> StarClosureOfIdealOfNumericalSemigroup([0,2]+s,[[0,4]+s]);;679gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);680[ 0, 2, 4 ]681]]></Example>682</Description>683</ManSection>684685686</Section>687688689<Section Label="sec:PatternsIdeals">690<Heading>691Patterns for ideals692</Heading>693694In this section we document the functions implemented by K. Stokes related to patterns of ideals in numerical semigroups. The correctness of the algorithms can be found in <Cite Key="Stokes"></Cite>.695696697<ManSection>698<Func Arg="p" Name="IsAdmissiblePattern"></Func>699<Description>700701<A>p</A> is the list of integers that are the coefficients of a pattern. <P/>702703Returns true or false depending if the pattern is admissible or not (see <Cite Key="BA-GS"></Cite>).704705<Example><![CDATA[706gap> IsAdmissiblePattern([1,1,-1]);707true708gap> IsAdmissiblePattern([1,-2]);709false710]]></Example>711</Description>712</ManSection>713714715<ManSection>716<Func Arg="p" Name="IsStronglyAdmissiblePattern"></Func>717<Description>718719<A>p</A> is the list of integers that are the coefficients of a pattern. <P/>720721Returns true or false depending if the pattern is strongly admissible or not (see <Cite Key="BA-GS"></Cite>).722723<Example><![CDATA[724gap> IsAdmissiblePattern([1,-1]);725true726gap> IsStronglyAdmissiblePattern([1,-1]);727false728gap> IsStronglyAdmissiblePattern([1,1,-1]);729true730]]></Example>731</Description>732</ManSection>733734735<ManSection>736<Func Arg="I,T" Name="AsIdealOfNumericalSemigroup"></Func>737<Description>738739<A>I</A> is an ideal of a numerical semigroup <M>S</M>, and <A>T</A> is a numerical semigroup. Detects if <A>I</A> is an ideal of <A>T</A> and contained in <A>T</A> (integral ideal), and if so, returns <A>I</A> as an ideal of <A>T</A>. It returns <C>fail</C> if <A>I</A> is an ideal of some semigroup but not an integral ideal of <A>t</A>.740741<Example><![CDATA[742gap> s:=NumericalSemigroup(3,7,5);;743gap> t:=NumericalSemigroup(10,11,14);;744gap> AsIdealOfNumericalSemigroup(10+s,t);745fail746gap> AsIdealOfNumericalSemigroup(100+s,t);747<Ideal of numerical semigroup>748]]></Example>749</Description>750</ManSection>751752<ManSection>753<Func Arg="p,C" Name="BoundForConductorOfImageOfPattern"></Func>754<Description>755756<A>p</A> is the list of integers that are the coefficients of an admissible pattern. <A>C</A> is a positive integer.757758Calculates an upper bound of the smallest element <M>K</M> in <M>p(I)</M> such that all integers larger than <M>K</M> are contained in <M>p(I)</M>, where <M>I</M> is an ideal of a759numerical semigroup. Instead of taking <M>I</M> as parameter, the function takes <M>C</M>, which is assumed to be the conductor of <M>I</M>.760<Example><![CDATA[761gap> BoundForConductorOfImageOfPattern([1,1,-1],10);76210763]]></Example>764</Description>765</ManSection>766767768<ManSection>769<Func Arg="p,I" Name="ApplyPatternToIdeal"></Func>770<Description>771772<A>p</A> is the list of integers that are the coefficients of a strongly admissible pattern. <A>I</A> is an ideal of a numerical semigroup.<P/>773774Calculates <M>p(I)</M>. Outputs <M>p(I)</M>, represented as <C>[d,p(I)/d]</C>, where <C>d</C > is the gcd of the coefficients of <A>p</A>. All elements of <M>p(I)</M> are divisible by <M>d</M>, and <M>p(I)/d</M> is an ideal of some numerical semigroup. It is returned as the maximal ideal of the numerical semigroup <M>p(I)/d \cup \{0\}</M>. The parent numerical semigroup can later be changed with the function <C>AsIdealOfNumericalSemigroup</C>.775776777<Example><![CDATA[778gap> s:=NumericalSemigroup(3,7,5);;779gap> i:=10+s;;780gap> ApplyPatternToIdeal([1,1,-1],i);781[ 1, <Ideal of numerical semigroup> ]782]]></Example>783</Description>784</ManSection>785786787<ManSection>788<Func Arg="p,S" Name="ApplyPatternToNumericalSemigroup"></Func>789<Description>790791<A>p</A> is the list of integers that are the coefficients of a strongly admissible pattern. <A>S</A> is a numerical semigroup.<P/>792793Outputs <C>ApplyPatternToIdeal(p,0+S)</C>.794795<Example><![CDATA[796gap> s:=NumericalSemigroup(3,7,5);;797gap> ApplyPatternToNumericalSemigroup([1,1,-1],s);798[ 1, <Ideal of numerical semigroup> ]799gap> SmallElements(last[2]);800[ 0, 3, 5 ]801]]></Example>802</Description>803</ManSection>804805<ManSection>806<Func Arg="p,I,J" Name="IsAdmittedPatternByIdeal"></Func>807<Description>808809<A>p</A> is the list of integers that are the coefficients of a strongly admissible pattern. <A>I</A> and <A>J</A> are ideals of certain numerical semigroups.<P/>810811812Tests whether or not <M>p(I)</M> is contained in <A>J</A>.813814<Example><![CDATA[815gap> s:=NumericalSemigroup(3,7,5);;816gap> i:=[3,5]+s;;817gap> IsAdmittedPatternByIdeal([1,1,-1],i,i);818false819gap> IsAdmittedPatternByIdeal([1,1,-1],i,0+s);820true821]]></Example>822</Description>823</ManSection>824825<ManSection>826<Func Arg="p,S,T" Name="IsAdmittedPatternByNumericalSemigroup"></Func>827<Description>828829<A>p</A> is the list of integers that are the coefficients of a strongly admissible pattern. <A>S</A> and <A>T</A> are numerical semigroups.<P/>830831832Tests whether or not <M>p(S)</M> is contained in <A>T</A>.833834<Example><![CDATA[835gap> IsAdmittedPatternByNumericalSemigroup([1,1,-1],s,s);836true837gap> IsArfNumericalSemigroup(s);838true839]]></Example>840</Description>841</ManSection>842843844845</Section>846847<Section>848<Heading>Graded associated ring of numerical semigroup</Heading>849850This section contains several functions to test properties of the graded (with respect to the maximal ideal) of the semigroup ring <M>\mathbb{K}[\![S]\!]</M> (with <M>S</M> a numerical semigroup).851852<ManSection>853<Prop Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupCM"></Prop>854<Description>855<A>S</A> is a numerical semigroup.856Returns true if the graded ring associated to <M>K[[<A>S</A>]]</M>857is Cohen-Macaulay, and false otherwise.858This test is the implementation of the algorithm given in859<Cite Key="BF06"></Cite>.860861<Example><![CDATA[862gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;863gap> IsGradedAssociatedRingNumericalSemigroupCM(s);864false865gap> MicroInvariantsOfNumericalSemigroup(s);866[ 0, 4, 4, 3, 2, 1, 3, 4, 4, 3, 2, 3, 1, 4, 4, 3, 3, 1, 4, 4, 4, 3, 2, 4, 2,8675, 4, 3, 3, 2 ]868gap> List(AperyListOfNumericalSemigroupWRTElement(s,30),869> w->MaximumDegreeOfElementWRTNumericalSemigroup (w,s));870[ 0, 1, 4, 1, 2, 1, 3, 1, 4, 3, 2, 3, 1, 1, 4, 3, 3, 1, 4, 1, 4, 3, 2, 4, 2,8715, 4, 3, 1, 2 ]872gap> last=last2;873false874gap> s:=NumericalSemigroup(4,6,11);;875gap> IsGradedAssociatedRingNumericalSemigroupCM(s);876true877gap> MicroInvariantsOfNumericalSemigroup(s);878[ 0, 2, 1, 1 ]879gap> List(AperyListOfNumericalSemigroupWRTElement(s,4),880> w->MaximumDegreeOfElementWRTNumericalSemigroup(w,s));881[ 0, 2, 1, 1 ]882]]></Example>883</Description>884</ManSection>885886<ManSection>887<Prop Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupBuchsbaum"></Prop>888<Description>889890<A>S</A> is a numerical semigroup.891<P/>892893Returns true if the graded ring associated to <M>K[\![<A>S</A>]\!]</M>894is Buchsbaum, and false otherwise.895This test is the implementation of the algorithm given in <Cite Key="DA-M-M"></Cite>.896897898<Example><![CDATA[899gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;900gap> IsGradedAssociatedRingNumericalSemigroupBuchsbaum(s);901true902]]></Example>903</Description>904</ManSection>905906907<ManSection>908<Func Arg="S" Name="TorsionOfAssociatedGradedRingNumericalSemigroup"></Func>909<Description>910911<A>S</A> is a numerical semigroup.912<P/>913914This function returns the set of elements in the numerical semigroup <A>S</A> corresponding to a <M>\mathbb{K}</M>-basis of the torsion submodule of the associated graded ring of the numerical semigroup ring <M>\mathbb{K}[\![S]\!]</M>. It uses the Apery table as explained in <Cite Key="CJZ"></Cite>.915916<Example><![CDATA[917gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;918gap> TorsionOfAssociatedGradedRingNumericalSemigroup(s);919[ 181, 153, 157, 193, 169, 148 ]920]]></Example>921</Description>922</ManSection>923924<ManSection>925<Func Arg="S" Name="BuchsbaumNumberOfAssociatedGradedRingNumericalSemigroup"></Func>926<Description>927928<A>S</A> is a numerical semigroup.929<P/>930931This function returns the smallest non-negative integer <M>k</M> for which the associated graded ring <M>G</M> of a given numerical semigroup ring is <M>k</M>-Buchsbaum, that is, the least <M>k</M> for which the torsion submodule of <M>G</M> is annihilated by the <M>k</M>-th power of the homogeneous maximal ideal of <M>G</M>.932933<Example><![CDATA[934gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;935gap> BuchsbaumNumberOfAssociatedGradedRingNumericalSemigroup(s);9361937gap> IsGradedAssociatedRingNumericalSemigroupBuchsbaum(s);938true939]]></Example>940</Description>941</ManSection>942943<ManSection>944<Prop Arg="S" Name="IsMpure"></Prop>945<Prop Arg="S" Name="IsMpureNumericalSemigroup"></Prop>946<Description>947948<A>S</A> is a numerical semigroup.949<P/>950951Test for the M-Purity of the numerical semigroup S <A>S</A>.952This test is based on953<Cite Key="Br"></Cite>.954955<Example><![CDATA[956gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;957gap> IsMpureNumericalSemigroup(s);958false959gap> s:=NumericalSemigroup(4,6,11);;960gap> IsMpureNumericalSemigroup(s);961true962]]></Example>963</Description>964</ManSection>965966<ManSection>967<Prop Arg="S" Name="IsPure"></Prop>968<Prop Arg="S" Name="IsPureNumericalSemigroup"></Prop>969<Description>970971<A>S</A> is a numerical semigroup.972<P/>973974Test for the purity of the numerical semigroup S <A>S</A>.975This test is based on976<Cite Key="Br"></Cite>.977978<Example><![CDATA[979gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;980gap> IsPureNumericalSemigroup(s);981false982gap> s:=NumericalSemigroup(4,6,11);;983gap> IsPureNumericalSemigroup(s);984true985]]></Example>986</Description>987</ManSection>988989<ManSection>990<Func Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupGorenstein"></Func>991<Description>992993<A>S</A> is a numerical semigroup.994<P/>995996Returns true if the graded ring associated to <M>K[[<A>S</A>]]</M>997is Gorenstein, and false otherwise.998This test is the implementation of the algorithm given in999<Cite Key="DA-M-S"></Cite>.100010011002<Example><![CDATA[1003gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;1004gap> IsGradedAssociatedRingNumericalSemigroupGorenstein(s);1005false1006gap> s:=NumericalSemigroup(4,6,11);;1007gap> IsGradedAssociatedRingNumericalSemigroupGorenstein(s);1008true1009]]></Example>1010</Description>1011</ManSection>101210131014<!--the functions below first appeared in version 0.98-->1015<ManSection>1016<Func Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupCI"></Func>1017<Description>10181019<A>S</A> is a numerical semigroup.1020<P/>10211022Returns true if the Complete Intersection property of the associated graded ring of a numerical semigroup ring associated to <M>K[[<A>S</A>]]</M>, and false otherwise.1023This test is the implementation of the algorithm given in1024<Cite Key="DAMSwhen"></Cite>.102510261027<Example><![CDATA[1028gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;1029gap> IsGradedAssociatedRingNumericalSemigroupCI(s);1030false1031gap> s:=NumericalSemigroup(4,6,11);;1032gap> IsGradedAssociatedRingNumericalSemigroupCI(s);1033true1034]]></Example>1035</Description>1036</ManSection>103710381039</Section>104010411042