<divclass="chlinkprevnexttop"> <ahref="chap0_mj.html">[Top of Book]</a> <ahref="chap0_mj.html#contents">[Contents]</a> <ahref="chap8_mj.html">[Previous Chapter]</a> <ahref="chapA_mj.html">[Next Chapter]</a> </div>
<divclass="ContSect"><spanclass="tocline"><spanclass="nocss"> </span><ahref="chap9_mj.html#X7DF21BD685FBF258">9.2 <spanclass="Heading">Left Bol Loops and Right Bol Loops</span></a>
<divclass="ContSect"><spanclass="tocline"><spanclass="nocss"> </span><ahref="chap9_mj.html#X8028D69A86B15897">9.3 <spanclass="Heading">Left Bruck Loops and Right Bruck Loops</span></a>
<spanclass="ContSS"><br/><spanclass="nocss"> </span><ahref="chap9_mj.html#X806B2DE67990E42F">9.7-1 <spanclass="Heading">RCCLoop and RightConjugacyClosedLoop</span></a>
<spanclass="ContSS"><br/><spanclass="nocss"> </span><ahref="chap9_mj.html#X80AB8B107D55FB19">9.7-2 <spanclass="Heading">LCCLoop and LeftConjugacyClosedLoop</span></a>
<spanclass="ContSS"><br/><spanclass="nocss"> </span><ahref="chap9_mj.html#X798BC601843E8916">9.7-3 <spanclass="Heading">CCLoop and ConjugacyClosedLoop</span></a>
<divclass="ContSect"><spanclass="tocline"><spanclass="nocss"> </span><ahref="chap9_mj.html#X864839227D5C0A90">9.13 <spanclass="Heading">Libraries of Loops Up To Isotopism</span></a>
<h3>9 <spanclass="Heading">Libraries of Loops</span></h3>
<p>Libraries of small loops form an integral part of <strongclass="pkg">LOOPS</strong>. The loops are stored in libraries up to isomorphism and, sometimes, up to isotopism.</p>
<p>A library named <em>my Library</em> is stored in file <codeclass="file">data/mylibrary.tbl</code>, and the corresponding data structure is named <codeclass="code">LOOPS_my_library_data</code>. For example, when the library is called <em>left Bol</em>, the corresponding data file is called <codeclass="file">data/leftbol.tbl</code> and the corresponding data structure is named <codeclass="code">LOOPS_left_bol_data</code>.</p>
<p>In most cases, the array <codeclass="code">LOOPS_my_library_data</code> consists of three lists:</p>
<ul>
<li><p><codeclass="code">LOOPS_my_library_data[1]</code> is a list of orders for which there is at least one loop in the library,</p>
</li>
<li><p><codeclass="code">LOOPS_my_library_data[2][k]</code> is the number of loops of order <codeclass="code">LOOPS_my_library_data[1][k]</code> in the library,</p>
</li>
<li><p><codeclass="code">LOOPS_my_library_data[3][k][s]</code> contains data necessary to produce the <codeclass="code">s</code>th loop of order <codeclass="code">LOOPS_my_library_data[1][k]</code> in the library.</p>
</li>
</ul>
<p>The format of <codeclass="code">LOOPS_my_library_data[3]</code> depends heavily on the particular library and is not standardized in any way. The data is often coded to save space.</p>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ MyLibraryLoop</code>( <varclass="Arg">n</var>, <varclass="Arg">m</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<p>This is a template function that retrieves the <varclass="Arg">m</var>th loop of order <varclass="Arg">n</var> from the library named <em>my library</em>.</p>
<p>For example, the <varclass="Arg">m</var>th left Bol loop of order <varclass="Arg">n</var> is obtained via <codeclass="code">LeftBolLoop(<varclass="Arg">n</var>,<varclass="Arg">m</var>)</code> or via <codeclass="code">LibraryLoop("left Bol",<varclass="Arg">n</var>,<varclass="Arg">m</var>)</code>.</p>
<h4>9.2 <spanclass="Heading">Left Bol Loops and Right Bol Loops</span></h4>
<p>The library named <em>left Bol</em> contains all nonassociative left Bol loops of order less than 17, including Moufang loops, as well as all left Bol loops of order <spanclass="SimpleMath">\(pq\)</span> for primes <spanclass="SimpleMath">\(p>q>2\)</span>. There are 6 such loops of order 8, 1 of order 12, 2 of order 15, 2038 of order 16, and <spanclass="SimpleMath">\((p+q-4)/2\)</span> of order <spanclass="SimpleMath">\(pq\)</span>.</p>
<p>The classification of left Bol loops of order 16 was first accomplished by Moorhouse <ahref="chapBib_mj.html#biBMo">[Moo]</a>. Our library was generated independently and it agrees with Moorhouse's results. The left Bol loops of order <spanclass="SimpleMath">\(pq\)</span> were classified in <ahref="chapBib_mj.html#biBKiNaVo2015">[KNV15]</a>.</p>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ RightBolLoop</code>( <varclass="Arg">n</var>, <varclass="Arg">m</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<p>Returns: The <varclass="Arg">m</var>th right Bol loop of order <varclass="Arg">n</var> in the library.</p>
<p><strongclass="button">Remark:</strong> Only left Bol loops are stored in the library. Right Bol loops are retrieved by calling <codeclass="code">Opposite</code> on left Bol loops.</p>
<h4>9.3 <spanclass="Heading">Left Bruck Loops and Right Bruck Loops</span></h4>
<p>The emmerging library named <em>left Bruck</em> contains all left Bruck loops of orders <spanclass="SimpleMath">\(3\)</span>, <spanclass="SimpleMath">\(9\)</span>, <spanclass="SimpleMath">\(27\)</span> and <spanclass="SimpleMath">\(81\)</span> (there are <spanclass="SimpleMath">\(1\)</span>, <spanclass="SimpleMath">\(2\)</span>, <spanclass="SimpleMath">\(7\)</span> and <spanclass="SimpleMath">\(72\)</span> such loops, respectively).</p>
<p>For an odd prime <spanclass="SimpleMath">\(p\)</span>, left Bruck loops of order <spanclass="SimpleMath">\(p^k\)</span> are centrally nilpotent and hence central extensions of the cyclic group of order <spanclass="SimpleMath">\(p\)</span> by a left Bruck loop of order <spanclass="SimpleMath">\(p^{k-1}\)</span>. It is known that left Bruck loops of order <spanclass="SimpleMath">\(p\)</span> and <spanclass="SimpleMath">\(p^2\)</span> are abelian groups; we have included them in the library because of the iterative nature of the construction of nilpotent loops.</p>
<p>The library named <em>Moufang</em> contains all nonassociative Moufang loops of order <spanclass="SimpleMath">\(n\le 64\)</span> and <spanclass="SimpleMath">\(n\in\{81,243\}\)</span>.</p>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ MoufangLoop</code>( <varclass="Arg">n</var>, <varclass="Arg">m</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<p>Returns: The <varclass="Arg">m</var>th Moufang loop of order <varclass="Arg">n</var> in the library.</p>
<p>For <spanclass="SimpleMath">\(n\le 63\)</span>, our catalog numbers coincide with those of Goodaire et al. <ahref="chapBib_mj.html#biBGo">[GMR99]</a>. The classification of Moufang loops of order 64 and 81 was carried out in <ahref="chapBib_mj.html#biBNaVo2007">[NV07]</a>. The classification of Moufang loops of order 243 was carried out by Slattery and Zenisek <ahref="chapBib_mj.html#biBSlZe2011">[SZ12]</a>.</p>
<p>The extent of the library is summarized below:</p>
<p>The <em>octonion loop</em> of order 16 (i.e., the multiplication loop of the basis elements in the 8-dimensional standard real octonion algebra) can be obtained as <codeclass="code">MoufangLoop(16,3)</code>.</p>
<p>The library named <em>code</em> contains all nonassociative code loops of order less than 65. There are 5 such loops of order 16, 16 of order 32, and 80 of order 64, all Moufang. The library merely points to the corresponding Moufang loops. See <ahref="chapBib_mj.html#biBNaVo2007">[NV07]</a> for a classification of small code loops.</p>
<p>Our labeling of Steiner loops of order 16 coincides with the labeling of Steiner triple systems of order 15 in <ahref="chapBib_mj.html#biBCoRo">[CR99]</a>.</p>
<p>The library named <em>RCC</em> contains all nonassocitive right conjugacy closed loops of order <spanclass="SimpleMath">\(n\le 27\)</span> up to isomorphism. The data for the library was generated by Katharina Artic <ahref="chapBib_mj.html#biBArtic">[Art15]</a> who can also provide additional data for all right conjugacy closed loops of order <spanclass="SimpleMath">\(n\le 31\)</span>.</p>
<p>Let <spanclass="SimpleMath">\(Q\)</span> be a right conjugacy closed loop, <spanclass="SimpleMath">\(G\)</span> its right multiplication group and <spanclass="SimpleMath">\(T\)</span> its right section. Then <spanclass="SimpleMath">\(\langle T\rangle = G\)</span> is a transitive group, and <spanclass="SimpleMath">\(T\)</span> is a union of conjugacy classes of <spanclass="SimpleMath">\(G\)</span>. Every right conjugacy closed loop of order <spanclass="SimpleMath">\(n\)</span> can therefore be represented as a union of certain conjugacy classes of a transitive group of degree <spanclass="SimpleMath">\(n\)</span>. This is how right conjugacy closed loops of order less than <spanclass="SimpleMath">\(28\)</span> are represented in <strongclass="pkg">LOOPS</strong>. The following table summarizes the number of right conjugacy closed loops of a given order up to isomorphism:</p>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ LCCLoop</code>( <varclass="Arg">n</var>, <varclass="Arg">m</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ LeftConjugacyClosedLoop</code>( <varclass="Arg">n</var>, <varclass="Arg">m</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<p>Returns: The <varclass="Arg">m</var>th left conjugacy closed loop of order <varclass="Arg">n</var> in the library.</p>
<p><strongclass="button">Remark:</strong> Only the right conjugacy closed loops are stored in the library. Left conjugacy closed loops are obtained from right conjugacy closed loops via <codeclass="code">Opposite</code>.<br/></p>
<p>The library named <em>CC</em> contains all CC loops of order <spanclass="SimpleMath">\(2\le 2^k\le 64\)</span>, <spanclass="SimpleMath">\(3\le 3^k\le 81\)</span>, <spanclass="SimpleMath">\(5\le 5^k\le 125\)</span>, <spanclass="SimpleMath">\(7\le 7^k\le 343\)</span>, all nonassociative CC loops of order less than 28, and all nonassociative CC loops of order <spanclass="SimpleMath">\(p^2\)</span> and <spanclass="SimpleMath">\(2p\)</span> for any odd prime <spanclass="SimpleMath">\(p\)</span>.</p>
<p>By results of Kunen <ahref="chapBib_mj.html#biBKun">[Kun00]</a>, for every odd prime <spanclass="SimpleMath">\(p\)</span> there are precisely 3 nonassociative conjugacy closed loops of order <spanclass="SimpleMath">\(p^2\)</span>. Csörgő and Drápal <ahref="chapBib_mj.html#biBCsDr">[CD05]</a> described these 3 loops by multiplicative formulas on <spanclass="SimpleMath">\(\mathbb{Z}_{p^2}\)</span> and <spanclass="SimpleMath">\(\mathbb{Z}_p \times \mathbb{Z}_p\)</span> as follows:</p>
<ul>
<li><p>Case <spanclass="SimpleMath">\(m = 1\)</span>:Let <spanclass="SimpleMath">\(k\)</span> be the smallest positive integer relatively prime to <spanclass="SimpleMath">\(p\)</span> and such that <spanclass="SimpleMath">\(k\)</span> is a square modulo <spanclass="SimpleMath">\(p\)</span> (i.e., <spanclass="SimpleMath">\(k=1\)</span>). Define multiplication on <spanclass="SimpleMath">\(\mathbb{Z}_{p^2}\)</span> by <spanclass="SimpleMath">\(x\cdot y = x + y + kpx^2y\)</span>.</p>
</li>
<li><p>Case <spanclass="SimpleMath">\(m = 2\)</span>: Let <spanclass="SimpleMath">\(k\)</span> be the smallest positive integer relatively prime to <spanclass="SimpleMath">\(p\)</span> and such that <spanclass="SimpleMath">\(k\)</span> is not a square modulo <spanclass="SimpleMath">\(p\)</span>. Define multiplication on <spanclass="SimpleMath">\(\mathbb{Z}_{p^2}\)</span> by <spanclass="SimpleMath">\(x\cdot y = x + y + kpx^2y\)</span>.</p>
</li>
<li><p>Case <spanclass="SimpleMath">\(m = 3\)</span>: Define multiplication on <spanclass="SimpleMath">\(\mathbb{Z}_p \times \mathbb{Z}_p\)</span> by <spanclass="SimpleMath">\((x,a)(y,b) = (x+y, a+b+x^2y )\)</span>.</p>
</li>
</ul>
<p>Moreover, Wilson <ahref="chapBib_mj.html#biBWi">[WJ75]</a> constructed a nonassociative conjugacy closed loop of order <spanclass="SimpleMath">\(2p\)</span> for every odd prime <spanclass="SimpleMath">\(p\)</span>, and Kunen <ahref="chapBib_mj.html#biBKun">[Kun00]</a> showed that there are no other nonassociative conjugacy closed oops of this order. Here is the relevant multiplication formula on <spanclass="SimpleMath">\(\mathbb{Z}_2 \times \mathbb{Z}_p\)</span>: <spanclass="SimpleMath">\((0,m)(0,n) = ( 0, m + n )\)</span>, <spanclass="SimpleMath">\((0,m)(1,n) = ( 1, -m + n )\)</span>, <spanclass="SimpleMath">\((1,m)(0,n) = ( 1, m + n)\)</span>, <spanclass="SimpleMath">\((1,m)(1,n) = ( 0, 1 - m + n )\)</span>.</p>
<p><em>Paige loops</em> are nonassociative finite simple Moufang loops. By <ahref="chapBib_mj.html#biBLi">[Lie87]</a>, there is precisely one Paige loop for every finite field.</p>
<p>The library named <em>Paige</em> contains the smallest nonassociative simple Moufang loop.</p>
<divclass="func"><tableclass="func"width="100%"><tr><tdclass="tdleft"><codeclass="func">‣ PaigeLoop</code>( <varclass="Arg">q</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<p>Returns: The Paige loop constructed over the finite field of order <varclass="Arg">q</var>. Only the case <codeclass="code"><varclass="Arg">q</var>=2</code> is implemented.</p>
<p>The library named <em>nilpotent</em> contains all nonassociative nilpotent loops of order less than 12 up to isomorphism. There are 2 nonassociative nilpotent loops of order 6, 134 of order 8, 8 of order 9 and 1043 of order 10.</p>
<p>See <ahref="chapBib_mj.html#biBDaVo">[DV09]</a> for more on enumeration of nilpotent loops. For instance, there are 2623755 nilpotent loops of order 12, and 123794003928541545927226368 nilpotent loops of order 22.</p>
<p>The library named <em>automorphic</em> contains all nonassociative automorphic loops of order less than 16 up to isomorphism (there is 1 such loop of order 6, 7 of order 8, 3 of order 10, 2 of order 12, 5 of order 14, and 2 of order 15) and all commutative automorphic loops of order 3, 9, 27 and 81 (there are 1, 2, 7 and 72 such loops).</p>
<p>It turns out that commutative automorphic loops of order 3, 9, 27 and 81 (but not 243) are in one-to-on correspondence with left Bruck loops of the respective orders, see <ahref="chapBib_mj.html#biBGreer">[Gre14]</a>, <ahref="chapBib_mj.html#biBStuhlVojtechovsky">[SV17]</a>. Only the left Bruck loops are stored in the library.</p>
<p>The library named <em>interesting</em> contains some loops that are illustrative in the theory of loops. At this point, the library contains a nonassociative loop of order 5, a nonassociative nilpotent loop of order 6, a non-Moufang left Bol loop of order 16, the loop of sedenions of order 32 (sedenions generalize octonions), and the unique nonassociative simple right Bol loop of order 96 and exponent 2.</p>
<p>For the library named <em>small</em> we also provide the corresponding library of loops up to isotopism. In general, given a library named <em>libname</em>, the corresponding library of loops up to isotopism is named <em>itp lib</em>, and the loops can be retrieved by the template <codeclass="code">ItpLibLoop(n,m)</code>.</p>
<p>Note that loops up to isotopism form a subset of the corresponding library of loops up to isomorphism. For instance, the above example shows that the 14th small loop of order 6 up to isotopism is in fact the 42nd small loop of order 6 up to isomorphism.</p>
<divclass="chlinkprevnextbot"> <ahref="chap0_mj.html">[Top of Book]</a> <ahref="chap0_mj.html#contents">[Contents]</a> <ahref="chap8_mj.html">[Previous Chapter]</a> <ahref="chapA_mj.html">[Next Chapter]</a> </div>