SSL chap3_mj.html
Sprache: HTML
|
|
| products/Sources/formale Sprachen/GAP/pkg/numericalsgps/doc/chap3_mj.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>
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (NumericalSgps) - Chapter 3:
Basic operations with 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="chap3" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chap10_mj.html">10</a> <a href="chap11_mj.html">11</a> <a href="chap12_mj.html">12</a> <a href="chap13_mj.html">13</a> <a href="chap14_mj.html">14</a> <a href="chapA_mj.html">A</a> <a href="chapB_mj.html">B</a> <a href="chapC_mj.html">C</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap2_mj.html">[Previous Chapter]</a> <a href="chap4_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap3.html">[MathJax off]</a></p>
<p><a id="X7A9D13C778697F6C" name="X7A9D13C778697F6C"></a></p>
<div class="ChapSects"><a href="chap3_mj.html#X7A9D13C778697F6C">3 <span class="Heading">
Basic operations with numerical semigroups
</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3_mj.html#X87AF9D4F7FD9E820">3.1 <span class="Heading">
Invariants
</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X80D23F08850A8ABD">3.1-1 Multiplicity</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X850F430A8284DF9A">3.1-2 Generators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7884AE27790E687F">3.1-3 EmbeddingDimension</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X84A6B16E8113167B">3.1-4 SmallElements</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7A56569F853DADED">3.1-5 Length</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7F0EDFA77F929120">3.1-6 FirstElementsOfNumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7D2B3AA9823371AE">3.1-7 ElementsUpTo</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X81A2505E8120F4D7"><code>3.1-8 <span>\</span>[ <span>\</span>]</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7A34F16F8112C2B5"><code>3.1-9 \{ \}</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X84345D5E7CAA9B77">3.1-10 NextElementOfNumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7B6C82DD86E5422F">3.1-11 ElementNumber_NumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X78F4A7A7797E26D4">3.1-12 NumberElement_NumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X867ABF7C7991ED7C">3.1-13 Iterator</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7E6F5D6F7B0C9635">3.1-14 Difference</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7CB24F5E84793BE1">3.1-15 AperyList</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X80431F487C71D67B">3.1-16 AperyList</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7D06B00D7C305C64">3.1-17 AperyList</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X8022CC477E9BF678">3.1-18 AperyListOfNumericalSemigroupAsGraph</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X80B398537887FD87">3.1-19 KunzCoordinates</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7C21E5417A3894EC">3.1-20 KunzPolytope</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7802096584D32795">3.1-21 CocycleOfNumericalSemigroupWRTElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X847BAD9480D186C0">3.1-22 FrobeniusNumber</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X835C729D7D8B1B36">3.1-23 Conductor</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X861DED207A2B5419">3.1-24 PseudoFrobenius</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X865E2E12804CFCD3">3.1-25 Type</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X8688B1837E4BC079">3.1-26 Gaps</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7F71983880DF4B9D">3.1-27 Weight</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7EB81BF886DDA29A">3.1-28 Deserts</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X82B1868F7A780B49">3.1-29 IsOrdinary</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X83D4AFE882A79096">3.1-30 IsAcute</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7CCFC5267FD27DDE">3.1-31 Holes</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X794E615F85C2AAB0">3.1-32 LatticePathAssociatedToNumericalSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7E9C8E157C4EAAB0">3.1-33 Genus</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X7EC438CC7BF539D0">3.1-34 FundamentalGaps</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap3_mj.html#X803D550C78717A7C">3.1-35 SpecialGaps</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3_mj.html#X7EE22CA979CCAAB9">3.2 <span class="Heading">Wilf's conjecture
</ span>
< div class= "ContSSBlock">
< span class= "ContSS">< br />< span class= "nocss"> </ span><a href= "chap3_mj.html#X78C2F4C77FB096F0">3.2-1 WilfNumber</a></ span>
< span class= "ContSS">< br />< span class= "nocss"> </ span><a href= "chap3_mj.html#X80F9EC9A7BF4E606">3.2-2 EliahouNumber</a></ span>
< span class= "ContSS">< br />< span class= "nocss"> </ span><a href= "chap3_mj.html#X7B45623E7D539CB6">3.2-3 ProfileOfNumericalSemigroup</a></ span>
< span class= "ContSS">< br />< span class= "nocss"> </ span><a href= "chap3_mj.html#X7846F90E7EA43C47">3.2-4 EliahouSlicesOfNumericalSemigroup</a></ span>
</ div></ div>
</ div>
<h3>3 < span class= "Heading">
Basic operations with numerical semigroups
</ span></h3>
<p>This chapter describes some basic functions to deal with notable elements in a numerical semi group. A section including functions to test Wilf's conjecture is also included in this chapter. We provide some functions that allow to treat a numerical semigroup as a list, and thus easy the task to access to its elements.
<p><a id="X87AF9D4F7FD9E820" name="X87AF9D4F7FD9E820"></a></p>
<h4>3.1 <span class="Heading">
Invariants
</span></h4>
<p>In this section we present formulas to compute invariants and notable elements of a numerical semigroup. Some tests depending on these invariants are provided here, like being an acute or an ordinary numerical semigroup. We also present procedures to construct iterators from a numerical semigroup, or to retrieve several elements from a numerical semigroup as if it were a list (with infinitely many elements).</p>
<p><a id="X80D23F08850A8ABD" name="X80D23F08850A8ABD"></a></p>
<h5>3.1-1 Multiplicity</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Multiplicity</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MultiplicityOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><var class="Arg">NS</var> is a numerical semigroup. Returns the multiplicity of <var class="Arg">NS</var>, which is the smallest positive integer belonging to <var class="Arg">NS</var>. Depending on the information known about <var class="Arg">NS</var>, different methods are implemented. There are methods for the following cases: generators are known, Apéry set is known, it is a modular numerical semigroup, or it is proportionally modular (and thus is defined by a closed interval <a href="chapBib_mj.html#biBRosalesVasco2008MIA">[RV08]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">NumericalSemigroup(3,5);</span>
<Numerical semigroup with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Multiplicity(last);</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 7,53);</span>
<Modular numerical semigroup satisfying 7x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">MultiplicityOfNumericalSemigroup(S);</span>
8
</pre></div>
<p><a id="X850F430A8284DF9A" name="X850F430A8284DF9A"></a></p>
<h5>3.1-2 Generators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Generators</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneratorsOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MinimalGenerators</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MinimalGeneratingSystemOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MinimalGeneratingSystem</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup. <code class="code">GeneratorsOfNumericalSemigroup</code> returns a set of generators of <code class="code">S</code>, which may not be minimal. The shorter name <code class="code">Generators</code> may be used. <code class="code">MinimalGeneratingSystemOfNumericalSemigroup</code> returns the minimal set of generators of <code class="code">S</code>. The shorter names <code class="code">MinimalGenerators</code> or <code class="code">MinimalGeneratingSystem</code> may be used.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">Generators(S);</span>
[ 11, 12, 13, 32, 53 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(3, 5, 53);</span>
<Numerical semigroup with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfNumericalSemigroup(S);</span>
[ 3, 5, 53 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGenerators(S);</span>
[ 3, 5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGeneratingSystemOfNumericalSemigroup(S);</span>
[ 3, 5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGeneratingSystem(S)=MinimalGeneratingSystemOfNumericalSemigroup(S);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">s := NumericalSemigroup(3,5,7,15);</span>
<Numerical semigroup with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">HasGenerators(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">HasMinimalGenerators(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGenerators(s);</span>
[ 3, 5, 7 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Generators(s);</span>
[ 3, 5, 7, 15 ]
</pre></div>
<p><a id="X7884AE27790E687F" name="X7884AE27790E687F"></a></p>
<h5>3.1-3 EmbeddingDimension</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EmbeddingDimension</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EmbeddingDimensionOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">NS</code> is a numerical semigroup. It returns the cardinality of its minimal generating system.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := NumericalSemigroup(3,5,7,15);</span>
<Numerical semigroup with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">EmbeddingDimension(s);</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">EmbeddingDimensionOfNumericalSemigroup(s);</span>
3
</pre></div>
<p><a id="X84A6B16E8113167B" name="X84A6B16E8113167B"></a></p>
<h5>3.1-4 SmallElements</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SmallElements</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SmallElementsOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">NS</code> is a numerical semigroup. It returns the list of small elements of <code class="code">NS</code>. Of course, the time consumed to return a result may depend on the way the semigroup is given.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallElements(NumericalSemigroup(3,5,7));</span>
[ 0, 3, 5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallElementsOfNumericalSemigroup(NumericalSemigroup(3,5,7));</span>
[ 0, 3, 5 ]
</pre></div>
<p><a id="X7A56569F853DADED" name="X7A56569F853DADED"></a></p>
<h5>3.1-5 Length</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Length</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">NS</code> is a numerical semigroup. It returns the number of small elements of <code class="code">NS</code> below the conductor. This corresponds with the length of the semigroup ring modulo the conductor ideal. See also <code class="func">LengthOfGoodSemigroup</code> (<a href="chap12_mj.html#X81BD57ED80145EB0"><span class="RefLink">12.2-14</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(NumericalSemigroup(3,5,7));</span>
2
</pre></div>
<p><a id="X7F0EDFA77F929120" name="X7F0EDFA77F929120"></a></p>
<h5>3.1-6 FirstElementsOfNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FirstElementsOfNumericalSemigroup</code>( <var class="Arg">n</var>, <var class="Arg">NS</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="code">NS</code> is a numerical semigroup. It returns the list with the first <var class="Arg">n</var> elements of <code class="code">NS</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">FirstElementsOfNumericalSemigroup(2,NumericalSemigroup(3,5,7));</span>
[ 0, 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">FirstElementsOfNumericalSemigroup(10,NumericalSemigroup(3,5,7));</span>
[ 0, 3, 5, 6, 7, 8, 9, 10, 11, 12 ]
</pre></div>
<p><a id="X7D2B3AA9823371AE" name="X7D2B3AA9823371AE"></a></p>
<h5>3.1-7 ElementsUpTo</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementsUpTo</code>( <var class="Arg">NS</var>, <var class="Arg">b</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">NS</var> is a numerical semigroup, <var class="Arg">b</var> a positve integer. It returns the set of elements of <var class="Arg">NS</var> up to <var class="Arg">b</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ns := NumericalSemigroup(5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallElements(ns);</span>
[ 0, 5, 7, 10, 12, 14, 15, 17, 19, 20, 21, 22, 24 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ElementsUpTo(ns,18);</span>
[ 0, 5, 7, 10, 12, 14, 15, 17 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ElementsUpTo(ns,27);</span>
[ 0, 5, 7, 10, 12, 14, 15, 17, 19, 20, 21, 22, 24, 25, 26, 27 ]
</pre></div>
<p><a id="X81A2505E8120F4D7" name="X81A2505E8120F4D7"></a></p>
<h5><code>3.1-8 <span>\</span>[ <span>\</span>]</code></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ <span>\</span>[ <span>\</span>]</code>( <var class="Arg">S</var>, <var class="Arg">r</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">r</var> is an integer. It returns the <var class="Arg">r</var>-th element of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S[53];</span>
68
</pre></div>
<p><a id="X7A34F16F8112C2B5" name="X7A34F16F8112C2B5"></a></p>
<h5><code>3.1-9 \{ \}</code></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \{ \}</code>( <var class="Arg">S</var>, <var class="Arg">ls</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">ls</var> is a list of integers. It returns the list <var class="Arg">[S[r] : r in ls]</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">S{[1..5]};</span>
[ 0, 7, 8, 14, 15 ]
</pre></div>
<p><a id="X84345D5E7CAA9B77" name="X84345D5E7CAA9B77"></a></p>
<h5>3.1-10 NextElementOfNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NextElementOfNumericalSemigroup</code>( <var class="Arg">S</var>, <var class="Arg">r</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">r</var> is an integer. It returns the returns the least integer greater than <var class="Arg">r</var> belonging to <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NextElementOfNumericalSemigroup(S,9);</span>
14
<span class="GAPprompt">gap></span> <span class="GAPinput">NextElementOfNumericalSemigroup(16,S);</span>
17
<span class="GAPprompt">gap></span> <span class="GAPinput">NextElementOfNumericalSemigroup(S,FrobeniusNumber(S))=Conductor(S);</span>
true
</pre></div>
<p><a id="X7B6C82DD86E5422F" name="X7B6C82DD86E5422F"></a></p>
<h5>3.1-11 ElementNumber_NumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementNumber_NumericalSemigroup</code>( <var class="Arg">S</var>, <var class="Arg">r</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RthElementOfNumericalSemigroup</code>( <var class="Arg">S</var>, <var class="Arg">r</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">r</var> is an integer. Both functions (which are like synonyms) return the <var class="Arg">r</var>-th element of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ElementNumber_NumericalSemigroup(S,53);</span>
68
<span class="GAPprompt">gap></span> <span class="GAPinput">RthElementOfNumericalSemigroup(S,53);</span>
68
</pre></div>
<p><a id="X78F4A7A7797E26D4" name="X78F4A7A7797E26D4"></a></p>
<h5>3.1-12 NumberElement_NumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumberElement_NumericalSemigroup</code>( <var class="Arg">S</var>, <var class="Arg">r</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">r</var> is an integer. It returns the position of <var class="Arg">r</var> in <var class="Arg">S</var> (and <code class="code">fail</code> if the integer is not in the semigroup).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NumberElement_NumericalSemigroup(S,68);</span>
53
</pre></div>
<p><a id="X867ABF7C7991ED7C" name="X867ABF7C7991ED7C"></a></p>
<h5>3.1-13 Iterator</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Iterator</code>( <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup. It returns an iterator over <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup(7,8,17);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">iter:=Iterator(S);</span>
<iterator>
<span class="GAPprompt">gap></span> <span class="GAPinput">NextIterator(iter);</span>
0
<span class="GAPprompt">gap></span> <span class="GAPinput">NextIterator(iter);</span>
7
<span class="GAPprompt">gap></span> <span class="GAPinput">NextIterator(iter);</span>
8
</pre></div>
<p><a id="X7E6F5D6F7B0C9635" name="X7E6F5D6F7B0C9635"></a></p>
<h5>3.1-14 Difference</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Difference</code>( <var class="Arg">S</var>, <var class="Arg">T</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DifferenceOfNumericalSemigroups</code>( <var class="Arg">S</var>, <var class="Arg">T</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">S, T</var> are numerical semigroups. The output is the set <span class="SimpleMath">\(\textit{S}\setminus \textit{T}\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ns1 := NumericalSemigroup(5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ns2 := NumericalSemigroup(7,11,12);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Difference(ns1,ns2);</span>
[ 5, 10, 15, 17, 20, 27 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Difference(ns2,ns1);</span>
[ 11, 18, 23 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">DifferenceOfNumericalSemigroups(ns2,ns1);</span>
[ 11, 18, 23 ]
</pre></div>
<p><a id="X7CB24F5E84793BE1" name="X7CB24F5E84793BE1"></a></p>
<h5>3.1-15 AperyList</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyList</code>( <var class="Arg">S</var>, <var class="Arg">n</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyListOfNumericalSemigroupWRTElement</code>( <var class="Arg">S</var>, <var class="Arg">n</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">n</var> is a positive element of <var class="Arg">S</var>. Computes the Apéry list of <var class="Arg">S</var> with respect to <var class="Arg">n</var>. It contains for every <span class="SimpleMath">\(i\in \{0,\ldots,\textit{n}-1\}\)</span>, in the <span class="SimpleMath">\(i+1\)</span>th position, the smallest element in the semigroup congruent with <span class="SimpleMath">\(i\)</span> modulo <var class="Arg">n</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyList(S,12);</span>
[ 0, 13, 26, 39, 52, 53, 54, 43, 32, 33, 22, 11 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupWRTElement(S,12);</span>
[ 0, 13, 26, 39, 52, 53, 54, 43, 32, 33, 22, 11 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">First(S,x-> x mod 12 =1);</span>
13
</pre></div>
<p><a id="X80431F487C71D67B" name="X80431F487C71D67B"></a></p>
<h5>3.1-16 AperyList</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyList</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyListOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup. It computes the Apéry list of <var class="Arg">S</var> with respect to the multiplicity of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyList(NumericalSemigroup(5,7,11));</span>
[ 0, 11, 7, 18, 14 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroup(S);</span>
[ 0, 12, 13, 25, 26, 38, 39, 51, 52, 53, 32 ]
</pre></div>
<p><a id="X7D06B00D7C305C64" name="X7D06B00D7C305C64"></a></p>
<h5>3.1-17 AperyList</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyList</code>( <var class="Arg">S</var>, <var class="Arg">m</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyListOfNumericalSemigroupWRTInteger</code>( <var class="Arg">S</var>, <var class="Arg">m</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup and <var class="Arg">m</var> is an integer. Computes the Apéry list of <var class="Arg">S</var> with respect to <var class="Arg">m</var>, that is, the set of elements <span class="SimpleMath">\(x\)</span> in <var class="Arg">S</var> such that <span class="SimpleMath">\(x-\)</span><var class="Arg">m</var> is not in <var class="Arg">S</var>. If <var class="Arg">m</var> is an element in <var class="Arg">S</var>, then the output of <code class="code">AperyListOfNumericalSemigroupWRTInteger</code>, as sets, is the same as <code class="code">AperyListOfNumericalSemigroupWRTElement</code>, though without side effects, in the sense that this information is no longer used by the package. The output of <code class="code">AperyList</code> is the same as <code class="code">AperyListOfNumericalSemigroupWRTInteger</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(10,13,19,27);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyList(s,11);</span>
[ 0, 10, 13, 19, 20, 23, 26, 27, 29, 32, 33, 36, 39, 42, 45, 46, 52, 55 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupWRTInteger(s,11);</span>
[ 0, 10, 13, 19, 20, 23, 26, 27, 29, 32, 33, 36, 39, 42, 45, 46, 52, 55 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(last);</span>
18
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupWRTInteger(s,10);</span>
[ 0, 13, 19, 26, 27, 32, 38, 45, 51, 54 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupWRTElement(s,10);</span>
[ 0, 51, 32, 13, 54, 45, 26, 27, 38, 19 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyList(s,10);</span>
[ 0, 51, 32, 13, 54, 45, 26, 27, 38, 19 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(last);</span>
10
</pre></div>
<p><a id="X8022CC477E9BF678" name="X8022CC477E9BF678"></a></p>
<h5>3.1-18 AperyListOfNumericalSemigroupAsGraph</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AperyListOfNumericalSemigroupAsGraph</code>( <var class="Arg">ap</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">ap</var> is the Apéry list of a numerical semigroup. This function returns the adjacency list of the graph <span class="SimpleMath">\((ap, E)\)</span> where the edge <span class="SimpleMath">\(u -> v\)</span> is in <span class="SimpleMath">\(E\)</span> iff <span class="SimpleMath">\(v - u\)</span> is in <span class="SimpleMath">\(ap\)</span>. The 0 is ignored.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupWRTElement(s,10);</span>
[ 0, 21, 12, 3, 14, 15, 6, 7, 18, 9 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AperyListOfNumericalSemigroupAsGraph(last);</span>
[ ,, [ 3, 6, 9, 12, 15, 18, 21 ],,, [ 6, 9, 12, 15, 18, 21 ],
[ 7, 14, 21 ],, [ 9, 12, 15, 18, 21 ],,, [ 12, 15, 18, 21 ],,
[ 14, 21 ], [ 15, 18, 21 ],,, [ 18, 21 ],,, [ 21 ] ]
</pre></div>
<p><a id="X80B398537887FD87" name="X80B398537887FD87"></a></p>
<h5>3.1-19 KunzCoordinates</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ KunzCoordinates</code>( <var class="Arg">S</var>[, <var class="Arg">m</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ KunzCoordinatesOfNumericalSemigroup</code>( <var class="Arg">S</var>[, <var class="Arg">m</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup, and <var class="Arg">m</var> is a nonzero element of <var class="Arg">S</var>. The second argument is optional, and if missing it is assumed to be the multiplicity of <var class="Arg">S</var>.</p>
<p>Then the Apéry set of <var class="Arg">m</var> in <var class="Arg">S</var> has the form <span class="SimpleMath">\([0,k_1m+1,...,k_{m-1}m+m-1]\)</span>, and the output is the <span class="SimpleMath">\((m-1)\)</span>-uple <span class="SimpleMath">\([k_1,k_2,...,k_{m-1}]\)</span></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);</span>
<Numerical semigroup with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">KunzCoordinates(s);</span>
[ 2, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">KunzCoordinatesOfNumericalSemigroup(s);</span>
[ 2, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">KunzCoordinates(s,5);</span>
[ 1, 1, 0, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">KunzCoordinatesOfNumericalSemigroup(s,5);</span>
[ 1, 1, 0, 1 ]
</pre></div>
<p><a id="X7C21E5417A3894EC" name="X7C21E5417A3894EC"></a></p>
<h5>3.1-20 KunzPolytope</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ KunzPolytope</code>( <var class="Arg">m</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">m</var> is a positive integer.</p>
<p>The Kunz coordinates of the semigroups with multiplicity <var class="Arg">m</var> are solutions of a system of inequalities <span class="SimpleMath">\(Ax\ge b\)</span> (see <a href="chapBib_mj.html#biBR-GS-GG-B">[CAGB02]</a>). The output is the matrix <span class="SimpleMath">\((A|-b)\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">KunzPolytope(3);</span>
[ [ 1, 0, -1 ], [ 0, 1, -1 ], [ 2, -1, 0 ], [ -1, 2, 1 ] ]
</pre></div>
<p><a id="X7802096584D32795" name="X7802096584D32795"></a></p>
<h5>3.1-21 CocycleOfNumericalSemigroupWRTElement</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CocycleOfNumericalSemigroupWRTElement</code>( <var class="Arg">S</var>, <var class="Arg">m</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">S</var> is a numerical semigroup, and <var class="Arg">m</var> is a nonzero element of <var class="Arg">S</var>. The output is the matrix <span class="SimpleMath">\(h(i,j)=(w(i)+w(j)-w((i+j)\bmod m))/m\)</span>, where <span class="SimpleMath">\(w(i)\)</span> is the smallest element in <var class="Arg">S</var> congruent with <span class="SimpleMath">\(i\)</span> modulo <span class="SimpleMath">\(m\)</span> (and thus it is in the Apéry set of <span class="SimpleMath">\(m\)</span>), <a href="chapBib_mj.html#biBarf-frob-gen">[GHKR17]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CocycleOfNumericalSemigroupWRTElement(s,3);</span>
[ [ 0, 0, 0 ], [ 0, 3, 4 ], [ 0, 4, 1 ] ]
</pre></div>
<p><a id="X847BAD9480D186C0" name="X847BAD9480D186C0"></a></p>
<h5>3.1-22 FrobeniusNumber</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FrobeniusNumber</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FrobeniusNumberOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The largest nonnegative integer not belonging to a numerical semigroup <span class="SimpleMath">\(S\)</span> is the <em>Frobenius number</em> of <span class="SimpleMath">\(S\)</span>. If <span class="SimpleMath">\(S\)</span> is the set of nonnegative integers, then clearly its Frobenius number is <span class="SimpleMath">\(-1\)</span>, otherwise its Frobenius number coincides with the maximum of the gaps (or fundamental gaps) of <span class="SimpleMath">\(S\)</span>.</p>
<p><code class="code">NS</code> is a numerical semigroup. It returns the Frobenius number of <code class="code">NS</code>. Of course, the time consumed to return a result may depend on the way the semigroup is given or on the knowledge already produced on the semigroup.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">FrobeniusNumber(NumericalSemigroup(3,5,7));</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">FrobeniusNumberOfNumericalSemigroup(NumericalSemigroup(3,5,7));</span>
4
</pre></div>
<p><a id="X835C729D7D8B1B36" name="X835C729D7D8B1B36"></a></p>
<h5>3.1-23 Conductor</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Conductor</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ConductorOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>This is just a synonym of <code class="code"> FrobeniusNumberOfNumericalSemigroup</code> (<code class="code">NS</code>)<span class="SimpleMath">\(+1\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Conductor(NumericalSemigroup(3,5,7));</span>
5
<span class="GAPprompt">gap></span> <span class="GAPinput">ConductorOfNumericalSemigroup(NumericalSemigroup(3,5,7));</span>
5
</pre></div>
<p><a id="X861DED207A2B5419" name="X861DED207A2B5419"></a></p>
<h5>3.1-24 PseudoFrobenius</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PseudoFrobenius</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PseudoFrobeniusOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>An integer <span class="SimpleMath">\(z\)</span> is a <em>pseudo-Frobenius number</em> of <span class="SimpleMath">\(S\)</span> if <span class="SimpleMath">\(z+S\setminus\{0\}\subseteq S\)</span>.</p>
<p><code class="code">S</code> is a numerical semigroup. It returns the set of pseudo-Frobenius numbers of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">PseudoFrobenius(S);</span>
[ 21, 40, 41, 42 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">PseudoFrobeniusOfNumericalSemigroup(S);</span>
[ 21, 40, 41, 42 ]
</pre></div>
<p><a id="X865E2E12804CFCD3" name="X865E2E12804CFCD3"></a></p>
<h5>3.1-25 Type</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Type</code>( <var class="Arg">NS</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TypeOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Stands for <code class="code">Length(PseudoFrobeniusOfNumericalSemigroup (NS))</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">Type(S);</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">TypeOfNumericalSemigroup(S);</span>
4
</pre></div>
<p><a id="X8688B1837E4BC079" name="X8688B1837E4BC079"></a></p>
<h5>3.1-26 Gaps</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Gaps</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GapsOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>A <em>gap</em> of a numerical semigroup <span class="SimpleMath">\(S\)</span> is a nonnegative integer not belonging to <span class="SimpleMath">\(S\)</span>. <code class="code">NS</code> is a numerical semigroup. Both return the set of gaps of <code class="code">NS</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Gaps(NumericalSemigroup(5,7,11));</span>
[ 1, 2, 3, 4, 6, 8, 9, 13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">GapsOfNumericalSemigroup(NumericalSemigroup(3,5,7));</span>
[ 1, 2, 4 ]
</pre></div>
<p><a id="X7F71983880DF4B9D" name="X7F71983880DF4B9D"></a></p>
<h5>3.1-27 Weight</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Weight</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>If <span class="SimpleMath">\(l_1<\cdots <l_g\)</span> are the gaps of <code class="code">NS</code>, then its (Weierstrass) weight is <span class="SimpleMath">\(\sum_{i=1}^g (l_i-i)\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Weight(NumericalSemigroup(4,5,6,7));</span>
0
<span class="GAPprompt">gap></span> <span class="GAPinput">Weight(NumericalSemigroup(4,5)); </span>
9
</pre></div>
<p><a id="X7EB81BF886DDA29A" name="X7EB81BF886DDA29A"></a></p>
<h5>3.1-28 Deserts</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Deserts</code>( <var class="Arg">NS</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DesertsOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">NS</var> is a numerical semigroup. The output is the list with the runs of gaps of <var class="Arg">NS</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Deserts(s);</span>
[ [ 1, 2 ], [ 4 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">DesertsOfNumericalSemigroup(s);</span>
[ [ 1, 2 ], [ 4 ] ]
</pre></div>
<p><a id="X82B1868F7A780B49" name="X82B1868F7A780B49"></a></p>
<h5>3.1-29 IsOrdinary</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsOrdinary</code>( <var class="Arg">NS</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsOrdinaryNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p><var class="Arg">NS</var> is a numerical semigroup. Dectects if the semigroup is ordinary, that is, with less than two deserts.</p>
<p>This filter implies <code class="func">IsAcuteNumericalSemigroup</code> (<a href="chap3_mj.html#X83D4AFE882A79096"><span class="RefLink">3.1-30</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsOrdinary(s);</span>
false
</pre></div>
<p><a id="X83D4AFE882A79096" name="X83D4AFE882A79096"></a></p>
<h5>3.1-30 IsAcute</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsAcute</code>( <var class="Arg">NS</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsAcuteNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p><var class="Arg">NS</var> is a numerical semigroup. Dectects if the semigroup is acute, that is, it is either ordinary or its last desert (the one with the Frobenius number) has less elements than the preceding one (<a href="chapBib_mj.html#biBBr-acute">[Bra04]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsAcute(s);</span>
true
</pre></div>
<p><a id="X7CCFC5267FD27DDE" name="X7CCFC5267FD27DDE"></a></p>
<h5>3.1-31 Holes</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Holes</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HolesOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">S</code> is a numerical semigroup. Returns the set of gaps <span class="SimpleMath">\(x\)</span> of <code class="code">S</code> such that <span class="SimpleMath">\(F(S)-x\)</span> is also a gap, where <span class="SimpleMath">\(F(S)\)</span> stands for the Frobenius number of <code class="code">S</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Holes(s);</span>
[ ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(3,5,7);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HolesOfNumericalSemigroup(s);</span>
[ 2 ]
</pre></div>
<p><a id="X794E615F85C2AAB0" name="X794E615F85C2AAB0"></a></p>
<h5>3.1-32 LatticePathAssociatedToNumericalSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LatticePathAssociatedToNumericalSemigroup</code>( <var class="Arg">S</var>, <var class="Arg">p</var>, <var class="Arg">q</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">S</code> is a numerical semigroup and <code class="code">p,q</code> are two coprime elements in <code class="code">S</code>.</p>
<p>In this setting <code class="code">S</code> is an oversemigroup of <span class="SimpleMath">\(\langle p,q\rangle\)</span>, and consequently every gap of <code class="code">S</code> is a gap of <span class="SimpleMath">\(\langle p,q\rangle\)</span>. If <span class="SimpleMath">\(c\)</span> is the conductor of <span class="SimpleMath">\(\langle p,q\rangle\)</span>, then every gap <span class="SimpleMath">\(g\)</span> of <span class="SimpleMath">\(\langle p,q\rangle\)</span> can be written uniquely as <span class="SimpleMath">\(g=c-1-(ap+bp)\)</span> for some nonnegative integers <span class="SimpleMath">\(a,b\)</span>. We say that <span class="SimpleMath">\((a,b)\)</span> are the coordinates associated to <span class="SimpleMath">\(g\)</span>.</p>
<p>The output is a path in <span class="SimpleMath">\(\mathbb{N}^2\)</span> such that the coordinates of the gaps of <span class="SimpleMath">\(S\)</span> correspond exactly with the points in <span class="SimpleMath">\(\mathbb{N}^2\)</span> that are between the path and the line <span class="SimpleMath">\(ax+by=c-1\)</span>. See <a href="chapBib_mj.html#biBK-W">[KW14]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(16,17,71,72);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">LatticePathAssociatedToNumericalSemigroup(s,16,17);</span>
[ [ 0, 14 ], [ 1, 13 ], [ 2, 12 ], [ 3, 11 ], [ 4, 10 ], [ 5, 9 ], [ 6, 8 ],
[ 7, 7 ], [ 8, 6 ], [ 9, 5 ], [ 10, 4 ], [ 11, 3 ], [ 12, 2 ], [ 13, 1 ],
[ 14, 0 ] ]
</pre></div>
<p><a id="X7E9C8E157C4EAAB0" name="X7E9C8E157C4EAAB0"></a></p>
<h5>3.1-33 Genus</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Genus</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GenusOfNumericalSemigroup</code>( <var class="Arg">NS</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">NS</code> is a numerical semigroup. It returns the number of gaps of <code class="code">NS</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s:=NumericalSemigroup(16,17,71,72);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Genus(s);</span>
80
<span class="GAPprompt">gap></span> <span class="GAPinput">GenusOfNumericalSemigroup(s);</span>
80
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">Genus(S);</span>
26
</pre></div>
<p><a id="X7EC438CC7BF539D0" name="X7EC438CC7BF539D0"></a></p>
<h5>3.1-34 FundamentalGaps</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalGaps</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FundamentalGapsOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">S</code> The <em>fundamental gaps</em> of <span class="SimpleMath">\(S\)</span> are those gaps that are maximal with respect to the partial order induced by division in <span class="SimpleMath">\({\mathbb N}\)</span>. It returns the set of fundamental gaps of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">FundamentalGaps(NumericalSemigroup(5,7,11));</span>
[ 6, 8, 9, 13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">FundamentalGapsOfNumericalSemigroup(S);</span>
[ 16, 17, 18, 19, 27, 28, 29, 30, 31, 40, 41, 42 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">GapsOfNumericalSemigroup(S);</span>
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 19, 20, 21, 27, 28, 29,
30, 31, 40, 41, 42 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Gaps(NumericalSemigroup(5,7,11));</span>
[ 1, 2, 3, 4, 6, 8, 9, 13 ]
</pre></div>
<p><a id="X803D550C78717A7C" name="X803D550C78717A7C"></a></p>
<h5>3.1-35 SpecialGaps</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SpecialGaps</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SpecialGapsOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The <em>special gaps</em> of a numerical semigroup <span class="SimpleMath">\(S\)</span> are those fundamental gaps such that if they are added to the given numerical semigroup, then the resulting set is again a numerical semigroup. <code class="code">S</code> is a numerical semigroup. It returns the special gaps of <var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S := NumericalSemigroup("modular", 5,53);</span>
<Modular numerical semigroup satisfying 5x mod 53 <= x >
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialGaps(S);</span>
[ 40, 41, 42 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialGapsOfNumericalSemigroup(S);</span>
[ 40, 41, 42 ]
</pre></div>
<p><a id="X7EE22CA979CCAAB9" name="X7EE22CA979CCAAB9"></a></p>
<h4>3.2 <span class="Heading">Wilf's conjecture
<p>Let <span class="SimpleMath">\(S\)</span> be a numerical semigroup, with conductor <span class="SimpleMath">\(c\)</span> and embedding dimension <span class="SimpleMath">\(e\)</span>. Denote by <span class="SimpleMath">\(l\)</span> the cardinality of the set of elements in <span class="SimpleMath">\(S\)</span> smaller than <span class="SimpleMath">\(c\)</span>. Wilf in <a href="chapBib_mj.html#biBWilf">[Wil78]</a> asked whether or not <span class="SimpleMath">\(l/c\ge 1/e\)</span> for all numerical semigroups. In this section we give some functions to experiment with this conjecture, as defined in <a href="chapBib_mj.html#biBE">[Eli18]</a>.</p>
<p><a id="X78C2F4C77FB096F0" name="X78C2F4C77FB096F0"></a></p>
<h5>3.2-1 WilfNumber</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WilfNumber</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ WilfNumberOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">S</code> is a numerical semigroup. Let <span class="SimpleMath">\(c\)</span>, <span class="SimpleMath">\(e\)</span> and <span class="SimpleMath">\(l\)</span> be the conductor, embedding dimension and number of elements smaller than <span class="SimpleMath">\(c\)</span> in <var class="Arg">S</var>. Returns <span class="SimpleMath">\(e l-c\)</span>, which was conjetured by Wilf to be nonnegative.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := NumericalSemigroup(13,25,37);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">WilfNumber(s);</span>
96
<span class="GAPprompt">gap></span> <span class="GAPinput">l:=NumericalSemigroupsWithGenus(10);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Filtered(l, s->WilfNumber(s)<0);</span>
[ ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Maximum(Set(l, s->WilfNumberOfNumericalSemigroup(s)));</span>
70
</pre></div>
<p><a id="X80F9EC9A7BF4E606" name="X80F9EC9A7BF4E606"></a></p>
<h5>3.2-2 EliahouNumber</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EliahouNumber</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TruncatedWilfNumberOfNumericalSemigroup</code>( <var class="Arg">S</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">S</code> is a numerical semigroup. Let <span class="SimpleMath">\(c\)</span>, <span class="SimpleMath">\(m\)</span>, <span class="SimpleMath">\(s\)</span> and <span class="SimpleMath">\(l\)</span> be the conductor, multiplicity, number of generators smaller than <span class="SimpleMath">\(c\)</span>, and number of elements smaller than <span class="SimpleMath">\(c\)</span> in <var class="Arg">S</var>, respectively. Let <span class="SimpleMath">\(q\)</span> and < | |