Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

563661 views
1
2
11 Affine semigroups
3
4
5
11.1 Defining affine semigroups
6
7
An affine semigroup S is a finitely generated cancellative monoid that is
8
reduced (no units other than 0) and is torsion-free (a s= b s implies a=b,
9
with a,b∈ N and s∈ S). Up to isomorphisms any affine semigroup can be viewed
10
as a finitely generated submonoid of N^k for some positive integer k. Thus
11
affine semigroups are a natural generalization of numerical semigroups. The
12
most common way to give an affine semigroup is by any of its systems of
13
generators. As for numerical semigroups, any affine semigroup admits a
14
unique minimal system of generators. A system of generators can be
15
represented as a list of lists of nonnegative integers; all lists in the
16
list having the same length (a matrix actually). If G is a subgroup of Z^k,
17
then S=G∩ N^k is an affine semigroup (these semigroups are called full
18
affine semigroups). As G can be represented by its defining equations
19
(homogeneous and some of them possibly in congruences), we can represent S
20
by the defining equations of G; indeed S is just the set of nonnegative
21
solutions of this system of equations. We can represent the equations as a
22
list of lists of integers, all with the same length. Every list is a row of
23
the matrix of coefficients of the system of equations. For the equations in
24
congruences, if we arrange them so that they are the first ones in the list,
25
we provide the corresponding moduli in a list. So for instance, the
26
equations x+y≡ 0mod 2, x-2y=0 will be represented as [[1,1],[1,-2]] and the
27
moduli [2].
28
29
As happens with numerical semigroups, there are different ways to specify an
30
affine semigroup S, namely, by means of a system of generators, a system of
31
homogeneous linear Diophantine equations or a system of homogeneous linear
32
Diophantine inequalities, just to mention some. In this section we describe
33
functions that may be used to specify, in one of these ways, an affine
34
semigroup in GAP.
35
36
11.1-1 AffineSemigroupByGenerators
37
38
AffineSemigroupByGenerators( List )  function
39
AffineSemigroup( String, List )  function
40
41
List is a list of n-tuples of nonnegative integers, if the semigroup to be
42
created is n-dimensional. The n-tuples may be given as a list or by a
43
sequence of individual elements. The output is the affine semigroup spanned
44
by List.
45
46
String does not need to be present. When it is present, it must be
47
"generators" and List must be a list, not a sequence of individual elements.
48
49
 Example 
50
gap> s1 := AffineSemigroupByGenerators([1,3],[7,2],[1,5]);
51
<Affine semigroup in 2 dimensional space, with 3 generators>
52
gap> s2 := AffineSemigroupByGenerators([[1,3],[7,2],[1,5]]);;
53
gap> s3 := AffineSemigroup("generators",[[1,3],[7,2],[1,5]]);;
54
gap> s4 := AffineSemigroup([1,3],[7,2],[1,5]);;
55
gap> s5 := AffineSemigroup([[1,3],[7,2],[1,5]]);;
56
gap> Length(Set([s1,s2,s3,s4,s5]));
57
1
58

59
60
11.1-2 AffineSemigroupByEquations
61
62
AffineSemigroupByEquations( List )  function
63
AffineSemigroup( String, List )  function
64
65
List is a list with two components. The first represents a matrix with
66
integer coefficients, say A=(a_ij), and so it is a list of lists of integers
67
all with the same length. The second component is a list of positive
68
integers, say d=(d_i), which may be empty. The list d must be of length less
69
than or equal to the length of A (number of rows of A).
70
71
The output is the full semigroup of nonnegative integer solutions to the
72
system of homogeneous equations
73
a_11x_1+⋯+a_1nx_n≡ 0mod d_1,
74
⋯
75
a_k1x_1+⋯+a_knx_n≡ 0mod d_k,
76
a_k+1 1x_1+⋯ +a_k+1 n=0,
77
⋯
78
a_m1x_1+⋯+a_mnx_n=0.
79
80
If d is empty, then there will be no equations in congruences.
81
82
As pointed at the beginning of the section, the equations x+y≡ 0mod 2,
83
x-2y=0 will be represented as A equal to [[1,1],[1,-2]] and the moduli d
84
equal to [2].
85
86
In the second form, String must be "equations".
87
88
 Example 
