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
2
10 Polynomials and numerical semigroups
3
4
5
10.1 Generating functions or Hilbert series
6
7
Let S be a numerical semigroup. The Hilbert series or generating function
8
associated to S is H_S(x)=∑_s∈ Sx^s (actually it is the Hilbert function of
9
the ring K[S] with K a field). See for instance [Mor14].
10
11
10.1-1 NumericalSemigroupPolynomial
12
13
NumericalSemigroupPolynomial( s, x )  function
14
15
s is a numerical semigroups and x a variable (or a value to evaluate in).
16
The output is the polynomial 1+(x-1)∑_s∈ N∖ S x^s, which equals (1-x)H_S(x).
17
18
 Example 
19
gap> x:=X(Rationals,"x");;
20
gap> s:=NumericalSemigroup(5,7,9);;
21
gap> NumericalSemigroupPolynomial(s,x);
22
x^14-x^13+x^12-x^11+x^9-x^8+x^7-x^6+x^5-x+1
23

24
25
10.1-2 IsNumericalSemigroupPolynomial
26
27
IsNumericalSemigroupPolynomial( f )  function
28
29
f is a polynomial in one variable. The output is true if there exists a
30
numerical semigroup S such that f equals (1-x)H_S(x), that is, the
31
polynomial associated to S (false otherwise).
32
33
 Example 
34
gap> x:=X(Rationals,"x");;
35
gap> s:=NumericalSemigroup(5,6,7,8);;
36
gap> f:=NumericalSemigroupPolynomial(s,x);
37
x^10-x^9+x^5-x+1
38
gap> IsNumericalSemigroupPolynomial(f);
39
true
40

41
42
10.1-3 NumericalSemigroupFromNumericalSemigroupPolynomial
43
44
NumericalSemigroupFromNumericalSemigroupPolynomial( f )  function
45
46
f is a polynomial associated to a numerical semigroup (otherwise yields
47
error). The output is the numerical semigroup S such that f equals
48
(1-x)H_S(x).
49
50
 Example 
51
gap> x:=X(Rationals,"x");;
52
gap> s:=NumericalSemigroup(5,6,7,8);;
53
gap> f:=NumericalSemigroupPolynomial(s,x);
54
x^10-x^9+x^5-x+1
55
gap> NumericalSemigroupFromNumericalSemigroupPolynomial(f)=s;
56
true
57

58
59
10.1-4 HilbertSeriesOfNumericalSemigroup
60
61
HilbertSeriesOfNumericalSemigroup( s, x )  function
62
63
s is a numerical semigroup and x a variable (or a value to evaluate in). The
64
output is the series ∑_s∈ S x^s. The series is given as a rational function.
65
66
 Example 
67
gap> x:=X(Rationals,"x");;
68
gap> s:=NumericalSemigroup(5,7,9);;
69
gap> HilbertSeriesOfNumericalSemigroup(s,x);
70
(x^14-x^13+x^12-x^11+x^9-x^8+x^7-x^6+x^5-x+1)/(-x+1)
71

72
73
10.1-5 GraeffePolynomial
74
75
GraeffePolynomial( p )  function
76
77
p is a polynomial. Computes the Graeffe polynomial of p. Needed to test if p
78
is a cyclotomic polynomial (see [BD89]).
79
80
 Example 
81
gap> x:=Indeterminate(Rationals,1);; SetName(x,"x");
82
gap> GraeffePolynomial(x^2-1);
83
x^2-2*x+1
84

85
86
10.1-6 IsCyclotomicPolynomial
87
88
IsCyclotomicPolynomial( p )  function
89
90
p is a polynomial. Detects if p is a cyclotomic polynomial using the
91
procedure given in [BD89].
92
93
 Example 
94
gap> CyclotomicPolynomial(Rationals,3);
95
x^2+x+1
96
gap> IsCyclotomicPolynomial(last);
97
true
98

99
100
10.1-7 IsKroneckerPolynomial
101
102
IsKroneckerPolynomial( p )  function
103
104
p is a polynomial. Detects if p is a Kronecker polynomial, that is, a monic
105
polynomial with integer coefficients having all its roots in the unit
106
circumference, or equivalently, a product of cyclotomic polynomials. The
107
current implementation has been done with A. Herrera-Poyatos, following
108
[BD89].
109
110
 Example 
