loops/doc/chap7_mj.html
Glen Whitney f64208f12f update to LOOPS 3.4.0
These are simply the changes as distributed.
2017-10-29 23:54:13 -04:00

652 lines
49 KiB
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="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (Loops) - Chapter 7: Testing Properties of Quasigroups and Loops</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="chap7" 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="chapA_mj.html">A</a> <a href="chapB_mj.html">B</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.html">Ind</a> </div>
<div class="chlinkprevnexttop">&nbsp;<a href="chap0_mj.html">[Top of Book]</a>&nbsp; <a href="chap0_mj.html#contents">[Contents]</a>&nbsp; &nbsp;<a href="chap6_mj.html">[Previous Chapter]</a>&nbsp; &nbsp;<a href="chap8_mj.html">[Next Chapter]</a>&nbsp; </div>
<p id="mathjaxlink" class="pcenter"><a href="chap7.html">[MathJax off]</a></p>
<p><a id="X7910E575825C713E" name="X7910E575825C713E"></a></p>
<div class="ChapSects"><a href="chap7_mj.html#X7910E575825C713E">7 <span class="Heading">Testing Properties of Quasigroups and Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X7960E3FB7A7F0F00">7.1 <span class="Heading">Associativity, Commutativity and Generalizations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7C83B5A47FD18FB7">7.1-1 IsAssociative</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X830A4A4C795FBC2D">7.1-2 IsCommutative</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7D53EA947F1CDA69">7.1-3 IsPowerAssociative</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X872DCA027E1A4A1D">7.1-4 IsDiassociative</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X853841C5820BFEA4">7.2 <span class="Heading">Inverse Propeties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X85EDD10586596458">7.2-1 <span class="Heading">HasLeftInverseProperty, HasRightInverseProperty and HasInverseProperty</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X86B93E1B7AEA6EDA">7.2-2 HasTwosidedInverses</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X793909B780761EA8">7.2-3 HasWeakInverseProperty</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7F46CE6B7D387158">7.2-4 HasAutomorphicInverseProperty</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X8538D4638232DB51">7.2-5 HasAntiautomorphicInverseProperty</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X7D8CB6DA828FD744">7.3 <span class="Heading">Some Properties of Quasigroups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X834848ED85F9012B">7.3-1 IsSemisymmetric</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X834F809B8060B754">7.3-2 IsTotallySymmetric</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7CB5896082D29173">7.3-3 IsIdempotent</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X83DE7DD77C056C1F">7.3-4 IsSteinerQuasigroup</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7CA3DCA07B6CB9BD">7.3-5 IsUnipotent</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7B76FD6E878ED4F1">7.3-6 <span class="Heading">IsLeftDistributive, IsRightDistributive, IsDistributive</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7F23D4D97A38D223">7.3-7 <span class="Heading">IsEntropic and IsMedial</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X780D907986EBA6C7">7.4 <span class="Heading">Loops of Bol Moufang Type</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7988AFE27D06ACB5">7.4-1 IsExtraLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7F1C151484C97E61">7.4-2 IsMoufangLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X866F04DC7AE54B7C">7.4-3 IsCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X801DAAE8834A1A65">7.4-4 IsLeftBolLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X79279F9787E72566">7.4-5 IsRightBolLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X789E0A6979697C4C">7.4-6 IsLCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7B03CC577802F4AB">7.4-7 IsRCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X819F285887B5EB9E">7.4-8 IsLeftNuclearSquareLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X8474F55681244A8A">7.4-9 IsMiddleNuclearSquareLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X807B3B21825E3076">7.4-10 IsRightNuclearSquareLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X796650088213229B">7.4-11 IsNuclearSquareLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7C32851A7AF1C45F">7.4-12 IsFlexible</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7DF0196786B9CE08">7.4-13 IsLeftAlternative</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X8416FAD87F148F5D">7.4-14 IsRightAlternative</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X8379356E82DB5DDA">7.4-15 IsAlternative</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X83A501387E1AC371">7.5 <span class="Heading">Power Alternative Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X875C3DF681B3FAE2">7.5-1 <span class="Heading">IsLeftPowerAlternative, IsRightPowerAlternative and IsPowerAlternative</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X8176B2C47A4629CD">7.6 <span class="Heading">Conjugacy Closed Loops and Related Properties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X784E08CD7B710AF4">7.6-1 IsLCCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7B3016B47A1A8213">7.6-2 IsRCCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X878B614479DCB83F">7.6-3 IsCCLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X8655956878205FC1">7.6-4 IsOsbornLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X793B22EA8643C667">7.7 <span class="Heading">Automorphic Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7F063914804659F1">7.7-1 IsLeftAutomorphicLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7DFE830584A769E5">7.7-2 IsMiddleAutomorphicLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7EA9165A87F99E35">7.7-3 IsRightAutomorphicLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X7899603184CF13FD">7.7-4 IsAutomorphicLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap7_mj.html#X846F363879BAB349">7.8 <span class="Heading">Additonal Varieties of Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X790FA1188087D5C1">7.8-1 IsCodeLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X793600C9801F4F62">7.8-2 IsSteinerLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X85F1BD4280E44F5B">7.8-3 <span class="Heading">IsLeftBruckLoop and IsLeftKLoop</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7_mj.html#X857B373E7B4E0519">7.8-4 <span class="Heading">IsRightBruckLoop and IsRightKLoop</span></a>
</span>
</div></div>
</div>
<h3>7 <span class="Heading">Testing Properties of Quasigroups and Loops</span></h3>
<p>Although loops are quasigroups, it is often the case in the literature that a property of the same name can differ for quasigroups and loops. For instance, a Steiner loop is not necessarily a Steiner quasigroup.</p>
<p>To avoid such ambivalences, we often include the noun <code class="code">Loop</code> or <code class="code">Quasigroup</code> as part of the name of the property, e.g., <code class="code">IsSteinerQuasigroup</code> versus <code class="code">IsSteinerLoop</code>.</p>
<p>On the other hand, some properties coincide for quasigroups and loops and we therefore do not include <code class="code">Loop</code>, <code class="code">Quasigroup</code> as part of the name of the property, e.g., <code class="code">IsCommutative</code>.</p>
<p><a id="X7960E3FB7A7F0F00" name="X7960E3FB7A7F0F00"></a></p>
<h4>7.1 <span class="Heading">Associativity, Commutativity and Generalizations</span></h4>
<p><a id="X7C83B5A47FD18FB7" name="X7C83B5A47FD18FB7"></a></p>
<h5>7.1-1 IsAssociative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsAssociative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an associative quasigroup.</p>
<p><a id="X830A4A4C795FBC2D" name="X830A4A4C795FBC2D"></a></p>
<h5>7.1-2 IsCommutative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsCommutative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a commutative quasigroup.</p>
<p><a id="X7D53EA947F1CDA69" name="X7D53EA947F1CDA69"></a></p>
<h5>7.1-3 IsPowerAssociative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsPowerAssociative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a power associative quasigroup.</p>
<p>A quasigroup <span class="SimpleMath">\(Q\)</span> is said to be <em>power associative</em> if every element of <span class="SimpleMath">\(Q\)</span> generates an associative quasigroup, that is, a group.</p>
<p><a id="X872DCA027E1A4A1D" name="X872DCA027E1A4A1D"></a></p>
<h5>7.1-4 IsDiassociative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsDiassociative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a diassociative quasigroup.</p>
<p>A quasigroup <span class="SimpleMath">\(Q\)</span> is said to be <em>diassociative</em> if any two elements of <span class="SimpleMath">\(Q\)</span> generate an associative quasigroup, that is, a group. Note that a diassociative quasigroup is necessarily a loop, but it need not be so declared in <strong class="pkg">LOOPS</strong>.</p>
<p><a id="X853841C5820BFEA4" name="X853841C5820BFEA4"></a></p>
<h4>7.2 <span class="Heading">Inverse Propeties</span></h4>
<p>For an element <span class="SimpleMath">\(x\)</span> of a loop <span class="SimpleMath">\(Q\)</span>, the <em>left inverse</em> of <span class="SimpleMath">\(x\)</span> is the element <span class="SimpleMath">\(x^\lambda\)</span> of <span class="SimpleMath">\(Q\)</span> such that <span class="SimpleMath">\(x^\lambda \cdot x = 1\)</span>, while the <em>right inverse</em> of <span class="SimpleMath">\(x\)</span> is the element <span class="SimpleMath">\(x^\rho\)</span> of <span class="SimpleMath">\(Q\)</span> such that <span class="SimpleMath">\(x\cdot x^\rho = 1\)</span>.</p>
<p><a id="X85EDD10586596458" name="X85EDD10586596458"></a></p>
<h5>7.2-1 <span class="Heading">HasLeftInverseProperty, HasRightInverseProperty and HasInverseProperty</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HasLeftInverseProperty</code>( <var class="Arg">Q</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">&#8227; HasRightInverseProperty</code>( <var class="Arg">Q</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">&#8227; HasInverseProperty</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if a loop <var class="Arg">Q</var> has the left inverse property, right inverse property, resp. inverse property.</p>
<p>A loop <span class="SimpleMath">\(Q\)</span> has the <em>left inverse property</em> if <span class="SimpleMath">\(x^\lambda(xy)=y\)</span> for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>. Dually, <span class="SimpleMath">\(Q\)</span> has the <em>right inverse property</em> if <span class="SimpleMath">\((yx)x^\rho=y\)</span> for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>. If <span class="SimpleMath">\(Q\)</span> has both the left inverse property and the right inverse property, it has the <em>inverse property</em>.</p>
<p><a id="X86B93E1B7AEA6EDA" name="X86B93E1B7AEA6EDA"></a></p>
<h5>7.2-2 HasTwosidedInverses</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HasTwosidedInverses</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if a loop <var class="Arg">Q</var> has two-sided inverses.</p>
<p>A loop <span class="SimpleMath">\(Q\)</span> is said to have <em>two-sided inverses</em> if <span class="SimpleMath">\(x^\lambda=x^\rho\)</span> for every <span class="SimpleMath">\(x\)</span> in <span class="SimpleMath">\(Q\)</span>.</p>
<p><a id="X793909B780761EA8" name="X793909B780761EA8"></a></p>
<h5>7.2-3 HasWeakInverseProperty</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HasWeakInverseProperty</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if a loop <var class="Arg">Q</var> has the weak inverse property.</p>
<p>A loop <span class="SimpleMath">\(Q\)</span> has the <em>weak inverse property</em> if <span class="SimpleMath">\((xy)^\lambda x = y^\lambda\)</span> (equivalently, <span class="SimpleMath">\(x(yx)^\rho = y^\rho\)</span>) holds for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>.</p>
<p><a id="X7F46CE6B7D387158" name="X7F46CE6B7D387158"></a></p>
<h5>7.2-4 HasAutomorphicInverseProperty</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HasAutomorphicInverseProperty</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if a loop <var class="Arg">Q</var> has the automorphic inverse property.</p>
<p>According to <a href="chapBib_mj.html#biBAr">[Art59]</a>, a loop <span class="SimpleMath">\(Q\)</span> has the <em>automorphic inverse property</em> if <span class="SimpleMath">\((xy)^\lambda = x^\lambda y^\lambda\)</span>, or, equivalently, <span class="SimpleMath">\((xy)^\rho = x^\rho y^\rho\)</span> holds for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>.</p>
<p><a id="X8538D4638232DB51" name="X8538D4638232DB51"></a></p>
<h5>7.2-5 HasAntiautomorphicInverseProperty</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; HasAntiautomorphicInverseProperty</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if a loop <var class="Arg">Q</var> has the antiautomorphic inverse property.</p>
<p>A loop <span class="SimpleMath">\(Q\)</span> has the <em>antiautomorphic inverse property</em> if <span class="SimpleMath">\((xy)^\lambda=y^\lambda x^\lambda\)</span>, or, equivalently, <span class="SimpleMath">\((xy)^\rho = y^\rho x^\rho\)</span> holds for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>.<br /></p>
<p>See Appendix <a href="chapB_mj.html#X84EFA4C07D4277BB"><span class="RefLink">B</span></a> for implications implemented in <strong class="pkg">LOOPS</strong> among various inverse properties.</p>
<p><a id="X7D8CB6DA828FD744" name="X7D8CB6DA828FD744"></a></p>
<h4>7.3 <span class="Heading">Some Properties of Quasigroups</span></h4>
<p><a id="X834848ED85F9012B" name="X834848ED85F9012B"></a></p>
<h5>7.3-1 IsSemisymmetric</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsSemisymmetric</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a semisymmetric quasigroup.</p>
<p>A quasigroup <span class="SimpleMath">\(Q\)</span> is <em>semisymmetric</em> if <span class="SimpleMath">\((xy)x=y\)</span>, or, equivalently <span class="SimpleMath">\(x(yx)=y\)</span> holds for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>.</p>
<p><a id="X834F809B8060B754" name="X834F809B8060B754"></a></p>
<h5>7.3-2 IsTotallySymmetric</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsTotallySymmetric</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a totally symmetric quasigroup.</p>
<p>A commutative semisymmetric quasigroup is called <em>totally symmetric</em>. Totally symmetric quasigroups are precisely the quasigroups satisfying <span class="SimpleMath">\(xy=x\backslash y = x/y\)</span>.</p>
<p><a id="X7CB5896082D29173" name="X7CB5896082D29173"></a></p>
<h5>7.3-3 IsIdempotent</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsIdempotent</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an idempotent quasigroup.</p>
<p>A quasigroup is <em>idempotent</em> if it satisfies <span class="SimpleMath">\(x^2=x\)</span>.</p>
<p><a id="X83DE7DD77C056C1F" name="X83DE7DD77C056C1F"></a></p>
<h5>7.3-4 IsSteinerQuasigroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsSteinerQuasigroup</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a Steiner quasigroup.</p>
<p>A totally symmetric idempotent quasigroup is called a <em>Steiner quasigroup</em>.</p>
<p><a id="X7CA3DCA07B6CB9BD" name="X7CA3DCA07B6CB9BD"></a></p>
<h5>7.3-5 IsUnipotent</h5>
<p>A quasigroup <span class="SimpleMath">\(Q\)</span> is <em>unipotent</em> if it satisfies <span class="SimpleMath">\(x^2=y^2\)</span> for every <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> in <span class="SimpleMath">\(Q\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsUnipotent</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a unipotent quasigroup.</p>
<p><a id="X7B76FD6E878ED4F1" name="X7B76FD6E878ED4F1"></a></p>
<h5>7.3-6 <span class="Heading">IsLeftDistributive, IsRightDistributive, IsDistributive</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftDistributive</code>( <var class="Arg">Q</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">&#8227; IsRightDistributive</code>( <var class="Arg">Q</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">&#8227; IsDistributive</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left distributive quasigroup, resp. a right distributive quasigroup, resp. a distributive quasigroup.</p>
<p>A quasigroup is <em>left distributive</em> if it satisfies <span class="SimpleMath">\(x(yz) = (xy)(xz)\)</span>, <em>right distributive</em> if it satisfies <span class="SimpleMath">\((xy)z = (xz)(yz)\)</span>, and <em>distributive</em> if it is both left distributive and right distributive.</p>
<p><strong class="button">Remark:</strong> In order to be compatible with <strong class="pkg">GAP</strong>s terminology, we also support the synonyms <code class="code">IsLDistributive</code> and <code class="code">IsRDistributive</code> of <code class="code">IsLeftDistributive</code> and <code class="code">IsRightDistributive</code>, respectively.</p>
<p><a id="X7F23D4D97A38D223" name="X7F23D4D97A38D223"></a></p>
<h5>7.3-7 <span class="Heading">IsEntropic and IsMedial</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsEntropic</code>( <var class="Arg">Q</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">&#8227; IsMedial</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an entropic (aka medial) quasigroup.</p>
<p>A quasigroup is <em>entropic</em> or <em>medial</em> if it satisfies the identity <span class="SimpleMath">\((xy)(uv) = (xu)(yv)\)</span>.</p>
<p><a id="X780D907986EBA6C7" name="X780D907986EBA6C7"></a></p>
<h4>7.4 <span class="Heading">Loops of Bol Moufang Type</span></h4>
<p>Following <a href="chapBib_mj.html#biBFe">[Fen69]</a> and <a href="chapBib_mj.html#biBPhiVoj">[PV05]</a>, a variety of loops is said to be of <em>Bol-Moufang type</em> if it is defined by a single <em>identity of Bol-Moufang type</em>, i.e., by an identity that contains the same 3 variables on both sides, exactly one of the variables occurs twice on both sides, and the variables occur in the same order on both sides.</p>
<p>It is proved in <a href="chapBib_mj.html#biBPhiVoj">[PV05]</a> that there are 13 varieties of nonassociative loops of Bol-Moufang type. These are:</p>
<ul>
<li><p><em>left alternative loops</em> defined by <span class="SimpleMath">\(x(xy) = (xx)y\)</span>,</p>
</li>
<li><p><em>right alternative loops</em> defined by <span class="SimpleMath">\(x(yy) = (xy)y\)</span>,</p>
</li>
<li><p><em>left nuclear square loops</em> defined by <span class="SimpleMath">\((xx)(yz) = ((xx)y)z\)</span>,</p>
</li>
<li><p><em>middle nuclear square loops</em>defined by <span class="SimpleMath">\(x((yy)z) = (x(yy))z\)</span>,</p>
</li>
<li><p><em>right nuclear square loops</em> defined by <span class="SimpleMath">\(x(y(zz)) = (xy)(zz)\)</span>,</p>
</li>
<li><p><em>flexible loops</em> defined by <span class="SimpleMath">\(x(yx) = (xy)x\)</span>,</p>
</li>
<li><p><em>left Bol loops</em> defined by <span class="SimpleMath">\(x(y(xz)) = (x(yx))z\)</span>, always left alternative,</p>
</li>
<li><p><em>right Bol loops</em> defined by <span class="SimpleMath">\(x((yz)y) = ((xy)z)y\)</span>, always right alternative,</p>
</li>
<li><p><em>LC loops</em> defined by <span class="SimpleMath">\((xx)(yz) = (x(xy))z\)</span>, always left alternative, left nuclear square and middle nuclear square,</p>
</li>
<li><p><em>RC loops</em> defined by <span class="SimpleMath">\(x((yz)z) = (xy)(zz)\)</span>, always right alternative, right nuclear square and middle nuclear square,</p>
</li>
<li><p><em>Moufang loops</em> defined by <span class="SimpleMath">\((xy)(zx) = (x(yz))x\)</span>, always flexible, left Bol and right Bol,</p>
</li>
<li><p><em>C loops</em> defined by <span class="SimpleMath">\(x(y(yz)) = ((xy)y)z\)</span>, always LC and RC,</p>
</li>
<li><p><em>extra loops</em> defined by <span class="SimpleMath">\(x(y(zx)) = ((xy)z)x\)</span>, always Moufang and C.</p>
</li>
</ul>
<p>Note that although some of the defining identities are not of Bol-Moufang type, they are equivalent to a Bol-Moufang identity. Moreover, many varieties of loops of Bol-Moufang type can be defined by one of several equivalent identities of Bol-Moufang type.</p>
<p>There are also several varieties related to loops of Bol-Moufang type. A loop is said to be <em>alternative</em> if it is both left alternative and right alternative. A loop is <em>nuclear square</em> if it is left nuclear square, middle nuclear square and right nuclear square.</p>
<p><a id="X7988AFE27D06ACB5" name="X7988AFE27D06ACB5"></a></p>
<h5>7.4-1 IsExtraLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsExtraLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an extra loop.</p>
<p><a id="X7F1C151484C97E61" name="X7F1C151484C97E61"></a></p>
<h5>7.4-2 IsMoufangLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsMoufangLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a Moufang loop.</p>
<p><a id="X866F04DC7AE54B7C" name="X866F04DC7AE54B7C"></a></p>
<h5>7.4-3 IsCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsCLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a C loop.</p>
<p><a id="X801DAAE8834A1A65" name="X801DAAE8834A1A65"></a></p>
<h5>7.4-4 IsLeftBolLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftBolLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left Bol loop.</p>
<p><a id="X79279F9787E72566" name="X79279F9787E72566"></a></p>
<h5>7.4-5 IsRightBolLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRightBolLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right Bol loop.</p>
<p><a id="X789E0A6979697C4C" name="X789E0A6979697C4C"></a></p>
<h5>7.4-6 IsLCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLCLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an LC loop.</p>
<p><a id="X7B03CC577802F4AB" name="X7B03CC577802F4AB"></a></p>
<h5>7.4-7 IsRCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRCLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an RC loop.</p>
<p><a id="X819F285887B5EB9E" name="X819F285887B5EB9E"></a></p>
<h5>7.4-8 IsLeftNuclearSquareLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftNuclearSquareLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left nuclear square loop.</p>
<p><a id="X8474F55681244A8A" name="X8474F55681244A8A"></a></p>
<h5>7.4-9 IsMiddleNuclearSquareLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsMiddleNuclearSquareLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a middle nuclear square loop.</p>
<p><a id="X807B3B21825E3076" name="X807B3B21825E3076"></a></p>
<h5>7.4-10 IsRightNuclearSquareLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRightNuclearSquareLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right nuclear square loop.</p>
<p><a id="X796650088213229B" name="X796650088213229B"></a></p>
<h5>7.4-11 IsNuclearSquareLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsNuclearSquareLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a nuclear square loop.</p>
<p><a id="X7C32851A7AF1C45F" name="X7C32851A7AF1C45F"></a></p>
<h5>7.4-12 IsFlexible</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsFlexible</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a flexible quasigroup.</p>
<p><a id="X7DF0196786B9CE08" name="X7DF0196786B9CE08"></a></p>
<h5>7.4-13 IsLeftAlternative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftAlternative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left alternative quasigroup.</p>
<p><a id="X8416FAD87F148F5D" name="X8416FAD87F148F5D"></a></p>
<h5>7.4-14 IsRightAlternative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRightAlternative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right alternative quasigroup.</p>
<p><a id="X8379356E82DB5DDA" name="X8379356E82DB5DDA"></a></p>
<h5>7.4-15 IsAlternative</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsAlternative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an alternative quasigroup.<br /></p>
<p>While listing the varieties of loops of Bol-Moufang type, we have also listed all inclusions among them. These inclusions are built into <strong class="pkg">LOOPS</strong> as filters. <br /></p>
<p>The following trivial example shows some of the implications and the naming conventions of <strong class="pkg">LOOPS</strong> at work:</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L := LoopByCayleyTable( [ [ 1, 2 ], [ 2, 1 ] ] );</span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ IsLeftBolLoop( L ), L ]</span>
[ true, &lt;left Bol loop of order 2&gt; ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ HasIsLeftAlternativeLoop( L ), IsLeftAlternativeLoop( L ) ];</span>
[ true, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ HasIsRightBolLoop( L ), IsRightBolLoop( L ) ];</span>
[ false, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L;</span>
&lt;Moufang loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ IsAssociative( L ), L ];</span>
[ true, &lt;associative loop of order 2&gt; ]
</pre></div>
<p>The analogous terminology for quasigroups of Bol-Moufang type is not standard yet, and hence is not supported in <strong class="pkg">LOOPS</strong> except for the situations explicitly noted above.</p>
<p><a id="X83A501387E1AC371" name="X83A501387E1AC371"></a></p>
<h4>7.5 <span class="Heading">Power Alternative Loops</span></h4>
<p>A loop is <em>left power alternative</em> if it is power associative and satisfies <span class="SimpleMath">\(x^n(x^m y) = x^{n+m}y\)</span> for all elements <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> and all integers <span class="SimpleMath">\(m\)</span>, <span class="SimpleMath">\(n\)</span>. Similarly, a loop is <em>right power alternative</em> if it is power associative and satisfies <span class="SimpleMath">\((x y^n)y^m = xy^{n+m}\)</span> for all elements <span class="SimpleMath">\(x\)</span>, <span class="SimpleMath">\(y\)</span> and all integers <span class="SimpleMath">\(m\)</span>, <span class="SimpleMath">\(n\)</span>. A loop is <em>power alternative</em> if it is both left power alternative and right power alternative.</p>
<p>Left power alternative loops are left alternative and have the left inverse property. Left Bol loops and LC loops are left power alternative.</p>
<p><a id="X875C3DF681B3FAE2" name="X875C3DF681B3FAE2"></a></p>
<h5>7.5-1 <span class="Heading">IsLeftPowerAlternative, IsRightPowerAlternative and IsPowerAlternative</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftPowerAlternative</code>( <var class="Arg">Q</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">&#8227; IsRightPowerAlternative</code>( <var class="Arg">Q</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">&#8227; IsPowerAlternative</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left power alternative loop, resp. a right power alternative loop, resp. a power alternative loop.</p>
<p><a id="X8176B2C47A4629CD" name="X8176B2C47A4629CD"></a></p>
<h4>7.6 <span class="Heading">Conjugacy Closed Loops and Related Properties</span></h4>
<p>A loop <span class="SimpleMath">\(Q\)</span> is <em>left conjugacy closed</em> if the set of left translations of <span class="SimpleMath">\(Q\)</span> is closed under conjugation (by itself). Similarly, a loop <span class="SimpleMath">\(Q\)</span> is <em>right conjugacy closed</em> if the set of right translations of <span class="SimpleMath">\(Q\)</span> is closed under conjugation. A loop is <em>conjugacy closed</em> if it is both left conjugacy closed and right conjugacy closed. It is common to refer to these loops as LCC, RCC, and CC loops, respectively.</p>
<p>The equivalence LCC <span class="SimpleMath">\(+\)</span> RCC <span class="SimpleMath">\(=\)</span> CC is built into <strong class="pkg">LOOPS</strong>.</p>
<p><a id="X784E08CD7B710AF4" name="X784E08CD7B710AF4"></a></p>
<h5>7.6-1 IsLCCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLCCLoop</code>( <var class="Arg">Q</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">&#8227; IsLeftConjugacyClosedLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left conjugacy closed loop.</p>
<p><a id="X7B3016B47A1A8213" name="X7B3016B47A1A8213"></a></p>
<h5>7.6-2 IsRCCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRCCLoop</code>( <var class="Arg">Q</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">&#8227; IsRightConjugacyClosedLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right conjugacy closed loop.</p>
<p><a id="X878B614479DCB83F" name="X878B614479DCB83F"></a></p>
<h5>7.6-3 IsCCLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsCCLoop</code>( <var class="Arg">Q</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">&#8227; IsConjugacyClosedLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a conjugacy closed loop.</p>
<p><a id="X8655956878205FC1" name="X8655956878205FC1"></a></p>
<h5>7.6-4 IsOsbornLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsOsbornLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an Osborn loop.</p>
<p>A loop is <em>Osborn</em> if it satisfies <span class="SimpleMath">\(x(yz\cdot x)=(x^\lambda\backslash y)(zx)\)</span>. Both Moufang loops and CC loops are Osborn.</p>
<p><a id="X793B22EA8643C667" name="X793B22EA8643C667"></a></p>
<h4>7.7 <span class="Heading">Automorphic Loops</span></h4>
<p>A loop <span class="SimpleMath">\(Q\)</span> whose all left (resp. middle, resp. right) inner mappings are automorphisms of <span class="SimpleMath">\(Q\)</span> is known as a <em>left automorphic loop</em> (resp. <em>middle automorphic loop</em>, resp. <em>right automorphic loop</em>).</p>
<p>A loop <span class="SimpleMath">\(Q\)</span> is an <em>automorphic loop</em> if all inner mappings of <span class="SimpleMath">\(Q\)</span> are automorphisms of <span class="SimpleMath">\(Q\)</span>.</p>
<p>Automorphic loops are also known as <em>A loops</em>, and similar terminology exists for left, right and middle automorphic loops.</p>
<p>The following results hold for automorphic loops:</p>
<ul>
<li><p>automorphic loops are power associative <a href="chapBib_mj.html#biBBrPa">[BP56]</a></p>
</li>
<li><p>in an automorphic loop <span class="SimpleMath">\(Q\)</span> we have <span class="SimpleMath">\({\rm Nuc}(Q) = {\rm Nuc}_{\lambda}(Q) = {\rm Nuc}_{\rho}(Q)\le {\rm Nuc}_{\mu}(Q)\)</span> and all nuclei are normal <a href="chapBib_mj.html#biBBrPa">[BP56]</a></p>
</li>
<li><p>a loop that is left automorphic and right automorphic satisfies the anti-automorphic inverse property and is automorphic <a href="chapBib_mj.html#biBJoKiNaVo">[JKNV11]</a></p>
</li>
<li><p>diassociative automorphic loops are Moufang <a href="chapBib_mj.html#biBKiKuPh">[KKP02]</a></p>
</li>
<li><p>automorphic loops of odd order are solvable <a href="chapBib_mj.html#biBKiKuPhVo">[KKPV16]</a></p>
</li>
<li><p>finite commutative automorphic loops are solvable <a href="chapBib_mj.html#biBGrKiNa">[GKN14]</a></p>
</li>
<li><p>commutative automorphic loops of order <span class="SimpleMath">\(p\)</span>, <span class="SimpleMath">\(2p\)</span>, <span class="SimpleMath">\(4p\)</span>, <span class="SimpleMath">\(p^2\)</span>, <span class="SimpleMath">\(2p^2\)</span>, <span class="SimpleMath">\(4p^2\)</span> (<span class="SimpleMath">\(p\)</span> an odd prime) are abelian groups <a href="chapBib_mj.html#biBVoQRS">[Voj15]</a></p>
</li>
<li><p>commutative automorphic loops of odd prime power order are centrally nilpotent <a href="chapBib_mj.html#biBJeKiVo">[JKV12]</a></p>
</li>
<li><p>for any prime <span class="SimpleMath">\(p\)</span>, there are <span class="SimpleMath">\(7\)</span> commutative automorphic loops of order <span class="SimpleMath">\(p^3\)</span> up to isomorphism <a href="chapBib_mj.html#biBBaGrVo">[BGV12]</a></p>
</li>
</ul>
<p>See the built-in filters and the survey <a href="chapBib_mj.html#biBVoQRS">[Voj15]</a> for additional properties of automorphic loops.</p>
<p><a id="X7F063914804659F1" name="X7F063914804659F1"></a></p>
<h5>7.7-1 IsLeftAutomorphicLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftAutomorphicLoop</code>( <var class="Arg">Q</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">&#8227; IsLeftALoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left automorphic loop.</p>
<p><a id="X7DFE830584A769E5" name="X7DFE830584A769E5"></a></p>
<h5>7.7-2 IsMiddleAutomorphicLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsMiddleAutomorphicLoop</code>( <var class="Arg">Q</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">&#8227; IsMiddleALoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a middle automorphic loop.</p>
<p><a id="X7EA9165A87F99E35" name="X7EA9165A87F99E35"></a></p>
<h5>7.7-3 IsRightAutomorphicLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRightAutomorphicLoop</code>( <var class="Arg">Q</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">&#8227; IsRightALoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right automorphic loop.</p>
<p><a id="X7899603184CF13FD" name="X7899603184CF13FD"></a></p>
<h5>7.7-4 IsAutomorphicLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsAutomorphicLoop</code>( <var class="Arg">Q</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">&#8227; IsALoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is an automorphic loop.</p>
<p><strong class="button">Remark:</strong> Be careful not to confuse <code class="code">IsALoop</code> and <code class="code">IsLoop</code>.</p>
<p><a id="X846F363879BAB349" name="X846F363879BAB349"></a></p>
<h4>7.8 <span class="Heading">Additonal Varieties of Loops</span></h4>
<p><a id="X790FA1188087D5C1" name="X790FA1188087D5C1"></a></p>
<h5>7.8-1 IsCodeLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsCodeLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a code loop.</p>
<p>A <em>code loop</em> is a Moufang 2-loop with a Frattini subloop of order 1 or 2. Code loops are extra and conjugacy closed.</p>
<p><a id="X793600C9801F4F62" name="X793600C9801F4F62"></a></p>
<h5>7.8-2 IsSteinerLoop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsSteinerLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a Steiner loop.</p>
<p>A <em>Steiner loop</em> is an inverse property loop of exponent 2. Steiner loops are commutative.</p>
<p><a id="X85F1BD4280E44F5B" name="X85F1BD4280E44F5B"></a></p>
<h5>7.8-3 <span class="Heading">IsLeftBruckLoop and IsLeftKLoop</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsLeftBruckLoop</code>( <var class="Arg">Q</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">&#8227; IsLeftKLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a left Bruck loop (aka left K loop).</p>
<p>A left Bol loop with the automorphic inverse property is known as a <em>left Bruck loop</em> or a <em>left K loop</em>.</p>
<p><a id="X857B373E7B4E0519" name="X857B373E7B4E0519"></a></p>
<h5>7.8-4 <span class="Heading">IsRightBruckLoop and IsRightKLoop</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsRightBruckLoop</code>( <var class="Arg">Q</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">&#8227; IsRightKLoop</code>( <var class="Arg">Q</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">Q</var> is a right Bruck loop (aka right K loop).</p>
<p>A right Bol loop with the automorphic inverse property is known as a <em>right Bruck loop</em> or a <em>right K loop</em>.</p>
<div class="chlinkprevnextbot">&nbsp;<a href="chap0_mj.html">[Top of Book]</a>&nbsp; <a href="chap0_mj.html#contents">[Contents]</a>&nbsp; &nbsp;<a href="chap6_mj.html">[Previous Chapter]</a>&nbsp; &nbsp;<a href="chap8_mj.html">[Next Chapter]</a>&nbsp; </div>
<div class="chlinkbot"><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="chapA_mj.html">A</a> <a href="chapB_mj.html">B</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>