89
gap> s1 := AffineSemigroupByEquations([[[-2,1]],[3]]);
90
<Affine semigroup>
91
gap> s2 := AffineSemigroup("equations",[[[1,1]],[3]]);
92
<Affine semigroup>
93
gap> s1=s2;
94
true
95

96
97
11.1-3 AffineSemigroupByInequalities
98
99
AffineSemigroupByInequalities( List )  function
100
AffineSemigroup( String, List )  function
101
102
List is a list of lists (a matrix) of integers that represents a set of
103
inequalities.
104
105
Returns the (normal) affine semigroup of nonegative integer solutions of the
106
system of inequalities List× Xge 0.
107
108
In the second form, String must be "inequalities".
109
110
 Example 
111
gap> a1:=AffineSemigroupByInequalities([[2,-1],[-1,3]]);
112
<Affine semigroup>
113
gap> a2:=AffineSemigroup("inequalities",[[2,-1],[-1,3]]);
114
<Affine semigroup>
115
gap> a1=a2;
116
true
117

118
119
11.1-4 Generators
120
121
Generators( S )  function
122
GeneratorsOfAffineSemigroup( S )  function
123
124
S is an affine semigroup, the output is a system of generators.
125
126
 Example 
127
gap> a:=AffineSemigroup([[1,0],[0,1],[1,1]]);
128
<Affine semigroup in 2 dimensional space, with 3 generators>
129
gap> Generators(a);
130
[ [ 0, 1 ], [ 1, 0 ], [ 1, 1 ] ]
131

132
133
11.1-5 MinimalGenerators
134
135
MinimalGenerators( S )  function
136
MinimalGeneratingSystem( S )  function
137
138
S is an affine semigroup, the output is its system of minimal generators.
139
140
 Example 
141
gap> a:=AffineSemigroup([[1,0],[0,1],[1,1]]);
142
<Affine semigroup in 2 dimensional space, with 3 generators>
143
 gap> MinimalGenerators(a);
144
 [ [ 0, 1 ], [ 1, 0 ] ]
145
 
146

147
148
11.1-6 AsAffineSemigroup
149
150
AsAffineSemigroup( S )  function
151
152
S is a numerical semigroup, the output is S regarded as an affine semigroup.
153
154
 Example 
155
gap> s:=NumericalSemigroup(1310,1411,1546,1601);
156
<Numerical semigroup with 4 generators>
157
gap> MinimalPresentationOfNumericalSemigroup(s);;time;
158
2960
159
gap> a:=AsAffineSemigroup(s);
160
<Affine semigroup in 1 dimensional space, with 4 generators>
161
gap> GeneratorsOfAffineSemigroup(a);
162
[ [ 1310 ], [ 1411 ], [ 1546 ], [ 1601 ] ]
163
gap> MinimalPresentationOfAffineSemigroup(a);;time;
164
237972
165

166
167
If we use the package SingularInterface, the speed up is considerable.
168
169
 Example 
170
gap> NumSgpsUseSingularInterface();
171
...
172
gap> MinimalPresentationOfAffineSemigroup(a);;time;
173
32
174

175
176
11.1-7 IsAffineSemigroup
177
178
IsAffineSemigroup( AS )  attribute
179
IsAffineSemigroupByGenerators( AS )  attribute
180
IsAffineSemigroupByEquations( AS )  attribute
181
IsAffineSemigroupByInequalities( AS )  attribute
182
183
AS is an affine semigroup and these attributes are available (their names
184
should be self explanatory). They reflect what is currently known about the
185
semigroup.
186
187
 Example 