111
gap> x:=X(Rationals,"x");;
112
gap>  s:=NumericalSemigroup(3,5,7);;
113
gap>  t:=NumericalSemigroup(4,6,9);;
114
gap> p:=NumericalSemigroupPolynomial(s,x);
115
x^5-x^4+x^3-x+1
116
gap> q:=NumericalSemigroupPolynomial(t,x);
117
x^12-x^11+x^8-x^7+x^6-x^5+x^4-x+1
118
gap> IsKroneckerPolynomial(p);
119
false
120
gap> IsKroneckerPolynomial(q);
121
true
122

123
124
10.1-8 IsCyclotomicNumericalSemigroup
125
126
IsCyclotomicNumericalSemigroup( s )  function
127
128
s is a numerical semigroup. Detects if the polynomial associated to s is a
129
Kronecker polynomial.
130
131
 Example 
132
gap> l:=CompleteIntersectionNumericalSemigroupsWithFrobeniusNumber(21);;
133
gap> ForAll(l,IsCyclotomicNumericalSemigroup);
134
true
135

136
137
10.1-9 IsSelfReciprocalUnivariatePolynomial
138
139
IsSelfReciprocalUnivariatePolynomial( p )  function
140
141
p is a univariate polynomial. Detects if p is selfreciprocal. A numerical
142
semigroup is symmetric if and only if it is selfreciprocal, [Mor14]. The
143
current implementation is due to A. Herrera-Poyatos.
144
145
 Example 
146
gap> l:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(13);;
147
gap> x:=X(Rationals,"x");;
148
gap> ForAll(l, s->
149
> IsSelfReciprocalUnivariatePolynomial(NumericalSemigroupPolynomial(s,x)));
150
true
151

152
153
154
10.2 Semigroup of values of algebraic curves
155
156
Let f(x,y)∈ K[x,y], with K an algebraically closed field of characteristic
157
zero. Let f(x,y)=y^n+a_1(x)y^n-1+dots+a_n(x) be a nonzero polynomial of
158
K[x][y]. After possibly a change of variables, we may assume that, that
159
deg_x(a_i(x))le i-1 for all i∈{1,..., n}. For g∈ K[x,y] that is not a
160
multiple of f, define mathrmint(f,g)=dim_ K frac K[x,y](f,g). If f has one
161
place at infinity, then the set {mathrmint(f,g)∣ g∈ K[x,y]∖(f)} is a free
162
numerical semigroup (and thus a complete intersection).
163
164
10.2-1 SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity
165
166
SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity( f )  function
167
168
f is a polynomial in the variables X(Rationals,1) and X(Rationals,2).
169
Computes the semigroup {mathrmint(f,g)∣ g∈ K[x,y]∖(f)}, where
170
mathrmint(f,g)=dim_ K ( K[x,y]/(f,g)). The algorithm checks if f has one
171
place at infinity. If the extra argument "all" is given, then the output is
172
the δ-sequence and approximate roots of f. The method is explained in
173
[AGS16].
174
175
 Example 
176
gap> x:=Indeterminate(Rationals,1);; SetName(x,"x");
177
gap> y:=Indeterminate(Rationals,2);; SetName(y,"y");
178
gap> f:=((y^3-x^2)^2-x*y^2)^4-(y^3-x^2);;
179
gap> SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity(f,"all");
180
[ [ 24, 16, 28, 7 ], [ y, y^3-x^2, y^6-2*x^2*y^3+x^4-x*y^2 ] ]
181

182
183
10.2-2 IsDeltaSequence
184
185
IsDeltaSequence( l )  function
186
187
l is a list of positive integers. Assume that l equals a_0,a_1,dots,a_h.
188
Then l is a δ-sequence if gcd(a_0,..., a_h)=1, ⟨ a_0,⋯, a_s⟩ is free, a_kD_k
189
> a_k+1D_k+1 and a_0> a_1 > D_2 > D_3 > ... > D_h+1, where D_1=a_0,
190
D_k=gcd(D_k-1,a_k-1).
191
192
Every δ-sequence generates a numerical semigroup that is the semigroup of
193
values of a plane curve with one place at infinity.
194
195
 Example 
