| products/Sources/formale Sprachen/GAP/pkg/numericalsgps/doc/chap10.html |
 |
<?xml version= "1.0" encoding= "UTF-8"?>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "en">
< head>
< title>GAP (NumericalSgps) - Chapter 10:
Polynomials and numerical semigroups
</ title>
< meta http-equiv= "content-type" content= "text/html; charset=UTF-8" />
< meta name= "generator" content= "GAPDoc2HTML" />
< link rel= "stylesheet" type= "text/css" href= "manual.css" />
< script src= "manual.js" type= "text/javascript"></ script>
< script type= "text/javascript">overwriteStyle();</ script>
</ head>
< body class= "chap10" onload= "jscontent()">
< div class= "chlinktop">< span class= "chlink1">Goto Chapter: </ span>< a href= "chap0.html">Top</ a> < a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chap7.html">7</a> <a href="chap8.html">8</a> <a href="chap9.html">9</a> <a href="chap10.html">10</a> <a href="chap11.html">11</a> <a href="chap12.html">12</a> <a href="chap13.html">13</a> <a href="chap14.html">14</a> <a href="chapA.html">A</a> <a href="chapB.html">B</a> <a href="chapC.html">C</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap9.html">[Previous Chapter]</a> <a href="chap11.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap10_mj.html">[MathJax on]</a></p>
<p><a id="X7D2C77607815273E" name="X7D2C77607815273E"></a></p>
<div class="ChapSects"><a href="chap10.html#X7D2C77607815273E">10 <span class="Heading">
Polynomials and numerical semigroups
</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap10.html#X808FAEE28572191C">10.1 <span class="Heading">
Generating functions or Hilbert series
</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X8391C8E782FBFA8A">10.1-1 NumericalSemigroupPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7F59E1167C1EE578">10.1-2 IsNumericalSemigroupPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X855497F77D13436F">10.1-3 NumericalSemigroupFromNumericalSemigroupPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X780479F978D166B0">10.1-4 HilbertSeriesOfNumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X87C88E5C7B56931F">10.1-5 GraeffePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X87A46B53815B158F">10.1-6 IsCyclotomicPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7D9618ED83776B0B">10.1-7 IsKroneckerPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X8366BB727C496D31">10.1-8 IsCyclotomicNumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7B428FA2877EC733">10.1-9 CyclotomicExponentSequence</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7A33BA9B813A4070">10.1-10 WittCoefficients</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X82C6355287C3BDD1">10.1-11 IsSelfReciprocalUnivariatePolynomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap10.html#X7EEF2A1781432A2D">10.2 <span class="Heading">
Semigroup of values of algebraic curves
</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7FFF949A7BEEA912">10.2-1 SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X834D6B1A7C421B9F">10.2-2 IsDeltaSequence</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X824ABFD680A34495">10.2-3 DeltaSequencesWithFrobeniusNumber</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X87B819B886CA5A5C">10.2-4 CurveAssociatedToDeltaSequence</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7E2C3E9A7DE7A078">10.2-5 SemigroupOfValuesOfPlaneCurve</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7F88774F7812D30E">10.2-6 SemigroupOfValuesOfCurve_Local</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X8597259279D1E793">10.2-7 SemigroupOfValuesOfCurve_Global</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7EE8528484642CEE">10.2-8 GeneratorsModule_Global</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X836D31F787641C22">10.2-9 GeneratorsKahlerDifferentials</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7A04B8887F493733">10.2-10 IsMonomialNumericalSemigroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap10.html#X84C670E1826F8B92">10.3 <span class="Heading">
Semigroups and Legendrian curves
</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap10.html#X7980A7CE79F09A89">10.3-1 LegendrianGenericNumericalSemigroup</a></span>
</div></div>
</div>
<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>
<p><a id="X808FAEE28572191C" name="X808FAEE28572191C"></a></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)=∑_s∈ Sx^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.html#biBM">[Mor14]</a>.</p>
<p><a id="X8391C8E782FBFA8A" name="X8391C8E782FBFA8A"></a></p>
<h5>10.1-1 NumericalSemigroupPolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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)∑_s∈ N∖ S x^s</span>, which equals <span class="SimpleMath">(1-x)H_S(x)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(5,7,9);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NumericalSemigroupPolynomial(s,x);</span>
x^14-x^13+x^12-x^11+x^9-x^8+x^7-x^6+x^5-x+1
</pre></div>
<p><a id="X7F59E1167C1EE578" name="X7F59E1167C1EE578"></a></p>
<h5>10.1-2 IsNumericalSemigroupPolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(5,6,7,8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=NumericalSemigroupPolynomial(s,x);</span>
x^10-x^9+x^5-x+1
<span class="GAPprompt">gap></span> <span class="GAPinput">IsNumericalSemigroupPolynomial(f);</span>
true
</pre></div>
<p><a id="X855497F77D13436F" name="X855497F77D13436F"></a></p>
<h5>10.1-3 NumericalSemigroupFromNumericalSemigroupPolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(5,6,7,8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=NumericalSemigroupPolynomial(s,x);</span>
x^10-x^9+x^5-x+1
<span class="GAPprompt">gap></span> <span class="GAPinput">NumericalSemigroupFromNumericalSemigroupPolynomial(f)=s;</span>
true
</pre></div>
<p><a id="X780479F978D166B0" name="X780479F978D166B0"></a></p>
<h5>10.1-4 HilbertSeriesOfNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">∑_s∈ S x^s</span>. The series is given as a rational function.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(5,7,9);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HilbertSeriesOfNumericalSemigroup(s,x);</span>
(x^14-x^13+x^12-x^11+x^9-x^8+x^7-x^6+x^5-x+1)/(-x+1)
</pre></div>
<p><a id="X87C88E5C7B56931F" name="X87C88E5C7B56931F"></a></p>
<h5>10.1-5 GraeffePolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBBD-cyclotomic">[BD89]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,1);; SetName(x,"x");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GraeffePolynomial(x^2-1);</span>
x^2-2*x+1
</pre></div>
<p><a id="X87A46B53815B158F" name="X87A46B53815B158F"></a></p>
<h5>10.1-6 IsCyclotomicPolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBBD-cyclotomic">[BD89]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclotomicPolynomial(Rationals,3);</span>
x^2+x+1
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCyclotomicPolynomial(last);</span>
true
</pre></div>
<p><a id="X7D9618ED83776B0B" name="X7D9618ED83776B0B"></a></p>
<h5>10.1-7 IsKroneckerPolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBBD-cyclotomic">[BD89]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"> s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"> t:=NumericalSemigroup(4,6,9);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=NumericalSemigroupPolynomial(s,x);</span>
x^5-x^4+x^3-x+1
<span class="GAPprompt">gap></span> <span class="GAPinput">q:=NumericalSemigroupPolynomial(t,x);</span>
x^12-x^11+x^8-x^7+x^6-x^5+x^4-x+1
<span class="GAPprompt">gap></span> <span class="GAPinput">IsKroneckerPolynomial(p);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsKroneckerPolynomial(q);</span>
true
</pre></div>
<p><a id="X8366BB727C496D31" name="X8366BB727C496D31"></a></p>
<h5>10.1-8 IsCyclotomicNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">l:=CompleteIntersectionNumericalSemigroupsWithFrobeniusNumber(21);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ForAll(l,IsCyclotomicNumericalSemigroup);</span>
true
</pre></div>
<p><a id="X7B428FA2877EC733" name="X7B428FA2877EC733"></a></p>
<h5>10.1-9 CyclotomicExponentSequence</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclotomicExponentSequence(s,20);</span>
[ 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclotomicExponentSequence(s,20);</span>
[ 1, 0, -1, 0, -1, 0, -1, 0, 0, 1, 0, 1, 0, 1, 0, 0, -1, 0, -1, 0 ]
</pre></div>
<p><a id="X7A33BA9B813A4070" name="X7A33BA9B813A4070"></a></p>
<h5>10.1-10 WittCoefficients</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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)=∏_n≥ 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,...,e_k]</span>, and it is computed by using <a href="chapBib.html#biBC-GS-HP-M">[CGHM19]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p:=NumericalSemigroupPolynomial(s,x);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">WittCoefficients(p,20);</span>
[ 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ]
</pre></div>
<p>The difference with this example and the one in <code class="func">CyclotomicExponentSequence</code> (<a href="chap10.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>
<p><a id="X82C6355287C3BDD1" name="X82C6355287C3BDD1"></a></p>
<h5>10.1-11 IsSelfReciprocalUnivariatePolynomial</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBM">[Mor14]</a>. The current implementation is due to A. Herrera-Poyatos.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">l:=IrreducibleNumericalSemigroupsWithFrobeniusNumber(13);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ForAll(l, s-></span>
<span class="GAPprompt">></span> <span class="GAPinput">IsSelfReciprocalUnivariatePolynomial(NumericalSemigroupPolynomial(s,x)));</span>
true
</pre></div>
<p><a id="X7EEF2A1781432A2D" name="X7EEF2A1781432A2D"></a></p>
<h4>10.2 <span class="Heading">
Semigroup of values of algebraic curves
</span></h4>
<p>Let <span class="SimpleMath">f(x,y)∈ K[x,y]</span>, with <span class="SimpleMath">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">K[x][y]</span>. After possibly a change of variables, we may assume that, that <span class="SimpleMath">deg_x(a_i(x))≤ i-1</span> for all <span class="SimpleMath">i∈{1,..., n}</span>. For <span class="SimpleMath">g∈ K[x,y]</span> that is not a multiple of <span class="SimpleMath">f</span>, define <span class="SimpleMath">mathrmint(f,g)=dim_ K frac K[x,y](f,g)</span>. If <span class="SimpleMath">f</span> has one place at infinity, then the set <span class="SimpleMath">{mathrmint(f,g)∣ g∈ K[x,y]∖(f)}</span> is a free numerical semigroup (and thus a complete intersection).</p>
<p><a id="X7FFF949A7BEEA912" name="X7FFF949A7BEEA912"></a></p>
<h5>10.2-1 SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">{mathrmint(f,g)∣ g∈ K[x,y]∖(f)}</span>, where <span class="SimpleMath">mathrmint(f,g)=dim_ K ( 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">δ</span>-sequence and approximate roots of <var class="Arg">f</var>. The method is explained in <a href="chapBib.html#biBAGS14">[AG16a]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,1);; SetName(x,"x");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">y:=Indeterminate(Rationals,2);; SetName(y,"y");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=((y^3-x^2)^2-x*y^2)^4-(y^3-x^2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity(f,"all");</span>
[ [ 24, 16, 28, 7 ], [ y, y^3-x^2, y^6-2*x^2*y^3+x^4-x*y^2 ] ]
</pre></div>
<p><a id="X834D6B1A7C421B9F" name="X834D6B1A7C421B9F"></a></p>
<h5>10.2-2 IsDeltaSequence</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">δ</span>-sequence if <span class="SimpleMath">gcd(a_0,..., a_h)=1</span>, <span class="SimpleMath">⟨ a_0,⋯, a_s⟩</span> is free, <span class="SimpleMath">a_kD_k > a_k+1D_k+1</span> and <span class="SimpleMath">a_0> a_1 > D_2 > D_3 > ... > 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">δ</span>-sequence generates a numerical semigroup that is the semigroup of values of a plane curve with one place at infinity.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsDeltaSequence([24,16,28,7]);</span>
true
</pre></div>
<p><a id="X824ABFD680A34495" name="X824ABFD680A34495"></a></p>
<h5>10.2-3 DeltaSequencesWithFrobeniusNumber</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">δ</span>-sequences generating numerical semigroups with Frobenius number <var class="Arg">f</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DeltaSequencesWithFrobeniusNumber(21);</span>
[ [ 8, 6, 11 ], [ 10, 4, 15 ], [ 12, 8, 6, 11 ], [ 14, 4, 11 ],
[ 15, 10, 4 ], [ 23, 2 ] ]
</pre></div>
<p><a id="X87B819B886CA5A5C" name="X87B819B886CA5A5C"></a></p>
<h5>10.2-4 CurveAssociatedToDeltaSequence</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">δ</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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CurveAssociatedToDeltaSequence([24,16,28,7]);</span>
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^\
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\
*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\
*y^4+8*x^5*y^9-4*x^7*y^6+x^4*y^8-y^3+x^2
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfPlaneCurveWithSinglePlaceAtInfinity(last,"all");</span>
[ [ 24, 16, 28, 7 ], [ y, y^3-x^2, y^6-2*x^2*y^3+x^4-x*y^2 ] ]
</pre></div>
<p><a id="X7E2C3E9A7DE7A078" name="X7E2C3E9A7DE7A078"></a></p>
<h5>10.2-5 SemigroupOfValuesOfPlaneCurve</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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">{mathrmint(f,g)∣ g∈ K[x,y]∖(f)}</span>, where <span class="SimpleMath">mathrmint(f,g)=dim_ K ( 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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=X(Rationals,"x");; y:=X(Rationals,"y");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:= y^4-2*x^3*y^2-4*x^5*y+x^6-x^7;</span>
-x^7+x^6-4*x^5*y-2*x^3*y^2+y^4
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfPlaneCurve(f);</span>
<Numerical semigroup with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGenerators(last);</span>
[ 4, 6, 13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=(y^4-2*x^3*y^2-4*x^5*y+x^6-x^7)*(y^2-x^3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfPlaneCurve(f);</span>
<Good semigroup>
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGenerators(last);</span>
[ [ 4, 2 ], [ 6, 3 ], [ 13, 15 ], [ 29, 13 ] ]
</pre></div>
<p><a id="X7F88774F7812D30E" name="X7F88774F7812D30E"></a></p>
<h5>10.2-6 SemigroupOfValuesOfCurve_Local</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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 <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.html#biBAGSM14">[AGM17]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13]);</span>
<Numerical semigroup with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGeneratingSystem(last);</span>
[ 4, 6, 13, 15 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13], "basis");</span>
[ x^4, x^7+x^6, x^13, x^15 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Local([x^4,x^6+x^7,x^13], 20);</span>
x^20
</pre></div>
<p><a id="X8597259279D1E793" name="X8597259279D1E793"></a></p>
<h5>10.2-7 SemigroupOfValuesOfCurve_Global</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBAGSM14">[AGM17]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,"x");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13]);</span>
<Numerical semigroup with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGeneratingSystem(last);</span>
[ 4, 7, 13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],"basis");</span>
[ x^4, x^7+x^6, x^13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],12);</span>
x^12
<span class="GAPprompt">gap></span> <span class="GAPinput">SemigroupOfValuesOfCurve_Global([x^4,x^6+x^7,x^13],6);</span>
fail
</pre></div>
<p><a id="X7EE8528484642CEE" name="X7EE8528484642CEE"></a></p>
<h5>10.2-8 GeneratorsModule_Global</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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.html#biBA-A-GS">[AAG19]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:=Indeterminate(Rationals,"t");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A:=[t^6+t,t^4];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">M:=[t^3,t^4];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsModule_Global(A,M);</span>
[ t^3, t^4, t^5, t^6 ]
</pre></div>
<p><a id="X836D31F787641C22" name="X836D31F787641C22"></a></p>
<h5>10.2-9 GeneratorsKahlerDifferentials</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:=Indeterminate(Rationals,"t");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsKahlerDifferentials([t^3,t^4]);</span>
[ t^2, t^3 ]
</pre></div>
<p><a id="X7A04B8887F493733" name="X7A04B8887F493733"></a></p>
<h5>10.2-10 IsMonomialNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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 ⊆ R ⊆ 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))-> 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,...,n_e}</span>. The semigroup ring associated to <span class="SimpleMath">S</span> is <span class="SimpleMath">K[[S]]=K[[t^n_1,...,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.html#biBVMic02">[Mic02]</a> for details.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,7));</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonomialNumericalSemigroup(NumericalSemigroup(4,6,11));</span>
false
</pre></div>
<p><a id="X84C670E1826F8B92" name="X84C670E1826F8B92"></a></p>
<h4>10.3 <span class="Heading">
Semigroups and Legendrian curves
</span></h4>
<p><a id="X7980A7CE79F09A89" name="X7980A7CE79F09A89"></a></p>
<h5>10.3-1 LegendrianGenericNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; 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"><var class="Arg">m</var>≥ 2<var class="Arg">n</var>+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.html#biBaraujo-neto">[AN09]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=LegendrianGenericNumericalSemigroup(5,11);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallElements(s);</span>
[ 0, 5, 6, 10, 11, 12, 13, 15 ]
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap9.html">[Previous Chapter]</a> <a href="chap11.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chap7.html">7</a> <a href="chap8.html">8</a> <a href="chap9.html">9</a> <a href="chap10.html">10</a> <a href="chap11.html">11</a> <a href="chap12.html">12</a> <a href="chap13.html">13</a> <a href="chap14.html">14</a> <a href="chapA.html">A</a> <a href="chapB.html">B</a> <a href="chapC.html">C</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>
¤ Dauer der Verarbeitung: 0.5 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland
|
|