188
gap> a1:=AffineSemigroup([[3,0],[2,1],[1,2],[0,3]]);
189
<Affine semigroup in 2 dimensional space, with 4 generators>
190
gap> IsAffineSemigroupByEquations(a1);
191
false
192
gap> IsAffineSemigroupByGenerators(a1);
193
true
194

195
196
11.1-8 BelongsToAffineSemigroup
197
198
BelongsToAffineSemigroup( v, a )  function
199
\in( v, a )  operation
200
201
v is a list of nonnegative integers and a an affine semigroup. Returns true
202
if the vector is in the semigroup, and false otherwise.
203
204
If the semigroup is full and its equations are known (either because the
205
semigroup was defined by equations, or because the user has called
206
IsFullAffineSemgiroup(a) and the output was true), then membership is
207
performed by evaluating v in the equations. The same holds for normal
208
semigroups and its defining inequalities.
209
210
 v in a can be used for short.
211
212
 Example 
213
gap> a:=AffineSemigroup([[2,0],[0,2],[1,1]]);;
214
gap> BelongsToAffineSemigroup([5,5],a);
215
true
216
gap> BelongsToAffineSemigroup([1,2],a);
217
false
218
gap> [5,5] in a;
219
true
220
gap> [1,2] in a;
221
false
222

223
224
11.1-9 IsFull
225
226
IsFull( S )  property
227
IsFullAffineSemigroup( S )  property
228
229
s is an affine semigroup.
230
231
Returns true if the semigroup is full, false otherwise. The semigroup is
232
full if whenever a,b∈ S and b-a∈ N^k, then a-b∈ S, where k is the dimension
233
of S.
234
235
If the semigroup is full, then its equations are stored in the semigroup for
236
further use.
237
238
 Example 
239
gap> a:=AffineSemigroup("equations",[[[1,1,1],[0,0,2]],[2,2]]);;
240
gap> IsFullAffineSemigroup(a);
241
true
242

243
244
11.1-10 HilbertBasisOfSystemOfHomogeneousEquations
245
246
HilbertBasisOfSystemOfHomogeneousEquations( ls, m )  operation
247
248
ls is a list of lists of integers and m a list of integers. The elements of
249
ls represent the rows of a matrix A. The output is a minimal generating
250
system (Hilbert basis) of the set of nonnegative integer solutions of the
251
system Ax=0 where the k first equations are in the congruences modulo m[i],
252
with k the length of m.
253
254
If the package NormalizInterface has not been loaded, then Contejean-Devie
255
algorithm is used [CD94] instead (if this is the case, congruences are
256
treated as in [RGS98]).
257
258
 Example 
259
gap> HilbertBasisOfSystemOfHomogeneousEquations([[1,0,1],[0,1,-1]],[2]);
260
[ [ 0, 2, 2 ], [ 1, 1, 1 ], [ 2, 0, 0 ] ]
261

262
263
If C is a pointed cone (a cone in Q^k not containing lines and 0∈ C), then
264
S=C∩ N^k is an affine semigroup (known as normal affine semigroup). So
265
another way to give an affine semigroup is by a set of homogeneous
266
inequalities, and we can represent these inequalities by its coefficients.
267
If we put them in a matrix S can be defined as the set of nonnegative
268
integer solutions to Ax ge 0.
269
270
11.1-11 HilbertBasisOfSystemOfHomogeneousInequalities
271
272
HilbertBasisOfSystemOfHomogeneousInequalities( ls )  operation
273
274
ls is a list of lists of integers. The elements of ls represent the rows of
275
a matrix A. The output is a minimal generating system (Hilbert basis) of the
276
set of nonnegative integer solutions to Axge 0.
277
278
If the package NormalizInterface has not been loaded, then Contejean-Devie
279
algorithm is used [CD94] instead (the use of slack variables is described in
280
[CAGGB02]).
281
282
 Example 
