Quelle chap4.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/pkg/smallsemi/doc/chap4.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 (Smallsemi) - Chapter 4: Functionality</ 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= "chap4" 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="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="chap3.html">[Previous Chapter]</a> <a href="chapBib.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap4_mj.html">[MathJax on]</a></p>
<p><a id="X87F1120883F5B4D0" name="X87F1120883F5B4D0"></a></p>
<div class="ChapSects"><a href="chap4.html#X87F1120883F5B4D0">4 <span class="Heading">Functionality</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X83F5AF81859D6CBF">4.1 <span class="Heading">Individual Semigroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X8538248D78185960">4.1-1 SmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X857428A57D3FFACB">4.1-2 IsSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7EC241FB7985775E">4.1-3 IsSmallSemigroupElt</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X793FF84E80B334D1">4.1-4 RecoverMultiplicationTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X813727FD851302B7">4.1-5 SemigroupByMultiplicationTableNC</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X788211A07D67C282">4.1-6 IdSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79D38A3886C7431D">4.1-7 EquivalenceSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X8078FC78871FA496">4.1-8 InfoSmallsemi</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X841BB74986A73272">4.1-9 UnloadSmallsemiData</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X78274024827F306D">4.2 <span class="Heading">Properties of Semigroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X86A4F95783A18702">4.2-1 Annihilators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7E1195927C454C8A">4.2-2 DiagonalOfMultiplicationTable</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7DCF7C368665E94D">4.2-3 DisplaySmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X86B662117F4C4C7F">4.2-4 IndexPeriod</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7C8DB14587D1B55A">4.2-5 IsBand</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7EFDBA687DCDA6FA">4.2-6 IsBrandtSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X81DE11987BB81017">4.2-7 IsCliffordSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X843EFDA4807FDC31">4.2-8 IsCommutativeSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7AFA23AF819FBF3D">4.2-9 IsCompletelyRegularSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D51FD2B7AA3E8DF">4.2-10 IsFullTransformationSemigroupCopy</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X852F29E8795FA489">4.2-11 IsGroupAsSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X835484C481CF3DDD">4.2-12 <span class="Heading">IsIdempotentGenerated</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83F1529479D56665">4.2-13 IsInverseSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7E9261367C8C52C0">4.2-14 IsLeftZeroSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79D46BAB7E327AD1">4.2-15 IsMonogenicSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7E4DEECD7CD9886D">4.2-16 IsMonoidAsSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79FF88207AFC8330">4.2-17 IsMultSemigroupOfNearRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83D4ED237BB929AF">4.2-18 IsNGeneratedSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X87BF19367BA2B9ED">4.2-19 IsNIdempotentSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X780ADE31828F0848">4.2-20 <span class="Heading">IsNilpotentSemigroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7935C476808C8773">4.2-21 IsOrthodoxSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7E9B674D781B072C">4.2-22 IsRectangularBand</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7C4663827C5ACEF1">4.2-23 IsRegularSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7CB099958658F979">4.2-24 IsRightZeroSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X846FC6247EE31607">4.2-25 IsSelfDualSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D3ACD8A7C0AB34C">4.2-26 IsSemigroupWithClosedIdempotents</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X82D229727C6278EC">4.2-27 IsSemigroupWithZero</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X836F4692839F4874">4.2-28 <span class="Heading">IsSimpleSemigroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X85A3F78C864507EB">4.2-29 IsSingularSemigroupCopy</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X85F7E5CD86F0643B">4.2-30 IsZeroGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X81A1882181B75CC9">4.2-31 IsZeroSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X8193A60F839C064E">4.2-32 IsZeroSimpleSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X81D15723804771E2">4.2-33 MinimalGeneratingSet</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D1C336E7B0A059C">4.2-34 NilpotencyDegree</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X866B154E7F54AE62">4.3 <span class="Heading">Nilpotent semigroups by coclass</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X819BD88C78976AFD">4.3-1 NilpotentSemigroupsByCoclass</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X7D6E81E37E3AAED8">4.4 <span class="Heading">Starred Green's relations
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X84EAD3BC80389059">4.4-1 IsStarRelation</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7A8059EC848E0A77">4.4-2 RStarRelation</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D30CDC386C8816A">4.4-3 RStarClass</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83E1C16B8247ECBD">4.4-4 RStarClass</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X82A391177D13A7E0">4.4-5 IsStarClass</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83B9C0417C03A220">4.4-6 RStarClasses</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X82F9C36C86006857">4.5 <span class="Heading">Families of Semigroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X81DC0FE28043C9B0">4.5-1 AllSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X831E543E83DDFDEA">4.5-2 EnumeratorOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7F8EF88E7EB417A8">4.5-3 EnumeratorOfSmallSemigroupsByIds</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7A14F5A58020DCFF">4.5-4 ArgumentsUsedToCreate</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X814BA9F778B06D47">4.5-5 IdsOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7BF0DCA5853A5C22">4.5-6 IsEnumeratorOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83C27CD97895698A">4.5-7 IsIdSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X803366027F328BC9">4.5-8 IsIteratorOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7D6BFDE17A9BEEC3">4.5-9 IteratorOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X867F3E967CF3AFE9">4.5-10 Nr3NilpotentSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X8257C9207DDF2451">4.5-11 NrSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7C71885F7DF31EC4">4.5-12 OneSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7EACCD1F7DF9DD3C">4.5-13 PositionsOfSmallSemigroupsIn</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7FAF09BF7CC1C265">4.5-14 PositionsOfSmallSemigroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X79AFE7FC81C0DF37">4.5-15 PrecomputedSmallSemisInfo</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X7A63356C85E45F6F">4.5-16 RandomSmallSemigroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X83C6631B7D53AE02">4.5-17 SizesOfSmallSemigroupsIn</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap4.html#X87C50557821D4786">4.5-18 UpToIsomorphism</a></span>
</div></div>
</div>
<h3>4 <span class="Heading">Functionality</span></h3>
<p><a id="X83F5AF81859D6CBF" name="X83F5AF81859D6CBF"></a></p>
<h4>4.1 <span class="Heading">Individual Semigroups</span></h4>
<p>The semigroups of sizes 1 to 8 are available up to isomorphism and anti-isomorphism in <strong class="pkg">Smallsemi</strong>. Every semigroup in the library is identified by its size <span class="SimpleMath">m</span> and a number <span class="SimpleMath">n</span> lying between 1 and the number of semigroups of size <span class="SimpleMath">m</span> (see Table <a href="chap1.html#X7DFB63A97E67C0A1"><span class="RefLink">1.</span></a>). We call the pair <span class="SimpleMath">(m,n)</span> the <em>ID</em> of the semigroup.</p>
<p>In this section we give details about the functions relating to individual semigroups in <strong class="pkg">Smallsemi</strong>. This includes how to access semigroups in the library and how to identify the semigroup in the library equivalent to an arbitrary semigroup (of size 1 to 8).</p>
<p>If you are interested in the properties of a semigroup in the library or would like to find all the semigroups satisfying a given set of properties please see Section <a href="chap4.html#X78274024827F306D"><span class="RefLink">4.2</span></a> or Section <a href="chap4.html#X82F9C36C86006857"><span class="RefLink">4.5</span></a> respectively.</p>
<p><a id="X8538248D78185960" name="X8538248D78185960"></a></p>
<h5>4.1-1 SmallSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SmallSemigroup</code>( <var class="Arg">m</var>, <var class="Arg">n</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">‣ SmallSemigroupNC</code>( <var class="Arg">m</var>, <var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the semigroup with ID <span class="SimpleMath">(<var class="Arg">m,n</var>)</span> from the library, that is the <var class="Arg">n</var>th semigroup with <var class="Arg">m</var> elements.</p>
<p>In <code class="code">SmallSemigroupNC</code> no check is performed to verify that <var class="Arg">m</var> and <var class="Arg">n</var> are valid arguments.</p>
<p>In <code class="code">SmallSemigroup</code> an error is signalled if the semigroups of size <var class="Arg">m</var> are not classified or if <var class="Arg">n</var> is greater than the number of semigroups with <var class="Arg">m</var> elements.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallSemigroup(8, 1353452);</span>
<small semigroup of size 8>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallSemigroupNC(5, 1);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">SmallSemigroupNC(5, 1) = SmallSemigroup(5, 1);</span>
true
</pre></div>
<p><a id="X857428A57D3FFACB" name="X857428A57D3FFACB"></a></p>
<h5>4.1-2 IsSmallSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSmallSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>returns <code class="code">true</code> if <var class="Arg">sgrp</var> is a semigroup from the library, that is if it was created using <code class="func">SmallSemigroup</code> (<a href="chap4.html#X8538248D78185960"><span class="RefLink">4.1-1</span></a>). Otherwise <code class="code">false</code> is returned.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgrp := RandomSmallSemigroup(5);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSmallSemigroup(sgrp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">sgrp := Semigroup(Transformation([1]));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSmallSemigroup(sgrp);</span>
false
</pre></div>
<p><a id="X7EC241FB7985775E" name="X7EC241FB7985775E"></a></p>
<h5>4.1-3 IsSmallSemigroupElt</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSmallSemigroupElt</code>( <var class="Arg">x</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>returns <code class="code">true</code> if <var class="Arg">x</var> is an element of a semigroup from the library, and <code class="code">false</code> otherwise.</p>
<p><var class="Arg">IsSmallSemigroupElt</var> is a representation satisfying <var class="Arg">IsPositionalObjectRep</var> and <code class="func">IsMultiplicativeElement</code> (<a href="../../../doc/ref/chap31_mj.html#X797D3B2A7A2B2F53"><span class="RefLink">Reference: IsMultiplicativeElement</span></a>) and <var class="Arg">IsAttributeStoringRep</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSmallSemigroupElt(Transformation([1]));</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">sgrp := RandomSmallSemigroup(5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSmallSemigroupElt(Random(sgrp));</span>
true
</pre></div>
<p><a id="X793FF84E80B334D1" name="X793FF84E80B334D1"></a></p>
<h5>4.1-4 RecoverMultiplicationTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RecoverMultiplicationTable</code>( <var class="Arg">m</var>, <var class="Arg">n</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">‣ RecoverMultiplicationTableNC</code>( <var class="Arg">m</var>, <var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>return the multiplication table of the <var class="Arg">n</var>-th semigroup with <var class="Arg">m</var> elements from the library.</p>
<p>If <var class="Arg">m</var> is greater than 8 or <var class="Arg">n</var> greater than the number of semigroups of size <var class="Arg">m</var>, then <code class="code">fail</code> is returned. The NC version does not perform any tests on the input and will most likely run into an error in such a case.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">RecoverMultiplicationTable(10, 2);</span>
fail
<span class="GAPprompt">gap></span> <span class="GAPinput">RecoverMultiplicationTable(1, 2);</span>
fail
<span class="GAPprompt">gap></span> <span class="GAPinput">RecoverMultiplicationTable(2, 1);</span>
[ [ 1, 1 ], [ 1, 1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">RecoverMultiplicationTable(8, 11111111);</span>
[ [ 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 3 ],
[ 3, 3, 3, 3, 3, 3, 3, 3 ], [ 1, 1, 1, 4, 4, 4, 4, 1 ],
[ 1, 2, 3, 4, 5, 6, 7, 1 ], [ 1, 2, 3, 4, 5, 6, 7, 1 ],
[ 1, 2, 3, 4, 5, 6, 7, 1 ], [ 8, 8, 8, 8, 8, 8, 8, 8 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">RecoverMultiplicationTable(2, 11111111);</span>
fail
</pre></div>
<p>Note that no semigroup is created calling this function but just the table is created. This makes it useful if one wants to perform very simple (i.e. quick in <strong class="pkg">GAP</strong>) tests on a large number of semigroups which can be performed on the multiplication table.</p>
<p>To create a semigroup with the multiplication table obtained by <code class="code">RecoverMultiplicationTable(<var class="Arg">m,n</var>)</code> use the function <code class="func">SmallSemigroup</code> (<a href="chap4.html#X8538248D78185960"><span class="RefLink">4.1-1</span></a>) with arguments <var class="Arg">m,n</var>.</p>
<p><a id="X813727FD851302B7" name="X813727FD851302B7"></a></p>
<h5>4.1-5 SemigroupByMultiplicationTableNC</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SemigroupByMultiplicationTableNC</code>( <var class="Arg">table</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns an object with <code class="func">IsSemigroup</code> (<a href="../../../doc/ref/chap51_mj.html#X7B412E5B8543E9B7"><span class="RefLink">Reference: IsSemigroup</span></a>) and multiplication table <var class="Arg">table</var> without checking if the multiplication defined by the table is associative.</p>
<p>If <var class="Arg">table</var> is not associative, this can lead to errors and wrong results or might even crash <strong class="pkg">GAP</strong>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SemigroupByMultiplicationTableNC([[1, 2], [2, 1]]);</span>
<semigroup of size 2, with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSmallSemigroup(s);</span>
false
</pre></div>
<p>Note that this function is <em>not</em> used to create semigroups when <code class="func">SmallSemigroup</code> (<a href="chap4.html#X8538248D78185960"><span class="RefLink">4.1-1</span></a>) is called. It can be useful in combination with <code class="func">RecoverMultiplicationTable</code> (<a href="chap4.html#X793FF84E80B334D1"><span class="RefLink">4.1-4</span></a>) if one wants to avoid that a semigroup knows it comes from the library.</p>
<p><a id="X788211A07D67C282" name="X788211A07D67C282"></a></p>
<h5>4.1-6 IdSmallSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IdSmallSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns a pair <code class="code">[m, n]</code> such that <span class="SimpleMath">(m,n)</span> is the ID of a semigroup in <strong class="pkg">Smallsemi</strong> equivalent to <var class="Arg">sgrp</var>. The argument <var class="Arg">sgrp</var> has to be a semigroup of size 8 or less, otherwise an error is signalled.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgrp := Semigroup(Transformation([1, 2, 2]),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Transformation([1, 2, 3]));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(sgrp);</span>
[ 2, 3 ]
</pre></div>
<p><a id="X79D38A3886C7431D" name="X79D38A3886C7431D"></a></p>
<h5>4.1-7 EquivalenceSmallSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EquivalenceSmallSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns a mapping <code class="code">map</code> from <var class="Arg">sgrp</var> to the semigroup in <strong class="pkg">Smallsemi</strong> equivalent to <var class="Arg">sgrp</var>. The mapping is an isomorphism if such exists and an anti-isomorphism otherwise. The argument <var class="Arg">sgrp</var> has to be a semigroup of size 8 or less, otherwise an error is signalled.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgrp := Semigroup(Transformation([1, 2, 2]),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Transformation([1, 2, 3]));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">EquivalenceSmallSemigroup(sgrp);</span>
SemigroupHomomorphismByImages ( Monoid( [ Transformation( [ 1, 2, 2 ] )
] )-><small semigroup of size 2>)
</pre></div>
<p><a id="X8078FC78871FA496" name="X8078FC78871FA496"></a></p>
<h5>4.1-8 InfoSmallsemi</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InfoSmallsemi</code></td><td class="tdright">( info class )</td></tr></table></div>
<p>is the info class (see <a href="../../../doc/ref/chap7_mj.html#X7A9C902479CB6F7C"><span class="RefLink">Reference: Info Functions</span></a>) of <strong class="pkg">Smallsemi</strong>. The info level is initially set to 1 which triggers a message whenever data is loaded into <strong class="pkg">GAP</strong>.</p>
<p><a id="X841BB74986A73272" name="X841BB74986A73272"></a></p>
<h5>4.1-9 UnloadSmallsemiData</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnloadSmallsemiData</code>( <var class="Arg">use_later</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>deletes most or all of the data from the <strong class="pkg">GAP</strong> workspace that was loaded by <strong class="pkg">Smallsemi</strong>.</p>
<p>If the boolean <var class="Arg">use_later</var> is <code class="code">false</code> all data loaded by <strong class="pkg">Smallsemi</strong> is deleted from the workspace, in which case <strong class="pkg">Smallsemi</strong> is not guaranteed to work properly without restarting your <strong class="pkg">GAP</strong> session.</p>
<p>If the boolean <var class="Arg">use_later</var> is <code class="code">true</code> only the recoverable data is deleted. This leaves roughly 10 MB of data in the workspace.</p>
<p><a id="X78274024827F306D" name="X78274024827F306D"></a></p>
<h4>4.2 <span class="Heading">Properties of Semigroups</span></h4>
<p>In this section we detail the <strong class="pkg">GAP</strong> functions that can be used to determine whether a small semigroup satisfies a certain property. Let <var class="Arg">S</var> be a semigroup. Then</p>
<ul>
<li><p><var class="Arg">S</var> is a <em>left zero semigroup</em> if <var class="Arg">xy=x</var> for all <var class="Arg">x,y</var> in <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>right zero semigroup</em> if <var class="Arg">xy=y</var> for all <var class="Arg">x,y</var> in <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is <em>commutative</em> if <var class="Arg">xy=yx</var> for all <var class="Arg">x,y</var> in <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is <em>simple</em> if it has no proper two-sided ideals.</p>
</li>
<li><p><var class="Arg">S</var> is <em>zero simple</em> if the only 2-sided ideals are <var class="Arg">{0}</var> and <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is <em>regular</em> if for all <var class="Arg">x</var> in <var class="Arg">S</var> there exists <var class="Arg">y</var> in <var class="Arg">S</var> such that <var class="Arg">xyx=x</var>.</p>
</li>
<li><p><var class="Arg">S</var> is <em>completely regular</em> if every element of <var class="Arg">S</var> lies in a subgroup.</p>
</li>
<li><p><var class="Arg">S</var> is an <em>inverse semigroup</em> if every element <var class="Arg">x</var> in <var class="Arg">S</var> has a unique semigroup inverse, that is, a unique element <var class="Arg">y</var> such that <var class="Arg">xyx=x</var> and <var class="Arg">yxy=y</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>Clifford semigroup</em> if it is a regular semigroup whose idempotents are central, that is, for all <var class="Arg">e,x</var> in <var class="Arg">S</var> where <var class="Arg">e^2=e</var> we have that <var class="Arg">ex=xe</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>band</em> if every element is an idempotent, that is, <var class="Arg">x^2=x</var> for all <var class="Arg">x</var> in <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>Brandt semigroup</em> if it is inverse and zero simple.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>rectangular band</em> if for all <var class="Arg">x,y,z</var> in <var class="Arg">S</var> we have that <var class="Arg">x^2=x</var> and <var class="Arg">xyz=xz</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>semiband</em> if it is generated by its idempotent elements, that is, elements satisfying <var class="Arg">x^2=x</var>.</p>
</li>
<li><p><var class="Arg">S</var> is an <em>orthodox semigroup</em> if it is regular and its idempotents (elements satisfying <var class="Arg">x^2=x</var>) form a subsemigroup.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>zero semigroup</em> if there exists an element <var class="Arg">0</var> in <var class="Arg">S</var> such that <var class="Arg">xy=0</var> for all <var class="Arg">x,y</var> in <var class="Arg">S</var>.</p>
</li>
<li><p><var class="Arg">S</var> is a <em>zero group</em> if there exists an element <var class="Arg">0</var> in <var class="Arg">S</var> such that <var class="Arg">S</var> without <var class="Arg">0</var> is a group and for all <var class="Arg">x</var> in <var class="Arg">S</var> we have that <var class="Arg">x0=0x=0</var>.</p>
</li>
</ul>
<p>The <strong class="pkg">MONOID</strong> package was used to determined which semigroups in the library satisfy the properties above. All of the resulting information is stored in the library.</p>
<p><a id="X86A4F95783A18702" name="X86A4F95783A18702"></a></p>
<h5>4.2-1 Annihilators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Annihilators</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the set of annihilators of <var class="Arg">sgrp</var> if <var class="Arg">sgrp</var> contains a zero element and <code class="code">fail</code> otherwise.</p>
<p>An element <span class="SimpleMath">x</span> in a semigroup with zero <span class="SimpleMath">z</span> is an <em>annihilator</em> if <span class="SimpleMath">xy=yx=z</span> for every element <span class="SimpleMath">y</span> in the semigroup.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 6);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">Annihilators(s);</span>
[ s1, s2 ]
</pre></div>
<p><a id="X7E1195927C454C8A" name="X7E1195927C454C8A"></a></p>
<h5>4.2-2 DiagonalOfMultiplicationTable</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DiagonalOfMultiplicationTable</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the diagonal of the multiplication table of the semigroup <var class="Arg">sgrp</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(8, 10101);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">DiagonalOfMultiplicationTable(s);</span>
[ 1, 1, 1, 1, 1, 1, 1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(7, 10101);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">DiagonalOfMultiplicationTable(s);</span>
[ 1, 1, 1, 1, 1, 1, 1 ]
</pre></div>
<p><a id="X7DCF7C368665E94D" name="X7DCF7C368665E94D"></a></p>
<h5>4.2-3 DisplaySmallSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DisplaySmallSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>displays all the information about the small semigroup <var class="Arg">sgrp</var> that is stored in the library and its Green's classes and idempotents.
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(6, 3838);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">DisplaySmallSemigroup(s);</span>
IsBand: false
IsBrandtSemigroup: false
IsCommutative: false
IsCompletelyRegularSemigroup: false
IsFullTransformationSemigroupCopy: false
IsGroupAsSemigroup: false
IsIdempotentGenerated: false
IsInverseSemigroup: false
IsMonogenicSemigroup: false
IsMonoidAsSemigroup: false
IsMultSemigroupOfNearRing: false
IsOrthodoxSemigroup: false
IsRectangularBand: false
IsRegularSemigroup: false
IsSelfDualSemigroup: false
IsSemigroupWithClosedIdempotents: true
IsSimpleSemigroup: false
IsSingularSemigroupCopy: false
IsZeroSemigroup: false
IsZeroSimpleSemigroup: false
MinimalGeneratingSet: [ s3, s4, s5, s6 ]
Idempotents: [ s1, s5, s6 ]
GreensRClasses: [ {s1}, {s2}, {s3}, {s4}, {s5}, {s6} ]
GreensLClasses: [ {s1}, {s2}, {s3}, {s4}, {s6} ]
GreensHClasses: [ {s1}, {s2}, {s3}, {s4}, {s5}, {s6} ]
GreensDClasses: [ {s1}, {s2}, {s3}, {s4}, {s6} ]
</pre></div>
<p><a id="X86B662117F4C4C7F" name="X86B662117F4C4C7F"></a></p>
<h5>4.2-4 IndexPeriod</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndexPeriod</code>( <var class="Arg">x</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the minimum numbers <var class="Arg">m, r</var> such that <var class="Arg">x^{m+r}=x^m</var>; known as the index and period of the small semigroup element <var class="Arg">x</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 116);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">x := Elements(s)[3];</span>
s3
<span class="GAPprompt">gap></span> <span class="GAPinput">IndexPeriod(x);</span>
[ 2, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">x ^ 3 = x ^ 2;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">x ^ 2 = x ^ 1;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">x ^ 3 = x ^ 1;</span>
false
</pre></div>
<p><a id="X7C8DB14587D1B55A" name="X7C8DB14587D1B55A"></a></p>
<h5>4.2-5 IsBand</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsBand</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is a band and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is a <em>band</em> if every element is an idempotent, that is, <var class="Arg">x^2=x</var> for all <var class="Arg">x</var> in <var class="Arg">sgrp</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 519);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBand(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsBand, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBand(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 5, 1010 ]
</pre></div>
<p><a id="X7EFDBA687DCDA6FA" name="X7EFDBA687DCDA6FA"></a></p>
<h5>4.2-6 IsBrandtSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsBrandtSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is a Brandt semigroup and <code class="keyw">false</code> otherwise.</p>
<p>A finite semigroup <var class="Arg">sgrp</var> is a <em>Brandt semigroup</em> if it is inverse and zero simple.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 519);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBrandtSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsBrandtSemigroup, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBrandtSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 5, 149 ]
</pre></div>
<p><a id="X81DE11987BB81017" name="X81DE11987BB81017"></a></p>
<h5>4.2-7 IsCliffordSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCliffordSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is a Clifford semigroup and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is a <em>Clifford semigroup</em> if it is a regular semigroup whose idempotents are central, that is, for all <var class="Arg">e,x</var> in <var class="Arg">sgrp</var> where <var class="Arg">e^2=e</var> we have that <var class="Arg">ex=xe</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 519);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBand(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsBand, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBand(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 5, 1010 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 519);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCliffordSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsCliffordSemigroup, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCliffordSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 5, 148 ]
</pre></div>
<p><a id="X843EFDA4807FDC31" name="X843EFDA4807FDC31"></a></p>
<h5>4.2-8 IsCommutativeSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCommutativeSemigroup</code>( <var class="Arg">sgrp</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">‣ IsCommutative</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>return <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is commutative and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is <em>commutative</em> if <var class="Arg">xy=yx</var> for all <var class="Arg">x,y</var> in <var class="Arg">sgrp</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(6, 871);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCommutativeSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsCommutative, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCommutativeSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCommutative(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 5, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(5, IsCommutativeSemigroup, true);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCommutativeSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCommutative(s);</span>
true
</pre></div>
<p><a id="X7AFA23AF819FBF3D" name="X7AFA23AF819FBF3D"></a></p>
<h5>4.2-9 IsCompletelyRegularSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCompletelyRegularSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is completely regular and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup is <em>completely regular</em> if every element is contained in a subgroup.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(6, 13131);</span>
<small semigroup of size 6>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCompletelyRegularSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(6, IsCompletelyRegularSemigroup, true);</span>
<small semigroup of size 6>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCompletelyRegularSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 6, 3164 ]
</pre></div>
<p><a id="X7D51FD2B7AA3E8DF" name="X7D51FD2B7AA3E8DF"></a></p>
<h5>4.2-10 IsFullTransformationSemigroupCopy</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFullTransformationSemigroupCopy</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is isomorphic to a full transformation semigroup and <code class="keyw">false</code> otherwise.</p>
<p>The size of the full transformation semigroup on an <var class="Arg">n</var> element set is <span class="SimpleMath">n^n</span> and so there are only two semigroup in the library that have this property.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(1, 1);</span>
<small semigroup of size 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsFullTransformationSemigroupCopy(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(4, IsFullTransformationSemigroupCopy, true);</span>
<small semigroup of size 4>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsFullTransformationSemigroupCopy(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 4, 96 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(6, IsFullTransformationSemigroupCopy, true);</span>
fail
</pre></div>
<p><a id="X852F29E8795FA489" name="X852F29E8795FA489"></a></p>
<h5>4.2-11 IsGroupAsSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGroupAsSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is mathematically a group, and returns <code class="keyw">false</code> otherwise. Note that no small semigroup can lie in the category <code class="func">IsGroup</code> (<a href="../../../doc/ref/chap39_mj.html#X7939B3177BBD61E4"><span class="RefLink">Reference: IsGroup</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(7, 7);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGroupAsSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(4, 37);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGroupAsSemigroup(s);</span>
true
</pre></div>
<p><a id="X835484C481CF3DDD" name="X835484C481CF3DDD"></a></p>
<h5>4.2-12 <span class="Heading">IsIdempotentGenerated</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIdempotentGenerated</code>( <var class="Arg">sgrp</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">‣ IsSemiband</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is a semiband and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is <em>idempotent generated</em> or equivalently a <em>semiband</em> if it is generated by its idempotent elements, i.e elements satisfying <var class="Arg">x^2=x</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(3, 13);</span>
<small semigroup of size 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIdempotentGenerated(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(3, IsIdempotentGenerated, false);</span>
<small semigroup of size 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIdempotentGenerated(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 3, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(4, IsIdempotentGenerated, true,</span>
<span class="GAPprompt">></span> <span class="GAPinput">IsSingularSemigroupCopy, true);</span>
fail
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(2, IsIdempotentGenerated, true,</span>
<span class="GAPprompt">></span> <span class="GAPinput">IsSingularSemigroupCopy, true);</span>
<small semigroup of size 2>
</pre></div>
<p><a id="X83F1529479D56665" name="X83F1529479D56665"></a></p>
<h5>4.2-13 IsInverseSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsInverseSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is an inverse semigroup and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is an <em>inverse semigroup</em> if every element <var class="Arg">x</var> in <var class="Arg">sgrp</var> has a unique semigroup inverse, that is, a unique element <var class="Arg">y</var> such that <var class="Arg">xyx=x</var> and <var class="Arg">yxy=y</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(7, IsInverseSemigroup, true);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsInverseSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(7, 101324);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsInverseSemigroup(s);</span>
false
</pre></div>
<p><a id="X7E9261367C8C52C0" name="X7E9261367C8C52C0"></a></p>
<h5>4.2-14 IsLeftZeroSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLeftZeroSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is a left zero semigroup and <code class="keyw">false</code> otherwise.</p>
<p>A semigroup <var class="Arg">sgrp</var> is a <em>left zero semigroup</em> if <var class="Arg">xy=x</var> for all <var class="Arg">x,y</var> in <var class="Arg">sgrp</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 438);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsLeftZeroSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(5, 1141);</span>
<small semigroup of size 5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsLeftZeroSemigroup(s);</span>
true
</pre></div>
<p><a id="X79D46BAB7E327AD1" name="X79D46BAB7E327AD1"></a></p>
<h5>4.2-15 IsMonogenicSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsMonogenicSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the small semigroup <var class="Arg">sgrp</var> is generated by a single element and <code class="keyw">false</code> otherwise.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := RandomSmallSemigroup(7);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonogenicSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(7, IsMonogenicSemigroup, true);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonogenicSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalGeneratingSet(s);</span>
[ s7 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(7, 406945);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonogenicSemigroup(s);</span>
false
</pre></div>
<p><a id="X7E4DEECD7CD9886D" name="X7E4DEECD7CD9886D"></a></p>
<h5>4.2-16 IsMonoidAsSemigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsMonoidAsSemigroup</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if the semigroup <var class="Arg">sgrp</var> is a monoid (i.e. has an identity element) and <code class="keyw">false</code> otherwise.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := SmallSemigroup(4, 126);</span>
<small semigroup of size 4>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonoidAsSemigroup(s);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(4, IsMonoidAsSemigroup, true);</span>
<small semigroup of size 4>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMonoidAsSemigroup(s);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">One(s);</span>
s1
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 4, 7 ]
</pre></div>
<p><a id="X79FF88207AFC8330" name="X79FF88207AFC8330"></a></p>
<h5>4.2-17 IsMultSemigroupOfNearRing</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsMultSemigroupOfNearRing</code>( <var class="Arg">sgrp</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>returns <code class="keyw">true</code> if <var class="Arg">sgrp</var> is isomorphic (or anti-isomorphic?) to the multiplicative semigroup of a near-ring and <code class="keyw">false</code> otherwise.</p>
<p>Those semigroups in the library that have this property were identified using the <strong class="pkg">Sonata</strong> package.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := OneSmallSemigroup(7, IsMultSemigroupOfNearRing, true);</span>
<small semigroup of size 7>
<span class="GAPprompt">gap></span> <span class="GAPinput">IdSmallSemigroup(s);</span>
[ 7, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsMultSemigroupOfNearRing(s);</s | |