CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

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

Views: 418346
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
Let <M>S</M> be a numerical semigroup. A set <M>I</M> of integers is an <E>ideal relative</E>
4
to a numerical semigroup <M>S</M> provided that <M>I+S\subseteq I</M> and that there
5
exists <M>d\in S</M> such that <M>d+I\subseteq S</M>.
6
<P/>
7
If <M>\{i_1,\ldots,i_k\}</M> is a subset of <M>{\mathbb Z}</M>, then the set
8
<M>I=\{i_1,\ldots,i_k\}+S=\bigcup_{n=1}^k i_n+S</M> is an ideal relative to <M>S</M>,
9
and <M>\{i_1,\ldots, i_k\}</M> is a system of generators of <M>I</M>. A system of generators
10
<M>M</M> is minimal if no proper subset of <M>M</M> generates the same ideal.
11
Usually, ideals are specified by means of its generators and the ambient numerical
12
semigroup to which they are ideals (for more information see for instance
13
<Cite Key="BDF97"></Cite>).
14
15
<Section>
16
<Heading>
17
Definitions and basic operations
18
</Heading>
19
20
21
<ManSection>
22
<Func Arg="l,S" Name="IdealOfNumericalSemigroup"></Func>
23
<Func Arg="l,S" Name="+" Label="for defining ideal of numerical semigroup"></Func>
24
<Description>
25
<A>S</A> is a numerical semigroup and <A>l</A> a list of integers.
26
The output is the ideal of <A>S</A> generated by <A>l</A>.
27
28
<P/>
29
There are several shortcuts for this function, as shown in the example.
30
<Example><![CDATA[
31
gap> IdealOfNumericalSemigroup([3,5],NumericalSemigroup(9,11));
32
<Ideal of numerical semigroup>
33
gap> [3,5]+NumericalSemigroup(9,11);
34
<Ideal of numerical semigroup>
35
gap> last=last2;
36
true
37
gap> 3+NumericalSemigroup(5,9);
38
<Ideal of numerical semigroup>
39
]]></Example>
40
</Description>
41
</ManSection>
42
43
44
<ManSection>
45
<Func Arg="Obj" Name="IsIdealOfNumericalSemigroup"></Func>
46
<Description>
47
Tests if the object <A>Obj</A> is an ideal of a
48
numerical semigroup.
49
50
<Example><![CDATA[
51
gap> I:=[1..7]+NumericalSemigroup(7,19);;
52
gap> IsIdealOfNumericalSemigroup(I);
53
true
54
gap> IsIdealOfNumericalSemigroup(2);
55
false
56
]]></Example>
57
</Description>
58
</ManSection>
59
60
61
62
<ManSection>
63
<Attr Arg="I" Name="MinimalGenerators" Label="for ideal of numerical semigroup"></Attr>
64
<Attr Arg="I" Name="MinimalGeneratingSystem" Label="for ideal of numerical semigroup"></Attr>
65
<Attr Arg="I" Name="MinimalGeneratingSystemOfIdealOfNumericalSemigroup"></Attr>
66
<Description>
67
<A>I</A> is an ideal of a numerical semigroup.
68
The output is the minimal system of generators of <A>I</A>.
69
70
<Example><![CDATA[
71
gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
72
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);
73
[ 3 ]
74
gap> MinimalGeneratingSystem(I);
75
[ 3 ]
76
gap> MinimalGenerators([3,5]+NumericalSemigroup(2,11));
77
[ 3 ]
78
]]></Example>
79
</Description>
80
</ManSection>
81
82
<ManSection>
83
<Attr Arg="I" Name="Generators" Label="for ideal of numerical semigroup"></Attr>
84
<Attr Arg="I" Name="GeneratorsOfIdealOfNumericalSemigroup"></Attr>
85
<Description>
86
<A>I</A> is an ideal of a numerical semigroup.
87
The output is a system of generators of the ideal.
88
<P/>
89
Remark: from Version 1.0.1 on, this value does not change even when a set of minimal generators is computed.
90
91
92
<Example><![CDATA[
93
gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
94
gap> GeneratorsOfIdealOfNumericalSemigroup(I);
95
[ 3, 5, 9 ]
96
gap> Generators(I);
97
[ 3, 5, 9 ]
98
]]></Example>
99
</Description>
100
</ManSection>
101
102
103
104
<ManSection>
105
<Func Arg="I" Name="AmbientNumericalSemigroupOfIdeal"></Func>
106
<Description>
107
<A>I</A> is an ideal of a numerical semigroup, say <M>S</M>.
108
The output is <M>S</M>.
109
110
<Example><![CDATA[
111
gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
112
gap> AmbientNumericalSemigroupOfIdeal(I);
113
<Numerical semigroup with 2 generators>
114
]]></Example>
115
</Description>
116
</ManSection>
117
118
<ManSection>
119
<Prop Arg="I" Name="IsIntegral"></Prop>
120
<Prop Arg="I" Name="IsIntegralIdealOfNumericalSemigroup"></Prop>
121
<Description>
122
<A>I</A> is an ideal of a numerical semigroup, say <M>S</M>.
123
Detects if <M>I\subseteq S</M>.
124
125
<Example><![CDATA[
126
gap> s:=NumericalSemigroup(3,7,5);;
127
gap> IsIntegralIdealOfNumericalSemigroup(4+s);
128
false
129
gap> IsIntegralIdealOfNumericalSemigroup(10+s);
130
true
131
gap> IsIntegral(10+s);
132
true
133
]]></Example>
134
</Description>
135
</ManSection>
136
137
<ManSection>
138
<Func Arg="I" Name="SmallElements" Label="for ideal of numerical semigroup"></Func>
139
<Func Arg="I" Name="SmallElementsOfIdealOfNumericalSemigroup"></Func>
140
<Description>
141
<A>I</A> is an ideal of a numerical semigroup.
142
The output is a list with the elements in <A>I</A> that are less than or equal
143
to the greatest integer not belonging to the ideal plus one.
144
145
<Example><![CDATA[
146
gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
147
gap> SmallElementsOfIdealOfNumericalSemigroup(I);
148
[ 3, 5, 7, 9, 11, 13 ]
149
gap> SmallElements(I) = SmallElementsOfIdealOfNumericalSemigroup(I);
150
true
151
gap> J:=[2,11]+NumericalSemigroup(2,11);;
152
gap> SmallElementsOfIdealOfNumericalSemigroup(J);
153
[ 2, 4, 6, 8, 10 ]
154
]]></Example>
155
</Description>
156
</ManSection>
157
158
<ManSection>
159
<Attr Name="Conductor" Arg="NS" Label="for ideal of numerical semigroup"/>
160
<Func Arg="I" Name="ConductorOfIdealOfNumericalSemigroup"></Func>
161
<Description>
162
<A>I</A> is an ideal of a numerical semigroup.
163
The output is the largest element in <A>SmallElements(I)</A>.
164
165
<Example><![CDATA[
166
gap> s:=NumericalSemigroup(3,7,5);;
167
gap> ConductorOfIdealOfNumericalSemigroup(10+s);
168
15
169
gap> Conductor(10+s);
170
15
171
]]></Example>
172
</Description>
173
</ManSection>
174
175
<ManSection>
176
<Oper Name="Minimum" Arg="I" Label="minimum of ideal of numerical semigroup"/>
177
<Description>
178
<A>I</A> is an ideal of a numerical semigroup.
179
The output is the minimum of <A>I</A>.
180
181
<Example><![CDATA[
182
gap> J:=[2,11]+NumericalSemigroup(2,11);;
183
gap> Minimum(J);
184
2
185
]]></Example>
186
</Description>
187
</ManSection>
188
189
190
<ManSection>
191
<Func Arg="n, I" Name="BelongsToIdealOfNumericalSemigroup"></Func>
192
<Oper Name="\in" Arg="n, I" Label="membership test in ideal of numerical semigroup"/>
193
<Description>
194
<A>I</A> is an ideal of a numerical semigroup, <A>n</A> is an integer.
195
The output is true if <A>n</A> belongs to <A>I</A>.
196
197
<P/>
198
<A> n in I</A> can be used for short.
199
200
<Example><![CDATA[
201
gap> J:=[2,11]+NumericalSemigroup(2,11);;
202
gap> BelongsToIdealOfNumericalSemigroup(9,J);
203
false
204
gap> 9 in J;
205
false
206
gap> BelongsToIdealOfNumericalSemigroup(10,J);
207
true
208
gap> 10 in J;
209
true
210
]]></Example>
211
</Description>
212
</ManSection>
213
214
215
<ManSection>
216
<Func Arg="I, J" Name="SumIdealsOfNumericalSemigroup"></Func>
217
<Func Arg="I, J" Name="+" Label="for ideals of numerical semigroup"></Func>
218
<Description>
219
<A>I, J</A> are ideals of a numerical semigroup.
220
The output is the sum of both ideals <M>\{ i+j \ |\ i\in <A>I</A>, j\in <A>J</A>\}</M>.
221
222
<Example><![CDATA[
223
gap> I:=[3,5,9]+NumericalSemigroup(2,11);;
224
gap> J:=[2,11]+NumericalSemigroup(2,11);;
225
gap> I+J;
226
<Ideal of numerical semigroup>
227
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
228
[ 5, 14 ]
229
gap> SumIdealsOfNumericalSemigroup(I,J);
230
<Ideal of numerical semigroup>
231
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
232
[ 5, 14 ]
233
]]></Example>
234
</Description>
235
</ManSection>
236
237
<ManSection>
238
<Func Arg="n, I" Name="MultipleOfIdealOfNumericalSemigroup"></Func>
239
<Func Arg="n, I" Name="*" Label="for multiple of ideal of numerical semigroup"></Func>
240
<Description>
241
<A>I</A> is an ideal of a numerical semigroup, <A>n</A> is a non negative integer.
242
The output is the ideal <M><A>I</A>+\cdots+<A>I</A></M> (<A>n</A> times).
243
244
<P/>
245
<A> n * I</A> can be used for short.
246
247
<Example><![CDATA[
248
gap> I:=[0,1]+NumericalSemigroup(3,5,7);;
249
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(2*I);
250
[ 0, 1, 2 ]
251
]]></Example>
252
</Description>
253
</ManSection>
254
255
256
<ManSection>
257
<Func Arg="I, J" Name="SubtractIdealsOfNumericalSemigroup"></Func>
258
<Func Arg="I, J" Name="-" Label="for ideals of numerical semigroup"></Func>
259
<Description>
260
<A>I, J</A> are ideals of a numerical semigroup.
261
The output is the ideal <M>\{ z\in {\mathbb Z}\ |\ z+<A>J</A>\subseteq <A>I</A>\}</M>.
262
263
<P/>
264
<M>I - J</M> is a synonym of <C>SubtractIdealsOfNumericalSemigroup</C>.
265
266
<P/>
267
<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>.
268
269
The following example appears in <Cite Key="HS04"></Cite>.
270
<Example><![CDATA[
271
gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;
272
gap> I:=[0,1]+S;;
273
gap> II:=S-I;;
274
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I);
275
[ 0, 1 ]
276
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(II);
277
[ 14, 20 ]
278
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(I+II);
279
[ 14, 15, 20, 21 ]
280
]]></Example>
281
</Description>
282
</ManSection>
283
284
285
286
<ManSection>
287
<Oper Name="Difference" Arg="I, J" Label="for ideals of numerical semigroups"/>
288
<Func Arg="I, J" Name="DifferenceOfIdealsOfNumericalSemigroup"></Func>
289
<Description>
290
<A>I, J</A> are ideals of a numerical semigroup. <A>J</A> must be contained in <A>I</A>.
291
The output is the set <M><A>I</A>\setminus <A>J</A></M>.
292
293
<Example><![CDATA[
294
gap> S:=NumericalSemigroup(14, 15, 20, 21, 25);;
295
gap> I:=[0,1]+S;
296
<Ideal of numerical semigroup>
297
gap> 2*I-2*I;
298
<Ideal of numerical semigroup>
299
gap> I-I;
300
<Ideal of numerical semigroup>
301
gap> ii := 2*I-2*I;
302
<Ideal of numerical semigroup>
303
gap> i := I-I;
304
<Ideal of numerical semigroup>
305
gap> DifferenceOfIdealsOfNumericalSemigroup(last2,last);
306
[ 26, 27, 37, 38 ]
307
gap> Difference(ii,i);
308
[ 26, 27, 37, 38 ]
309
gap> Difference(i,ii);
310
[ ]
311
]]></Example>
312
</Description>
313
</ManSection>
314
315
316
<ManSection>
317
<Func Arg="k, I" Name="TranslationOfIdealOfNumericalSemigroup"></Func>
318
<Func Arg="k, I" Name="+" Label="translation of ideal of numerical semigroup"></Func>
319
<Description>
320
Given an ideal <A>I</A> of a numerical semigroup S and an integer <A>k</A>
321
returns an ideal of the numerical semigroup S generated by
322
<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>.
323
<P/>
324
As a synonym to <C>TranslationOfIdealOfNumericalSemigroup(k, I)</C> the expression
325
<C>k + I</C> may be used.
326
327
<Example><![CDATA[
328
gap> s:=NumericalSemigroup(13,23);;
329
gap> l:=List([1..6], _ -> Random([8..34]));
330
[ 22, 29, 34, 25, 10, 12 ]
331
gap> I:=IdealOfNumericalSemigroup(l, s);;
332
gap> It:=TranslationOfIdealOfNumericalSemigroup(7,I);
333
<Ideal of numerical semigroup>
334
gap> It2:=7+I;
335
<Ideal of numerical semigroup>
336
gap> It2=It;
337
true
338
]]></Example>
339
</Description>
340
</ManSection>
341
342
<ManSection>
343
<Oper Name="Intersection" Arg="I, J" Label="for ideals of numerical semigroups"/>
344
<Func Arg="I, J" Name="IntersectionIdealsOfNumericalSemigroup"></Func>
345
<Description>
346
Given two ideals <A>I</A> and <A>J</A> of a numerical semigroup <A>S</A>
347
returns the ideal of the numerical semigroup <A>S</A> which is the
348
intersection of the ideals <A>I</A> and <A>J</A>.
349
350
<Example><![CDATA[
351
gap> i:=IdealOfNumericalSemigroup([75,89],s);;
352
gap> j:=IdealOfNumericalSemigroup([115,289],s);;
353
gap> IntersectionIdealsOfNumericalSemigroup(i,j);
354
<Ideal of numerical semigroup>
355
]]></Example>
356
</Description>
357
</ManSection>
358
359
360
<ManSection>
361
<Func Arg="S" Name="MaximalIdealOfNumericalSemigroup"></Func>
362
<Description>
363
Returns the maximal ideal of the numerical semigroup <A>S</A>.
364
365
<Example><![CDATA[
366
gap> MaximalIdealOfNumericalSemigroup(NumericalSemigroup(3,7));
367
<Ideal of numerical semigroup>
368
]]></Example>
369
</Description>
370
</ManSection>
371
372
373
<ManSection>
374
<Func Arg="S" Name="CanonicalIdealOfNumericalSemigroup"></Func>
375
<Description>
376
<A>S</A> is a numerical semigroup.
377
Computes a canonical ideal of <A>S</A> (<Cite Key="BF06"></Cite>):
378
<M>\{ x \in \mathbb{Z} | g-x \not \in S\} </M>.
379
380
<Example><![CDATA[
381
gap> s:=NumericalSemigroup(4,6,11);;
382
gap> m:=MaximalIdealOfNumericalSemigroup(s);;
383
gap> c:=CanonicalIdealOfNumericalSemigroup(s);
384
<Ideal of numerical semigroup>
385
gap> c-(c-m)=m;
386
true
387
gap> id:=3+s;
388
<Ideal of numerical semigroup>
389
gap> c-(c-id)=id;
390
true
391
]]></Example>
392
</Description>
393
</ManSection>
394
395
<ManSection>
396
<Prop Arg="E" Name="IsCanonicalIdeal"></Prop>
397
<Prop Arg="E" Name="IsCanonicalIdealOfNumericalSemigroup"></Prop>
398
<Description>
399
<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>.
400
401
<Example><![CDATA[
402
gap> s:=NumericalSemigroup(3,5,7);;
403
gap> c:=3+CanonicalIdealOfNumericalSemigroup(s);;
404
gap> c-(c-(3+s))=3+s;
405
true
406
gap> IsCanonicalIdealOfNumericalSemigroup(c);
407
true
408
]]></Example>
409
</Description>
410
</ManSection>
411
412
<ManSection>
413
<Func Arg="S" Name="TypeSequenceOfNumericalSemigroup"></Func>
414
<Description>
415
416
<A>S</A> is a numerical semigroup.
417
<P/>
418
419
Computes 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>.
420
<P/>
421
This function is the implementation of the algorithm given in
422
<Cite Key="BDF97"></Cite>.
423
424
425
<Example><![CDATA[
426
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
427
gap> TypeSequenceOfNumericalSemigroup(s);
428
[ 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,
429
1, 1, 2, 2, 1, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
430
1, 1, 1 ]
431
gap> s:=NumericalSemigroup(4,6,11);;
432
gap> TypeSequenceOfNumericalSemigroup(s);
433
[ 1, 1, 1, 1, 1, 1, 1 ]
434
]]></Example>
435
</Description>
436
</ManSection>
437
438
</Section>
439
440
<Section>
441
<Heading>
442
Blow ups and closures
443
</Heading>
444
445
<ManSection>
446
<Func Arg="n, I" Name="HilbertFunctionOfIdealOfNumericalSemigroup"></Func>
447
<Description>
448
<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.
449
The output is the cardinality of the set <M><A>n</A><A>I</A>\setminus (<A>n</A>+1)<A>I</A></M>.
450
451
<Example><![CDATA[
452
gap> I:=[6,9,11]+NumericalSemigroup(6,9,11);;
453
gap> List([1..7],n->HilbertFunctionOfIdealOfNumericalSemigroup(n,I));
454
[ 3, 5, 6, 6, 6, 6, 6 ]
455
]]></Example>
456
</Description>
457
</ManSection>
458
459
<ManSection>
460
<Func Arg="I" Name="BlowUpIdealOfNumericalSemigroup"></Func>
461
<Description>
462
<A>I</A> is an ideal of a numerical semigroup.
463
The output is the ideal <M>\bigcup_{n\geq 0} n<A>I</A>-n<A>I</A></M>.
464
465
<Example><![CDATA[
466
gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
467
gap> BlowUpIdealOfNumericalSemigroup(I);;
468
gap> SmallElementsOfIdealOfNumericalSemigroup(last);
469
[ 0, 2, 4, 6, 8 ]
470
]]></Example>
471
</Description>
472
</ManSection>
473
474
475
476
<ManSection>
477
<Attr Arg="I" Name="ReductionNumber" Label="for ideals of numerical semigroups"></Attr>
478
<Attr Arg="I" Name="ReductionNumberIdealNumericalSemigroup"></Attr>
479
<Description>
480
<A>I</A> is an ideal of a numerical semigroup.
481
The output is the least integer
482
such that <M>n <A>I</A> + i=(n+1)<A>I</A></M>, where <M>i=min(<A>I</A>)</M>.
483
484
<Example><![CDATA[
485
gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
486
gap> ReductionNumberIdealNumericalSemigroup(I);
487
2
488
]]></Example>
489
</Description>
490
</ManSection>
491
492
493
494
495
496
<ManSection>
497
<Func Arg="S" Name="BlowUpOfNumericalSemigroup"></Func>
498
<Description>
499
<A>S</A> is a numerical semigroup.
500
If <A>M</A> is the maximal ideal of the numerical semigroup, then
501
the output is the numerical semigroup
502
<M>\bigcup_{n\geq 0} n<A>M</A>-n<A>M</A></M>.
503
504
505
<Example><![CDATA[
506
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
507
gap> BlowUpOfNumericalSemigroup(s);
508
<Numerical semigroup with 10 generators>
509
gap> SmallElementsOfNumericalSemigroup(last);
510
[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,
511
40, 41, 42, 44 ]
512
gap> m:=MaximalIdealOfNumericalSemigroup(s);
513
<Ideal of numerical semigroup>
514
gap> BlowUpIdealOfNumericalSemigroup(m);
515
<Ideal of numerical semigroup>
516
gap> SmallElementsOfIdealOfNumericalSemigroup(last);
517
[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,
518
40, 41, 42, 44 ]
519
]]></Example>
520
</Description>
521
</ManSection>
522
<ManSection>
523
<Func Name="LipmanSemigroup" Arg="S"></Func>
524
<Description>
525
This is just a synonym of <Ref Func="BlowUpOfNumericalSemigroup"/>.
526
<Example><![CDATA[
527
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
528
gap> LipmanSemigroup(s);
529
<Numerical semigroup with 10 generators>
530
gap> SmallElementsOfNumericalSemigroup(last);
531
[ 0, 5, 10, 12, 15, 17, 20, 22, 24, 25, 27, 29, 30, 32, 34, 35, 36, 37, 39,
532
40, 41, 42, 44 ]
533
]]></Example>
534
535
</Description>
536
</ManSection>
537
538
539
<ManSection>
540
<Func Arg="I" Name="RatliffRushNumberOfIdealOfNumericalSemigroup"></Func>
541
<Description>
542
<A>I</A> is an ideal of a numerical semigroup.
543
The output is the least integer
544
such that <M>(n+1)<A>I</A>-n<A>I</A></M> is the Ratliff-Rush closure of <A>I</A>.
545
546
<Example><![CDATA[
547
gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
548
gap> RatliffRushNumberOfIdealOfNumericalSemigroup(I);
549
1
550
]]></Example>
551
</Description>
552
</ManSection>
553
554
555
<ManSection>
556
<Func Arg="I" Name="RatliffRushClosureOfIdealOfNumericalSemigroup"></Func>
557
<Description>
558
<A>I</A> is an ideal of a numerical semigroup.
559
The 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>).
560
561
<Example><![CDATA[
562
gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
563
gap> RatliffRushClosureOfIdealOfNumericalSemigroup(I);
564
<Ideal of numerical semigroup>
565
gap> MinimalGenerators(last);
566
[ 0, 2, 4 ]
567
]]></Example>
568
</Description>
569
</ManSection>
570
571
<ManSection>
572
<Func Arg="I" Name="AsymptoticRatliffRushNumberOfIdealOfNumericalSemigroup"></Func>
573
<Description>
574
<A>I</A> is an ideal of a numerical semigroup.
575
The 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>).
576
577
<Example><![CDATA[
578
gap> I:=[0,2]+NumericalSemigroup(6,9,11);;
579
gap> AsymptoticRatliffRushNumberOfIdealOfNumericalSemigroup(I);
580
2
581
]]></Example>
582
</Description>
583
</ManSection>
584
585
586
<ManSection>
587
<Func Name="MultiplicitySequenceOfNumericalSemigroup" Arg="S"/>
588
<Description>
589
<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"/>.
590
<Example><![CDATA[
591
gap> s:=NumericalSemigroup(3,5);
592
<Numerical semigroup with 2 generators>
593
gap> MultiplicitySequenceOfNumericalSemigroup(s);
594
[ 3, 2, 1 ]
595
]]></Example>
596
</Description>
597
</ManSection>
598
599
600
<ManSection>
601
<Func Arg="S" Name="MicroInvariantsOfNumericalSemigroup"></Func>
602
<Description>
603
Returns the microinvariants of the numerical semigroup <A>S</A> defined
604
in <Cite Key="E01"></Cite>. For their computation we have used the formula
605
given in <Cite Key="BF06"></Cite>. The Apéry set of <A>S</A> and its
606
blow up are involved in this computation.
607
608
<Example><![CDATA[
609
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
610
gap> bu:=BlowUpOfNumericalSemigroup(s);;
611
gap> ap:=AperyListOfNumericalSemigroupWRTElement(s,30);;
612
gap> apbu:=AperyListOfNumericalSemigroupWRTElement(bu,30);;
613
gap> (ap-apbu)/30;
614
[ 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,
615
5, 4, 3, 3, 2 ]
616
gap> MicroInvariantsOfNumericalSemigroup(s)=last;
617
true
618
]]></Example>
619
</Description>
620
</ManSection>
621
622
623
624
625
<Heading>
626
Apéry sets of ideals of numerical semigroups
627
</Heading>
628
629
630
<ManSection>
631
<Func Arg="I,n" Name="AperyListOfIdealOfNumericalSemigroupWRTElement"></Func>
632
<Description>
633
<A>I</A> is an ideal and <A>n</A> is an integer.
634
Computes 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>,
635
where <A>n</A> is supposed to be in the ambient semigroup of <A>I</A>.
636
The 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>.
637
638
<Example><![CDATA[
639
gap> s:=NumericalSemigroup(10,11,13);;
640
gap> i:=[12,14]+s;;
641
gap> AperyListOfIdealOfNumericalSemigroupWRTElement(i,10);
642
[ 40, 51, 12, 23, 14, 25, 36, 27, 38, 49 ]
643
]]></Example>
644
</Description>
645
</ManSection>
646
647
648
<ManSection>
649
<Func Arg="s" Name="AperyTableOfNumericalSemigroup"></Func>
650
<Description>
651
652
Computes the Apéry table associated to the numerical semigroup <A>s</A> as explained in <Cite Key="CJZ"></Cite>,
653
that 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>
654
(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>,
655
where <M>r</M> is the reduction number of <M>M</M> (see <Ref Func="ReductionNumberIdealNumericalSemigroup"/>).
656
657
<Example><![CDATA[
658
gap> s:=NumericalSemigroup(10,11,13);;
659
gap> AperyTableOfNumericalSemigroup(s);
660
[ [ 0, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],
661
[ 10, 11, 22, 13, 24, 35, 26, 37, 48, 39 ],
662
[ 20, 21, 22, 23, 24, 35, 26, 37, 48, 39 ],
663
[ 30, 31, 32, 33, 34, 35, 36, 37, 48, 39 ],
664
[ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ] ]
665
]]></Example>
666
</Description>
667
</ManSection>
668
669
<ManSection>
670
<Func Arg="i, is" Name="StarClosureOfIdealOfNumericalSemigroup"></Func>
671
<Description>
672
673
<A>i</A> is an ideal and <A>is</A> is a set of ideals (all from the same numerical semigroup<M>s</M>).
674
The 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>.
675
The implementation uses Section 3 of <Cite Key="MR3354072"></Cite>.
676
677
<Example><![CDATA[
678
gap> s:=NumericalSemigroup(3,5,7);;
679
gap> StarClosureOfIdealOfNumericalSemigroup([0,2]+s,[[0,4]+s]);;
680
gap> MinimalGeneratingSystemOfIdealOfNumericalSemigroup(last);
681
[ 0, 2, 4 ]
682
]]></Example>
683
</Description>
684
</ManSection>
685
686
687
</Section>
688
689
690
<Section Label="sec:PatternsIdeals">
691
<Heading>
692
Patterns for ideals
693
</Heading>
694
695
In 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>.
696
697
698
<ManSection>
699
<Func Arg="p" Name="IsAdmissiblePattern"></Func>
700
<Description>
701
702
<A>p</A> is the list of integers that are the coefficients of a pattern. <P/>
703
704
Returns true or false depending if the pattern is admissible or not (see <Cite Key="BA-GS"></Cite>).
705
706
<Example><![CDATA[
707
gap> IsAdmissiblePattern([1,1,-1]);
708
true
709
gap> IsAdmissiblePattern([1,-2]);
710
false
711
]]></Example>
712
</Description>
713
</ManSection>
714
715
716
<ManSection>
717
<Func Arg="p" Name="IsStronglyAdmissiblePattern"></Func>
718
<Description>
719
720
<A>p</A> is the list of integers that are the coefficients of a pattern. <P/>
721
722
Returns true or false depending if the pattern is strongly admissible or not (see <Cite Key="BA-GS"></Cite>).
723
724
<Example><![CDATA[
725
gap> IsAdmissiblePattern([1,-1]);
726
true
727
gap> IsStronglyAdmissiblePattern([1,-1]);
728
false
729
gap> IsStronglyAdmissiblePattern([1,1,-1]);
730
true
731
]]></Example>
732
</Description>
733
</ManSection>
734
735
736
<ManSection>
737
<Func Arg="I,T" Name="AsIdealOfNumericalSemigroup"></Func>
738
<Description>
739
740
<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>.
741
742
<Example><![CDATA[
743
gap> s:=NumericalSemigroup(3,7,5);;
744
gap> t:=NumericalSemigroup(10,11,14);;
745
gap> AsIdealOfNumericalSemigroup(10+s,t);
746
fail
747
gap> AsIdealOfNumericalSemigroup(100+s,t);
748
<Ideal of numerical semigroup>
749
]]></Example>
750
</Description>
751
</ManSection>
752
753
<ManSection>
754
<Func Arg="p,C" Name="BoundForConductorOfImageOfPattern"></Func>
755
<Description>
756
757
<A>p</A> is the list of integers that are the coefficients of an admissible pattern. <A>C</A> is a positive integer.
758
759
Calculates 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 a
760
numerical 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>.
761
<Example><![CDATA[
762
gap> BoundForConductorOfImageOfPattern([1,1,-1],10);
763
10
764
]]></Example>
765
</Description>
766
</ManSection>
767
768
769
<ManSection>
770
<Func Arg="p,I" Name="ApplyPatternToIdeal"></Func>
771
<Description>
772
773
<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/>
774
775
Calculates <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>.
776
777
778
<Example><![CDATA[
779
gap> s:=NumericalSemigroup(3,7,5);;
780
gap> i:=10+s;;
781
gap> ApplyPatternToIdeal([1,1,-1],i);
782
[ 1, <Ideal of numerical semigroup> ]
783
]]></Example>
784
</Description>
785
</ManSection>
786
787
788
<ManSection>
789
<Func Arg="p,S" Name="ApplyPatternToNumericalSemigroup"></Func>
790
<Description>
791
792
<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/>
793
794
Outputs <C>ApplyPatternToIdeal(p,0+S)</C>.
795
796
<Example><![CDATA[
797
gap> s:=NumericalSemigroup(3,7,5);;
798
gap> ApplyPatternToNumericalSemigroup([1,1,-1],s);
799
[ 1, <Ideal of numerical semigroup> ]
800
gap> SmallElements(last[2]);
801
[ 0, 3, 5 ]
802
]]></Example>
803
</Description>
804
</ManSection>
805
806
<ManSection>
807
<Func Arg="p,I,J" Name="IsAdmittedPatternByIdeal"></Func>
808
<Description>
809
810
<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/>
811
812
813
Tests whether or not <M>p(I)</M> is contained in <A>J</A>.
814
815
<Example><![CDATA[
816
gap> s:=NumericalSemigroup(3,7,5);;
817
gap> i:=[3,5]+s;;
818
gap> IsAdmittedPatternByIdeal([1,1,-1],i,i);
819
false
820
gap> IsAdmittedPatternByIdeal([1,1,-1],i,0+s);
821
true
822
]]></Example>
823
</Description>
824
</ManSection>
825
826
<ManSection>
827
<Func Arg="p,S,T" Name="IsAdmittedPatternByNumericalSemigroup"></Func>
828
<Description>
829
830
<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/>
831
832
833
Tests whether or not <M>p(S)</M> is contained in <A>T</A>.
834
835
<Example><![CDATA[
836
gap> IsAdmittedPatternByNumericalSemigroup([1,1,-1],s,s);
837
true
838
gap> IsArfNumericalSemigroup(s);
839
true
840
]]></Example>
841
</Description>
842
</ManSection>
843
844
845
846
</Section>
847
848
<Section>
849
<Heading>Graded associated ring of numerical semigroup</Heading>
850
851
This 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).
852
853
<ManSection>
854
<Prop Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupCM"></Prop>
855
<Description>
856
<A>S</A> is a numerical semigroup.
857
Returns true if the graded ring associated to <M>K[[<A>S</A>]]</M>
858
is Cohen-Macaulay, and false otherwise.
859
This test is the implementation of the algorithm given in
860
<Cite Key="BF06"></Cite>.
861
862
<Example><![CDATA[
863
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
864
gap> IsGradedAssociatedRingNumericalSemigroupCM(s);
865
false
866
gap> MicroInvariantsOfNumericalSemigroup(s);
867
[ 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,
868
5, 4, 3, 3, 2 ]
869
gap> List(AperyListOfNumericalSemigroupWRTElement(s,30),
870
> w->MaximumDegreeOfElementWRTNumericalSemigroup (w,s));
871
[ 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,
872
5, 4, 3, 1, 2 ]
873
gap> last=last2;
874
false
875
gap> s:=NumericalSemigroup(4,6,11);;
876
gap> IsGradedAssociatedRingNumericalSemigroupCM(s);
877
true
878
gap> MicroInvariantsOfNumericalSemigroup(s);
879
[ 0, 2, 1, 1 ]
880
gap> List(AperyListOfNumericalSemigroupWRTElement(s,4),
881
> w->MaximumDegreeOfElementWRTNumericalSemigroup(w,s));
882
[ 0, 2, 1, 1 ]
883
]]></Example>
884
</Description>
885
</ManSection>
886
887
<ManSection>
888
<Prop Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupBuchsbaum"></Prop>
889
<Description>
890
891
<A>S</A> is a numerical semigroup.
892
<P/>
893
894
Returns true if the graded ring associated to <M>K[\![<A>S</A>]\!]</M>
895
is Buchsbaum, and false otherwise.
896
This test is the implementation of the algorithm given in <Cite Key="DA-M-M"></Cite>.
897
898
899
<Example><![CDATA[
900
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
901
gap> IsGradedAssociatedRingNumericalSemigroupBuchsbaum(s);
902
true
903
]]></Example>
904
</Description>
905
</ManSection>
906
907
908
<ManSection>
909
<Func Arg="S" Name="TorsionOfAssociatedGradedRingNumericalSemigroup"></Func>
910
<Description>
911
912
<A>S</A> is a numerical semigroup.
913
<P/>
914
915
This 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>.
916
917
<Example><![CDATA[
918
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
919
gap> TorsionOfAssociatedGradedRingNumericalSemigroup(s);
920
[ 181, 153, 157, 193, 169, 148 ]
921
]]></Example>
922
</Description>
923
</ManSection>
924
925
<ManSection>
926
<Func Arg="S" Name="BuchsbaumNumberOfAssociatedGradedRingNumericalSemigroup"></Func>
927
<Description>
928
929
<A>S</A> is a numerical semigroup.
930
<P/>
931
932
This 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>.
933
934
<Example><![CDATA[
935
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
936
gap> BuchsbaumNumberOfAssociatedGradedRingNumericalSemigroup(s);
937
1
938
gap> IsGradedAssociatedRingNumericalSemigroupBuchsbaum(s);
939
true
940
]]></Example>
941
</Description>
942
</ManSection>
943
944
<ManSection>
945
<Prop Arg="S" Name="IsMpure"></Prop>
946
<Prop Arg="S" Name="IsMpureNumericalSemigroup"></Prop>
947
<Description>
948
949
<A>S</A> is a numerical semigroup.
950
<P/>
951
952
Test for the M-Purity of the numerical semigroup S <A>S</A>.
953
This test is based on
954
<Cite Key="Br"></Cite>.
955
956
<Example><![CDATA[
957
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
958
gap> IsMpureNumericalSemigroup(s);
959
false
960
gap> s:=NumericalSemigroup(4,6,11);;
961
gap> IsMpureNumericalSemigroup(s);
962
true
963
]]></Example>
964
</Description>
965
</ManSection>
966
967
<ManSection>
968
<Prop Arg="S" Name="IsPure"></Prop>
969
<Prop Arg="S" Name="IsPureNumericalSemigroup"></Prop>
970
<Description>
971
972
<A>S</A> is a numerical semigroup.
973
<P/>
974
975
Test for the purity of the numerical semigroup S <A>S</A>.
976
This test is based on
977
<Cite Key="Br"></Cite>.
978
979
<Example><![CDATA[
980
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
981
gap> IsPureNumericalSemigroup(s);
982
false
983
gap> s:=NumericalSemigroup(4,6,11);;
984
gap> IsPureNumericalSemigroup(s);
985
true
986
]]></Example>
987
</Description>
988
</ManSection>
989
990
<ManSection>
991
<Func Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupGorenstein"></Func>
992
<Description>
993
994
<A>S</A> is a numerical semigroup.
995
<P/>
996
997
Returns true if the graded ring associated to <M>K[[<A>S</A>]]</M>
998
is Gorenstein, and false otherwise.
999
This test is the implementation of the algorithm given in
1000
<Cite Key="DA-M-S"></Cite>.
1001
1002
1003
<Example><![CDATA[
1004
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
1005
gap> IsGradedAssociatedRingNumericalSemigroupGorenstein(s);
1006
false
1007
gap> s:=NumericalSemigroup(4,6,11);;
1008
gap> IsGradedAssociatedRingNumericalSemigroupGorenstein(s);
1009
true
1010
]]></Example>
1011
</Description>
1012
</ManSection>
1013
1014
1015
<!--the functions below first appeared in version 0.98-->
1016
<ManSection>
1017
<Func Arg="S" Name="IsGradedAssociatedRingNumericalSemigroupCI"></Func>
1018
<Description>
1019
1020
<A>S</A> is a numerical semigroup.
1021
<P/>
1022
1023
Returns 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.
1024
This test is the implementation of the algorithm given in
1025
<Cite Key="DAMSwhen"></Cite>.
1026
1027
1028
<Example><![CDATA[
1029
gap> s:=NumericalSemigroup(30, 35, 42, 47, 148, 153, 157, 169, 181, 193);;
1030
gap> IsGradedAssociatedRingNumericalSemigroupCI(s);
1031
false
1032
gap> s:=NumericalSemigroup(4,6,11);;
1033
gap> IsGradedAssociatedRingNumericalSemigroupCI(s);
1034
true
1035
]]></Example>
1036
</Description>
1037
</ManSection>
1038
1039
1040
</Section>
1041
1042