283
gap> HilbertBasisOfSystemOfHomogeneousInequalities([[2,-3],[0,1]]);
284
[ [ 1, 0 ], [ 2, 1 ], [ 3, 2 ] ]
285

286
287
11.1-12 EquationsOfGroupGeneratedBy
288
289
EquationsOfGroupGeneratedBy( M )  function
290
291
M is a matrix of integers. The output is a pair [A,m] that represents the
292
set of defining equations of the group spanned by the rows of M: Ax=0∈
293
Z_n_1× ⋯ × Z_n_t× Z^k, with m=[n_1,...,n_t].
294
295
 Example 
296
gap> EquationsOfGroupGeneratedBy([[1,2,0],[2,-2,2]]);
297
[ [ [ 0, 0, -1 ], [ -2, 1, 3 ] ], [ 2 ] ]
298

299
300
11.1-13 BasisOfGroupGivenByEquations
301
302
BasisOfGroupGivenByEquations( A, m )  function
303
304
A is a matrix of integers and m is a list of positive integers. The output
305
is a basis for the group with defining equations Ax=0∈ Z_n_1× ⋯ × Z_n_t×
306
Z^k, with m=[n_1,...,n_t].
307
308
 Example 
309
gap> BasisOfGroupGivenByEquations([[0,0,1],[2,-1,-3]],[2]);
310
[ [ -1, -2, 0 ], [ -2, 2, -2 ] ]
311

312
313
314
11.2 Gluings of affine semigroups
315
316
Let S_1 and S_2 be two affine semigroups with the same dimension generated
317
by A_1 and A_2, respectively. We say that the affine semigroup S generated
318
by the union of A_1 and A_2 is a gluing of S_1 and S_2 if G(S_1)∩ G(S_2)=d Z
319
(G(⋅) stands for group spanned by) for some d∈ S_1∩ S_2.
320
321
The algorithm used is explained in [RGS99a].
322
323
11.2-1 GluingOfAffineSemigroups
324
325
GluingOfAffineSemigroups( a1, a2 )  function
326
327
a1, a2 are affine semigroups. Determines if they can be glued, and if so,
328
returns the gluing. Otherwise it returns fail.
329
330
 Example 
331
gap> a1:=AffineSemigroup([[2,0],[0,2]]);
332
<Affine semigroup in 2 dimensional space, with 2 generators>
333
gap> a2:=AffineSemigroup([[1,1]]);
334
<Affine semigroup in 2 dimensional space, with 1 generators>
335
gap> GluingOfAffineSemigroups(a1,a2);
336
<Affine semigroup in 2 dimensional space, with 3 generators>
337
gap> Generators(last);
338
[ [ 0, 2 ], [ 1, 1 ], [ 2, 0 ] ]
339

340
341
342
11.3 Presentations of affine semigroups
343
344
A minimal presentation of an affine semigroup is defined analogously as for
345
numerical semigroups. The user might take into account that generators are
346
stored in a set, and thus might be arranged in a different way to the
347
initial input.
348
349
11.3-1 GeneratorsOfKernelCongruence
350
351
GeneratorsOfKernelCongruence( M )  operation
352
353
M is matrix with nonnegative integer coefficients. The output is a system of
354
generators of the congruence {(x,y)∣ xM=yM}.
355
356
The main difference with MinimalPresentationOfAffineSemigroup is that the
357
matrix M can have repeated columns and these are not treated as a set.
358
359
11.3-2 CanonicalBasisOfKernelCongruence
360
361
CanonicalBasisOfKernelCongruence( M, Ord )  operation
362
363
M is matrix with nonnegative integer coefficients, Ord a term ordering. The
364
output is a canonical bases of the congruence {(x,y)∣ xM=yM} (see [RGS99b]).
365
This corresponds with the exponents of the Gröbner basis of the kernel ideal
366
of the morphism x_i↦ Y^m_i, with m_i the ith row of M.
367
368
Accepted term orderings are lexicographic (MonomialLexOrdering()), graded
369
lexicographic (MonomialGrlexOrdering()) and reversed graded lexicographic
370
(MonomialGrevlexOrdering()).
371
372
 Example 
