<h3>10 <span class="Heading">
Polynomials and numerical semigroups
</span></h3>
<p>Polynomials appear related to numerical semigroups in several ways. One of them is through their associated generating function (or Hilbert series), and another via value semigroups of a curve; and curves might be defined by polynomials. In this chapter we present several functions to compute the polynomial and Hilbert series associated to a numerical semigroup, and to calculate the respective numerical semigroups given a set of defining polynomials.</p>
<h4>10.1 <span class="Heading">
Generating functions or Hilbert series
</span></h4>
<p>Let <span class="SimpleMath">\(S\)</span> be a numerical semigroup. The Hilbert series or generating function associated to <span class="SimpleMath">\(S\)</span> is <span class="SimpleMath">\(H_S(x)=\sum_{s\in S}x^s\)</span> (actually it is the Hilbert function of the ring <span class="SimpleMath">\(K[S]\)</span> with <span class="SimpleMath">\(K\)</span> a field). See for instance <a href="chapBib_mj.html#biBM">[Mor14]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumericalSemigroupPolynomial</code>( <var class="Arg">s</var>, <var class="Arg">x</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">s</var> is a numerical semigroups and <var class="Arg">x</var> a variable (or a value to evaluate in). The output is the polynomial <span class="SimpleMath">\(1+(x-1)\sum_{s\in \mathbb N\setminus S} x^s\)</span>, which equals <span class="SimpleMath">\((1-x)H_S(x)\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsNumericalSemigroupPolynomial</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">f</var> is a polynomial in one variable. The output is true if there exists a numerical semigroup <span class="SimpleMath">\(S\)</span> such that <var class="Arg">f</var> equals <span class="SimpleMath">\((1-x)H_S(x)\)</span>, that is, the polynomial associated to <span class="SimpleMath">\(S\)</span> (false otherwise).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumericalSemigroupFromNumericalSemigroupPolynomial</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">f</var> is a polynomial associated to a numerical semigroup (otherwise yields error). The output is the numerical semigroup <span class="SimpleMath">\(S\)</span> such that <var class="Arg">f</var> equals <span class="SimpleMath">\((1-x)H_S(x)\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HilbertSeriesOfNumericalSemigroup</code>( <var class="Arg">s</var>, <var class="Arg">x</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">s</var> is a numerical semigroup and <var class="Arg">x</var> a variable (or a value to evaluate in). The output is the series <span class="SimpleMath">\(\sum_{s\in S} x^s\)</span>. The series is given as a rational function.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GraeffePolynomial</code>( <var class="Arg">p</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">p</var> is a polynomial. Computes the Graeffe polynomial of <var class="Arg">p</var>. Needed to test if <var class="Arg">p</var> is a cyclotomic polynomial (see <a href="chapBib_mj.html#biBBD-cyclotomic">[BD89]</a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCyclotomicPolynomial</code>( <var class="Arg">p</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">p</var> is a polynomial. Detects if <var class="Arg">p</var> is a cyclotomic polynomial using the procedure given in <a href="chapBib_mj.html#biBBD-cyclotomic">[BD89]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsKroneckerPolynomial</code>( <var class="Arg">p</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">p</var> is a polynomial. Detects if <var class="Arg">p</var> is a Kronecker polynomial, that is, a monic polynomial with integer coefficients having all its roots in the unit circumference, or equivalently, a product of cyclotomic polynomials. The current implementation has been done with A. Herrera-Poyatos, following <a href="chapBib_mj.html#biBBD-cyclotomic">[BD89]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCyclotomicNumericalSemigroup</code>( <var class="Arg">s</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">s</var> is a numerical semigroup. Detects if the polynomial associated to <var class="Arg">s</var> is a Kronecker polynomial.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CyclotomicExponentSequence</code>( <var class="Arg">s</var>, <var class="Arg">k</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">s</var> is a numerical semigroup and <var class="Arg">k</var> is a positive integer. Outputs the list of the first <var class="Arg">k</var> elements of the cyclotomic exponent sequence of s (see <a href="chapBib_mj.html#biBC-GS-M">[CGM16]</a>).</p>
<p>The sequence will be truncated if the semigroup is cyclotomic and k is bigger than the last nonzero element in its sequence.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WittCoefficients</code>( <var class="Arg">p</var>, <var class="Arg">k</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">p</var> is a univariate polynomial with integer coefficientas and <span class="SimpleMath">\(p(1)=1\)</span>. Then <span class="SimpleMath">\(p(x)=\prod_{n\ge 0}(1-x^n)^{e_n}\)</span>, for some integers <span class="SimpleMath">\(e_n\)</span>. The output is the list <span class="SimpleMath">\([e_1,\ldots,e_k]\)</span>, and it is computed by using <a href="chapBib_mj.html#biBC-GS-HP-M">[CGHM19]</a>.</p>
<p>The difference with this example and the one in <code class="func">CyclotomicExponentSequence</code> (<a href="chap10_mj.html#X7B428FA2877EC733"><span class="RefLink">10.1-9</span></a>) is that in that case a cyclotomic check is performed that slows down the process.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSelfReciprocalUnivariatePolynomial</code>( <var class="Arg">p</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">p</var> is a univariate polynomial. Detects if <var class="Arg">p</var> is selfreciprocal. A numerical semigroup is symmetric if and only if it is selfreciprocal, <a href="chapBib_mj.html#biBM">[Mor14]</a>. The current implementation is due to A. Herrera-Poyatos.</p>
<h4>10.2 <span class="Heading">
Semigroup of values of algebraic curves
</span></h4>
<p>Let <span class="SimpleMath">\(f(x,y)\in \mathbb K[x,y]\)</span>, with <span class="SimpleMath">\(\mathbb K\)</span> an algebraically closed field of characteristic zero. Let <span class="SimpleMath">\(f(x,y)=y^n+a_1(x)y^{n-1}+\dots+a_n(x)\)</span> be a nonzero polynomial of <span class="SimpleMath">\(\mathbb K[x][y]\)</span>. After possibly a change of variables, we may assume that, that <span class="SimpleMath">\(\deg_x(a_i(x))\le i-1\)</span> for all <span class="SimpleMath">\(i\in\{1,\ldots, n\}\)</span>. For <span class="SimpleMath">\(g\in\mathbb K[x,y]\)</span> that is not a multiple of <span class="SimpleMath">\(f\)</span>, define <span class="SimpleMath">\(\mathrm{int}(f,g)=\dim_\mathbb K \frac{\mathbb K[x,y]}{(f,g)}\)</span>. If <span class="SimpleMath">\(f\)</span> has one place at infinity, then the set <span class="SimpleMath">\(\{\mathrm{int}(f,g)\mid g\in\mathbb K[x,y]\setminus(f)\}\)</span> is a free numerical semigroup (and thus a complete intersection).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">f</var> is a polynomial in the variables X(Rationals,1) and X(Rationals,2). Computes the semigroup <span class="SimpleMath">\(\{\mathrm{int}(f,g)\mid g\in\mathbb K[x,y]\setminus(f)\}\)</span>, where <span class="SimpleMath">\(\mathrm{int}(f,g)=\dim_{\mathbb K} (\mathbb K[x,y]/(f,g))\)</span>. The algorithm checks if <var class="Arg">f</var> has one place at infinity. If the extra argument "all" is given, then the output is the <span class="SimpleMath">\(\delta\)</span>-sequence and approximate roots of <var class="Arg">f</var>. The method is explained in <a href="chapBib_mj.html#biBAGS14">[AG16a]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsDeltaSequence</code>( <var class="Arg">l</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">l</var> is a list of positive integers. Assume that <var class="Arg">l</var> equals <span class="SimpleMath">\(a_0,a_1,\dots,a_h\)</span>. Then <var class="Arg">l</var> is a <span class="SimpleMath">\(\delta\)</span>-sequence if <span class="SimpleMath">\(\gcd(a_0,\ldots, a_h)=1\)</span>, <span class="SimpleMath">\(\langle a_0,\cdots, a_s\rangle\)</span> is free, <span class="SimpleMath">\(a_kD_k > a_{k+1}D_{k+1}\)</span> and <span class="SimpleMath">\(a_0> a_1 > D_2 > D_3 > \ldots > D_{h+1}\)</span>, where <span class="SimpleMath">\(D_1=a_0\)</span>, <span class="SimpleMath">\(D_k=\gcd(D_{k-1},a_{k-1})\)</span>.</p>
<p>Every <span class="SimpleMath">\(\delta\)</span>-sequence generates a numerical semigroup that is the semigroup of values of a plane curve with one place at infinity.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DeltaSequencesWithFrobeniusNumber</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">f</var> is an integer. Computes the set of all <span class="SimpleMath">\(\delta\)</span>-sequences generating numerical semigroups with Frobenius number <var class="Arg">f</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CurveAssociatedToDeltaSequence</code>( <var class="Arg">l</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">l</var> is a <span class="SimpleMath">\(\delta\)</span>-sequence. Computes a curve in the variables X(Rationals,1) and X(Rationals,2) whose semigroup of values is generated by the <var class="Arg">l</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemigroupOfValuesOfPlaneCurve</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">f</var> is a polynomial in the variables X(Rationals,1) and X(Rationals,2). The singular package is mandatory. Either by loading it prior to numerical semigroups or by using <var class="Arg">NumSgpsUseSingular()</var>. If <span class="SimpleMath">\(f\)</span> is irreducible, computes the semigroup <span class="SimpleMath">\(\{\mathrm{int}(f,g)\mid g\in\mathbb K[x,y]\setminus(f)\}\)</span>, where <span class="SimpleMath">\(\mathrm{int}(f,g)=\dim_{\mathbb K} (\mathbb K[\![x,y]\!]/(f,g))\)</span>. If it has two components, the output is the value semigroup in two variables, and thus a good semigroup. If there are more components, then the output is that of <var class="Arg">semigroup</var> in the alexpoly singular library.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemigroupOfValuesOfCurve_Local</code>( <var class="Arg">arg</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function admits one or two parameters. In any case, the first is a list of polynomials <var class="Arg">pols</var>. And the second can be the string <var class="Arg">"basis"</var> or an integer <var class="Arg">val</var>.</p>
<p>If only one argument is given, the output is the semigroup of all possible orders of <span class="SimpleMath">\(K[[pols]]\)</span> provided that <span class="SimpleMath">\(K[[x]]/K[[pols]]\)</span> has finite length. If the second argument <var class="Arg">"basis"</var> is given, then the output is a (reduced) basis of the algebra <span class="SimpleMath">\(K[[pols]]\)</span> such that the orders of the basis elements generate minimally the semigroup of orders of <span class="SimpleMath">\(K[[pols]]\)</span>. If an integer <var class="Arg">val</var> is the second argument, then the output is a polynomial in <span class="SimpleMath">\(K[[pols]]\)</span> with order <varclass="Arg">val</var> (<code class="code">fail</code> if there is no such polynomial, that is, <var class="Arg">val</var> is not in the semigroup of values).</p>
<p>The method is explained in <a href="chapBib_mj.html#biBAGSM14">[AGM17]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemigroupOfValuesOfCurve_Global</code>( <var class="Arg">arg</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function admits one or two parameters. In any case, the first is a list of polynomials <var class="Arg">pols</var>. And the second can be the string <var class="Arg">"basis"</var> or an integer <var class="Arg">val</var>.</p>
<p>If only one argument is given, the output is the semigroup of all possible degrees of <span class="SimpleMath">\(K[pols]\)</span> provided that <span class="SimpleMath">\(K[x]/K[pols]\)</span> has finite length. If the second argument <var class="Arg">"basis"</var> is given, then the output is a (reduced) basis of the algebra <span class="SimpleMath">\(K[pols]\)</span> such that the degrees of the basis elements generate minimally the semigroup of degrees of <span class="SimpleMath">\(K[pols]\)</span>. If an integer <var class="Arg">val</var> is the second argument, then the output is a polynomial in <span class="SimpleMath">\(K[pols]\)</span> with degree <var class="Arg">val</var> (<code class="code">fail</code> if there is no such polynomial, that is, <var class="Arg">val</var> is not in the semigroup of values).</p>
<p>The method is explained in <a href="chapBib_mj.html#biBAGSM14">[AGM17]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsModule_Global</code>( <var class="Arg">A</var>, <var class="Arg">M</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">A</var> and <var class="Arg">M</var> are lists of polynomials in the same variable. The output is a basis of the ideal <span class="SimpleMath">\(M K[A]\)</span>, that is, a set <span class="SimpleMath">\(F\)</span> such that <span class="SimpleMath">\(deg(F)\)</span> generates the ideal <span class="SimpleMath">\(deg(M K[A])\)</span> of <span class="SimpleMath">\(deg(K[A])\)</span>, where <span class="SimpleMath">\(deg\)</span> stands for degree. The method is explained in <a href="chapBib_mj.html#biBA-A-GS">[AAG19]</a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsKahlerDifferentials</code>( <var class="Arg">A</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">A</var> is a list of polynomials in the same variable. The output is <var class="Arg">GeneratorsModule_Global(A,M)</var>, with <var class="Arg">M</var> the set of derivatives of the elements in <var class="Arg">A</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsMonomialNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup. Tests whether <var class="Arg">S</var> a monomial numerical semigroup.</p>
<p>Let <span class="SimpleMath">\(R\)</span> a Noetherian ring such that <span class="SimpleMath">\(K \subseteq R \subseteq K[[t]]\)</span>, <span class="SimpleMath">\(K\)</span> is a field of characteristic zero, the algebraic closure of <span class="SimpleMath">\(R\)</span> is <span class="SimpleMath">\(K[[t]]\)</span>, and the conductor <span class="SimpleMath">\((R : K[[t]])\)</span> is not zero. If <span class="SimpleMath">\(v : K((t))\to {\mathbb Z}\)</span> is the natural valuation for <span class="SimpleMath">\(K((t))\)</span>, then <span class="SimpleMath">\(v(R)\)</span> is a numerical semigroup.</p>
<p>Let <span class="SimpleMath">\(S\)</span> be a numerical semigroup minimally generated by <span class="SimpleMath">\(\{n_1,\ldots,n_e\}\)</span>. The semigroup ring associated to <span class="SimpleMath">\(S\)</span> is <span class="SimpleMath">\(K[[S]]=K[[t^{n_1},\ldots,t^{n_e}]]\)</span>. A ring is called a semigroup ring if it is of the form <span class="SimpleMath">\(K[[S]]\)</span>, for some numerical semigroup <span class="SimpleMath">\(S\)</span>. We say that <span class="SimpleMath">\(S\)</span> is a monomial numerical semigroup if for any <span class="SimpleMath">\(R\)</span> as above with <span class="SimpleMath">\(v(R)=S\)</span>, <span class="SimpleMath">\(R\)</span> is a semigroup ring. See <a href="chapBib_mj.html#biBVMic02">[Mic02]</a> for details.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LegendrianGenericNumericalSemigroup</code>( <var class="Arg">n</var>, <var class="Arg">m</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">n</var> and <var class="Arg">m</var> are coprime integers with <span class="SimpleMath">\(\textit{m}\ge 2\textit{n}+1\)</span>. The output is the semigroup of a generic element in the class of irreducible Legendrian singularities with equisingularity equal to the topological type of <span class="SimpleMath">\(y^n=x^m\)</span>, as described in Section 5 of <a href="chapBib_mj.html#biBaraujo-neto">[AN09]</a>.</p>
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.25Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.