196
gap> IsDeltaSequence([24,16,28,7]);
197
true
198

199
200
10.2-3 DeltaSequencesWithFrobeniusNumber
201
202
DeltaSequencesWithFrobeniusNumber( f )  function
203
204
f is a positive integer. Computes the set of all δ-sequences generating
205
numerical semigroups with Frobenius number f.
206
207
 Example 
208
gap> DeltaSequencesWithFrobeniusNumber(21);
209
[ [ 8, 6, 11 ], [ 10, 4, 15 ], [ 12, 8, 6, 11 ], [ 14, 4, 11 ],
210
 [ 15, 10, 4 ], [ 23, 2 ] ]
211

212
213
10.2-4 CurveAssociatedToDeltaSequence
214
215
CurveAssociatedToDeltaSequence( l )  function
216
217
l is a δ-sequence. Computes a curve in the variables X(Rationals,1) and
218
X(Rationals,2) whose semigroup of values is generated by the l.
219
220
 Example 
221
gap> CurveAssociatedToDeltaSequence([24,16,28,7]);
222
y^24-8*x^2*y^21+28*x^4*y^18-56*x^6*y^15-4*x*y^20+70*x^8*y^12+24*x^3*y^17-56*x^\
223
10*y^9-60*x^5*y^14+28*x^12*y^6+80*x^7*y^11+6*x^2*y^16-8*x^14*y^3-60*x^9*y^8-24\
224
*x^4*y^13+x^16+24*x^11*y^5+36*x^6*y^10-4*x^13*y^2-24*x^8*y^7-4*x^3*y^12+6*x^10\
225
*y^4+8*x^5*y^9-4*x^7*y^6+x^4*y^8-y^3+x^2
226
gap> SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity(last,"all");
227
[ [ 24, 16, 28, 7 ], [ y, y^3-x^2, y^6-2*x^2*y^3+x^4-x*y^2 ] ]
228

229
230
10.2-5 SemigroupOfValuesOfPlaneCurve
231
232
SemigroupOfValuesOfPlaneCurve( f )  function
233
234
f is a polynomial in the variables X(Rationals,1) and X(Rationals,2). The
235
singular package is mandatory. Either by loading it prior to numerical
236
semigroups or by using NumSgpsUseSingular(). If f is irreducible, computes
237
the semigroup {mathrmint(f,g)∣ g∈ K[x,y]∖(f)}, where mathrmint(f,g)=dim_ K (
238
K[[x,y]]/(f,g)). If it has two components, the output is the value semigroup
239
in two variables, and thus a good semigroup. If there are more components,
240
then the output is that of semigroup in the alexpoly singular library.
241
242
 Example 
243
gap> x:=X(Rationals,"x");; y:=X(Rationals,"y");;
244
gap> f:= y^4-2*x^3*y^2-4*x^5*y+x^6-x^7;
245
-x^7+x^6-4*x^5*y-2*x^3*y^2+y^4
246
gap> SemigroupOfValuesOfPlaneCurve(f);
247
<Numerical semigroup with 3 generators>
248
gap> MinimalGenerators(last);
249
[ 4, 6, 13 ]
250
gap> f:=(y^4-2*x^3*y^2-4*x^5*y+x^6-x^7)*(y^2-x^3);;
251
gap> SemigroupOfValuesOfPlaneCurve(f);
252
<Good semigroup>
253
gap> MinimalGenerators(last);
254
[ [ 4, 2 ], [ 6, 3 ], [ 13, 15 ], [ 29, 13 ] ]
255

256
257
10.2-6 SemigroupOfValuesOfCurve_Local
258
259
SemigroupOfValuesOfCurve_Local( arg )  function
260
261
The function admits one or two parameters. In any case, the first is a list
262
of polynomials pols. And the second can be the string "basis" or an integer
263
val.
264
265
If only one argument is given, the output is the semigroup of all possible
266
orders of K[[pols]] provided that K[[x]]/K[[pols]] has finite length. If the
267
second argument "basis" is given, then the output is a (reduced) basis of
268
the algebra K[[pols]] such that the orders of the basis elements generate
269
minimally the semigroup of orders of K[[pols]]. If an integer val is the
270
second argument, then the output is a polynomial in K[[pols]] with order val
271
(fail if there is no such polynomial, that is, val is not in the semigroup
272
of values).
273
274
The method is explained in [AGSM17].
275
276
 Example 