373
gap> M:=[[3],[5],[7]];;
374
gap> CanonicalBasisOfKernelCongruence(M,MonomialLexOrdering());
375
[ [ [ 0, 7, 0 ], [ 0, 0, 5 ] ], [ [ 1, 0, 1 ], [ 0, 2, 0 ] ],
376
 [ [ 1, 5, 0 ], [ 0, 0, 4 ] ], [ [ 2, 3, 0 ], [ 0, 0, 3 ] ],
377
 [ [ 3, 1, 0 ], [ 0, 0, 2 ] ], [ [ 4, 0, 0 ], [ 0, 1, 1 ] ] ]
378
gap> CanonicalBasisOfKernelCongruence(M,MonomialGrlexOrdering());
379
[ [ [ 0, 7, 0 ], [ 0, 0, 5 ] ], [ [ 1, 0, 1 ], [ 0, 2, 0 ] ],
380
 [ [ 1, 5, 0 ], [ 0, 0, 4 ] ], [ [ 2, 3, 0 ], [ 0, 0, 3 ] ],
381
 [ [ 3, 1, 0 ], [ 0, 0, 2 ] ], [ [ 4, 0, 0 ], [ 0, 1, 1 ] ] ]
382
gap> CanonicalBasisOfKernelCongruence(M,MonomialGrevlexOrdering());
383
[ [ [ 0, 2, 0 ], [ 1, 0, 1 ] ], [ [ 3, 1, 0 ], [ 0, 0, 2 ] ],
384
 [ [ 4, 0, 0 ], [ 0, 1, 1 ] ] ]
385

386
387
11.3-3 GraverBasis
388
389
GraverBasis( M )  operation
390
391
M is matrix with integer coefficients. The output is a Graver basis for M.
392
393
 Example 
394
gap> gr:=GraverBasis([[3,5,7]]);
395
[ [ -7, 0, 3 ], [ -5, 3, 0 ], [ -4, 1, 1 ], [ -3, -1, 2 ], [ -2, -3, 3 ],
396
 [ -1, -5, 4 ], [ -1, 2, -1 ], [ 0, -7, 5 ], [ 0, 7, -5 ], [ 1, -2, 1 ],
397
 [ 1, 5, -4 ], [ 2, 3, -3 ], [ 3, 1, -2 ], [ 4, -1, -1 ], [ 5, -3, 0 ],
398
 [ 7, 0, -3 ] ]
399

400
401
11.3-4 MinimalPresentationOfAffineSemigroup
402
403
MinimalPresentationOfAffineSemigroup( a )  operation
404
MinimalPresentation( a )  operation
405
406
a is an affine semigroup. The output is a minimal presentation for a.
407
408
There are four methods implemented for this function, depending on the
409
packages loaded. All of them use elimination, and Herzog's correspondence,
410
computing the kernel of a ring homomorphism ([Her70]). The fastest procedure
411
is achieved when SingularInterface is loaded, followed by Singular. The
412
procedure that does not use external packages uses internal GAP Gröbner
413
basis computations and thus it is slower. Also in this case, from the
414
Gröbner basis, a minimal set of generating binomials must be refined, and
415
for this Rclasses are used (if NormalizInterface is loaded, then the
416
factorizations are faster). The 4ti2 implementation uses 4ti2 internal
417
Gröbner bases and factorizations are done via zsolve.
418
419
 Example 
420
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
421
gap> MinimalPresentationOfAffineSemigroup(a);
422
[ [ [ 1, 0, 1 ], [ 0, 2, 0 ] ] ]
423
gap> GeneratorsOfAffineSemigroup(a);
424
[ [ 0, 2 ], [ 1, 1 ], [ 2, 0 ] ]
425