277
gap> x:=Indeterminate(Rationals,"x");;
278
gap> SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13]);
279
<Numerical semigroup with 4 generators>
280
gap> MinimalGeneratingSystem(last);
281
[ 4, 6, 13, 15 ]
282
gap> SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13], "basis");
283
[ x^4, x^7+x^6, x^13, x^15 ]
284
gap> SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13], 20);
285
x^20
286

287
288
10.2-7 SemigroupOfValuesOfCurve_Global
289
290
SemigroupOfValuesOfCurve_Global( arg )  function
291
292
The function admits one or two parameters. In any case, the first is a list
293
of polynomials pols. And the second can be the string "basis" or an integer
294
val.
295
296
If only one argument is given, the output is the semigroup of all possible
297
degrees of K[pols] provided that K[x]/K[pols] has finite length. If the
298
second argument "basis" is given, then the output is a (reduced) basis of
299
the algebra K[pols] such that the degrees of the basis elements generate
300
minimally the semigroup of degrees of K[pols]. If an integer val is the
301
second argument, then the output is a polynomial in K[pols] with degree val
302
(fail if there is no such polynomial, that is, val is not in the semigroup
303
of values).
304
305
The method is explained in [AGSM17].
306
307
 Example 
308
gap> x:=Indeterminate(Rationals,"x");;
309
gap> SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13]);
310
<Numerical semigroup with 3 generators>
311
gap> MinimalGeneratingSystem(last);
312
[ 4, 7, 13 ]
313
gap> SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],"basis");
314
[ x^4, x^7+x^6, x^13 ]
315
gap> SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],12);
316
x^12
317
gap> SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],6);
318
fail
319

320
321
10.2-8 GeneratorsModule_Global
322
323
GeneratorsModule_Global( A, M )  function
324
325
A and M are lists of polynomials in the same variable. The output is a basis
326
of the ideal M K[A], that is, a set F such that deg(F) generates the ideal
327
deg(M K[A]) of deg(K[A]), where deg stands for degree. The method is
328
explained in [AAGS17].
329
330
 Example 
331
gap> t:=Indeterminate(Rationals,"t");;
332
gap> A:=[t^6+t,t^4];;
333
gap> M:=[t^3,t^4];;
334
gap> GeneratorsModule_Global(A,M);
335
[ t^3, t^4, t^5, t^6 ]
336

337
338
10.2-9 GeneratorsKahlerDifferentials
339
340
GeneratorsKahlerDifferentials( A, M )  function
341
342
A is a list of polynomials in the same variable. The output is
343
GeneratorsModule_Global(A,M), with M the set of derivatives of the elements
344
in A.
345
346
 Example 
347
gap> t:=Indeterminate(Rationals,"t");;
348
gap> GeneratorsKahlerDifferentials([t^3,t^4]);
349
[ t^2, t^3 ]
350

351
352
10.2-10 IsMonomialNumericalSemigroup
353
354
IsMonomialNumericalSemigroup( S )  property
355
356
S is a numerical semigroup. Tests whether S a monomial numerical semigroup.
357
358
Let R a Noetherian ring such that K ⊆ R ⊆ K[[t]], K is a field of
359
characteristic zero, the algebraic closure of R is K[[t]], and the conductor
360
(R : K[[t]]) is not zero. If v : K((t))-> Z is the natural valuation for
361
K((t)), then v(R) is a numerical semigroup.
362
363
Let S be a numerical semigroup minimally generated by {n_1,...,n_e}. The
364
semigroup ring associated to S is K[[S]]=K[[t^n_1,...,t^n_e]]. A ring is
365
called a semigroup ring if it is of the form K[[S]], for some numerical
366
semigroup S. We say that S is a monomial numerical semigroup if for any R as
367
above with v(R)=S, R is a semigroup ring. See [Mic02] for details.
368
369
 Example 
370
gap> IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,7));
371
true
372
gap> IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,11));
373
false
374

375
376
377