426
427
11.3-5 BettiElementsOfAffineSemigroup
428
429
BettiElementsOfAffineSemigroup( a )  operation
430
BettiElements( a )  operation
431
432
a is an affine semigroup. The output is the set of Betti elements of a
433
(defined as for numerical semigroups).
434
435
This function relies on the computation of a minimal presentation.
436
437
 Example 
438
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
439
gap> BettiElementsOfAffineSemigroup(a);
440
[ [ 2, 2 ] ]
441

442
443
11.3-6 ShadedSetOfElementInAffineSemigroup
444
445
ShadedSetOfElementInAffineSemigroup( v, a )  function
446
447
a is an affine semigroup and v is an element in a. This is a translation to
448
affine semigroups of ShadedSetOfElementInNumericalSemigroup (4.1-5).
449
450
11.3-7 IsGeneric
451
452
IsGeneric( a )  property
453
IsGenericAffineSemigroup( a )  property
454
455
a is an affine semigroup.
456
457
The same as IsGenericNumericalSemigroup (4.2-2) but for affine semigroups.
458
459
11.3-8 IsUniquelyPresentedAffineSemigroup
460
461
IsUniquelyPresentedAffineSemigroup( a )  property
462
463
a is an affine semigroup.
464
465
The same as IsUniquelyPresentedNumericalSemigroup (4.2-1) but for affine
466
semigroups.
467
468
11.3-9 PrimitiveElementsOfAffineSemigroup
469
470
PrimitiveElementsOfAffineSemigroup( a )  operation
471
472
a is an affine semigroup. The output is the set of primitive elements of a
473
(defined as for numerical semigroups).
474
475
This function has three implementations (methods), one using Graver basis
476
via the Lawrence lifting of a and the other (much faster) using
477
NormalizInterface. Also a 4ti2 version using its Graver basis computation is
478
provided.
479
480
 Example 
481
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
482
gap> PrimitiveElementsOfAffineSemigroup(a);
483
[ [ 0, 2 ], [ 1, 1 ], [ 2, 0 ], [ 2, 2 ] ]
484

485
486
487
11.4 Factorizations in affine semigroups
488
489
The invariants presented here are defined as for numerical semigroups.
490
491
As with presentations, the user should take into account that generators are
492
stored in a set, and thus might be arranged in a different way to the
493
initial input.
494
495
11.4-1 FactorizationsVectorWRTList
496
497
FactorizationsVectorWRTList( v, ls )  operation
498
499
v is a list of nonnegative integers and ls is a list of lists of nonnegative
500
integers. The output is set of factorizations of v in terms of the elements
501
of ls.
502
503
If no extra package is loaded, then factorizations are computed recursively;
504
and thus slowly. If NormalizInterface is loaded, then a system of equations
505
is solved with Normaliz, and the performance is much better. If
506
4ti2Interface is loaded instead, then factorizations are calculated using
507
zsolve command of 4ti2.
508
509
 Example 
510
gap> FactorizationsVectorWRTList([5,5],[[2,0],[0,2],[1,1]]);
511
[ [ 2, 2, 1 ], [ 1, 1, 3 ], [ 0, 0, 5 ] ]
512

513
514
11.4-2 ElasticityOfAffineSemigroup
515
516
ElasticityOfAffineSemigroup( a )  operation
517
518
a is an affine semigroup. The output is the elasticity of a (defined as for
519
numerical semigroups).
520
521
The procedure used is based on [Phi10], where it is shown that the
522
elasticity can be computed by using circuits. The set of circuits is
523
calculated using [ES96].
524
525
 Example 
526
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
527
gap> ElasticityOfAffineSemigroup(a);
528
1
529

530
531
11.4-3 DeltaSetOfAffineSemigroup
532
533
DeltaSetOfAffineSemigroup( a )  function
534
535
a is an affine semigroup. The output is the Delta set of a (defined as for
536
numerical semigroups). The the procedure used is explained in [GSOW17].
537
538
 Example 
539
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
540
gap> DeltaSetOfAffineSemigroup(a);
541
[ ]
542
gap> s:=NumericalSemigroup(10,13,15,47);;
543
gap> a:=AsAffineSemigroup(s);;
544
gap> DeltaSetOfAffineSemigroup(a);
545
[ 1, 2, 3, 5 ]
546

547
548
11.4-4 CatenaryDegreeOfAffineSemigroup
549
550
CatenaryDegreeOfAffineSemigroup( a )  function
551
552
a is an affine semigroup. The output is the catenary degree of a (defined as
553
for numerical semigroups).
554
555
 Example 
556
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
557
gap> CatenaryDegreeOfAffineSemigroup(a);
558
2
559

560
561
11.4-5 EqualCatenaryDegreeOfAffineSemigroup
562
563
EqualCatenaryDegreeOfAffineSemigroup( a )  function
564
565
a is an affine semigroup. The output is the equal catenary degree of a
566
(defined as for numerical semigroups).
567
568
This function relies on the results presented in [GSOSRN13].
569
570
11.4-6 HomogeneousCatenaryDegreeOfAffineSemigroup
571
572
HomogeneousCatenaryDegreeOfAffineSemigroup( a )  function
573
574
a is an affine semigroup. The output is the homogeneous catenary degree of a
575
(defined as for numerical semigroups).
576
577
This function is based on [GSOSRN13].
578
579
11.4-7 MonotoneCatenaryDegreeOfAffineSemigroup
580
581
MonotoneCatenaryDegreeOfAffineSemigroup( a )  function
582
583
a is an affine semigroup. The output is the monotone catenary degree of a
584
(defined as for numerical semigroups), computed as explained in [Phi10].
585
586
 Example 
587
gap> a:=AffineSemigroup("inequalities",[[2,-1],[-1,3]]);
588
<Affine semigroup>
589
gap> GeneratorsOfAffineSemigroup(a);
590
[ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 3, 1 ] ]
591
gap> CatenaryDegreeOfAffineSemigroup(a);
592
3
593
gap> EqualCatenaryDegreeOfAffineSemigroup(a);
594
2
595
gap> HomogeneousCatenaryDegreeOfAffineSemigroup(a);
596
3
597
gap> MonotoneCatenaryDegreeOfAffineSemigroup(a);
598
3
599

600
601
11.4-8 TameDegreeOfAffineSemigroup
602
603
TameDegreeOfAffineSemigroup( a )  operation
604
605
a is an affine semigroup. The output is the tame degree of a (defined as for
606
numerical semigroups). If a is given by equations (or its equations are
607
known), then the procedure explained in [GSOW17] is used.
608
609
 Example 
610
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
611
gap> TameDegreeOfAffineSemigroup(a);
612
2
613

614
615
11.4-9 OmegaPrimalityOfElementInAffineSemigroup
616
617
OmegaPrimalityOfElementInAffineSemigroup( v, a )  operation
618
619
v is a list of nonnegative integers and a is an affine semigroup. The output
620
is the omega primality of a (defined as for numerical semigroups). Returns 0
621
if the element is not in the semigroup.
622
623
The implementation of this procedure is performed as explained in [BGSG11]
624
(also, if the semigroup has defining equations, then it takes advantage of
625
this fact as explained in this reference).
626
627
 Example 
628
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
629
gap> OmegaPrimalityOfElementInAffineSemigroup([5,5],a);
630
6
631

632
633
11.4-10 OmegaPrimalityOfAffineSemigroup
634
635
OmegaPrimalityOfAffineSemigroup( a )  function
636
637
a is an affine semigroup. The output is the omega primality of a (defined as
638
for numerical semigroups).
639
640
 Example 
641
gap> a:=AffineSemigroup([2,0],[0,2],[1,1]);;
642
gap> OmegaPrimalityOfAffineSemigroup(a);
643
2
644

645
646
647