Browse Source

update to LOOPS 3.4.0

These are simply the changes as distributed.
Loops3.4.0
Glen Whitney 4 years ago
parent
commit
f64208f12f
  1. 8
      PackageInfo.g
  2. 41
      data/automorphic.tbl
  3. 8058
      data/automorphic/automorphic_cocycles.tbl
  4. 61
      data/cc.tbl
  5. 61
      doc/chap0.txt
  6. 64
      doc/chap0_mj.html
  7. 11
      doc/chap1.txt
  8. 6
      doc/chap1_mj.html
  9. 4
      doc/chap3.txt
  10. 44
      doc/chap3_mj.html
  11. 140
      doc/chap4_mj.html
  12. 22
      doc/chap5_mj.html
  13. 31
      doc/chap6.txt
  14. 118
      doc/chap6_mj.html
  15. 26
      doc/chap7_mj.html
  16. 14
      doc/chap8_mj.html
  17. 86
      doc/chap9.txt
  18. 186
      doc/chap9_mj.html
  19. 7
      doc/chapB.txt
  20. 2
      doc/chapB_mj.html
  21. 7
      doc/chapBib.txt
  22. 23
      doc/chapBib_mj.html
  23. 54
      doc/chapInd.txt
  24. 54
      doc/chapInd_mj.html
  25. 161
      doc/loops.bbl
  26. 34
      doc/loops.bib
  27. 5
      doc/loops.blg
  28. 35
      doc/loops.brf
  29. 427
      doc/loops.idx
  30. 6
      doc/loops.ilg
  31. 485
      doc/loops.ind
  32. 856
      doc/loops.log
  33. 83
      doc/loops.out
  34. 246
      doc/loops.pnr
  35. 3930
      doc/loops.tex
  36. 241
      doc/loops.toc
  37. 64
      doc/loops.xml
  38. 559
      doc/loops_bib.xml
  39. 496
      doc/loops_bib.xml.bib
  40. BIN
      doc/manual.dvi
  41. 19055
      doc/manual.pdf
  42. 7519
      doc/manual.ps
  43. 556
      doc/manual.six
  44. 6
      etc/gapdoc.txt
  45. 4
      gap/banner.g
  46. 12
      gap/classes.gi
  47. 5
      gap/examples.gd
  48. 213
      gap/examples.gi
  49. 4
      gap/iso.gd
  50. 65
      gap/iso.gi
  51. 13
      gap/memory.gi
  52. 6
      gap/quasigroups.gd
  53. 48
      gap/quasigroups.gi
  54. 2
      tst/bol.tst
  55. 2
      tst/core_methods.tst
  56. 7
      tst/iso.tst
  57. 54
      tst/lib.tst
  58. 12
      tst/testall.g

8
PackageInfo.g

@ -1,9 +1,9 @@
SetPackageInfo( rec(
PackageName := "loops",
Subtitle := "Computing with quasigroups and loops in GAP",
Version := "3.3.0",
Date := "26/10/2016",
ArchiveURL := "http://www.math.du.edu/loops/loops-3.3.0",
Version := "3.4.0",
Date := "27/10/2017",
ArchiveURL := "http://www.math.du.edu/loops/loops-3.4.0",
ArchiveFormats := "-win.zip .tar.gz",
Persons := [
@ -83,7 +83,7 @@ Dependencies := rec(
),
AvailabilityTest := ReturnTrue,
BannerString := "This version of LOOPS is ready for GAP 4.7.\n",
BannerString := "This version of LOOPS is ready for GAP 4.8.\n",
Autoload := false, # false for deposited packages
TestFile := "tst/testall.g",

41
data/automorphic.tbl

@ -2,39 +2,21 @@
##
#W automorphic.tbl Automorphic loops G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: automorphic.tbl, v 3.3.0 2016/10/20 gap Exp $
#H @(#)$Id: automorphic.tbl, v 3.4.0 2017/10/23 gap Exp $
##
#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
#############################################################################
## Binding global variables
## LOOPS_automorphic_cocycles
## LOOPS_automorphic_bases
## LOOPS_automorphic_coordinates
# Many small automorphic loops are represtented by encoded Cayley tables.
#
# Commutative automorphic loops of order 243 are represtented as central
# extensions of the cyclic group of order 3.
# The necessary data is only loaded on demand and consists of:
# - LOOPS_automorphic_cocycles, a list of encoded bases of the
# space of cocycles modulo coboundaries for every factor loop F needed.
# - LOOPS_automorphic_coordinates, a list that for every loop
# points to the factor loop and gives coordinates of the required cocycle
# with respect to the relevant basis.
LOOPS_automorphic_data := [
#implemented orders
[3,6,8,9,10,12,14,15,27,81,243],
[3,6,8,9,10,12,14,15,27,81],
#number of nonassociative loops of given order
[1,1,7,2,3,2,5,2,7,72,118451],
[1,1,7,2,3,2,5,2,7,72],
#the loops
[
#order 3 (Z_3)
#order 3 (Z_3, use left Bruck loops, placeholder only)
[
"201"
],
#order 6
[
@ -50,10 +32,8 @@ LOOPS_automorphic_data := [
"0325476301675421076455760132467102374523106543201",
"0325476310674520176545761023467013275432106452301"
],
#order 9 (two abelian groups)
#order 9 (two abelian groups, use left Bruck loops, placeholder only)
[
"204537861534867678012861207201345534",
"204537861534867678120862017012453345"
]
,
#order 10
@ -80,20 +60,13 @@ LOOPS_automorphic_data := [
"234068597BDAEC340189675DEBCA401297856ECDAB012375968CAEBD6897ADECB041328975DCABE430215689EABDC102439756CBDEA324107568BECAD21304BDEC0413258976DECA4302187569ABDE1024395687ECAB3241076895CABD2130469758",
"234067895BCDEA340178956CDEAB401289567DEABC012395678EABCD7968ADBEC012348579ECADB340129685DBECA123405796CADBE401236857BECAD23401DBEC0432156789ECAD3210478956ADBE1043295678BECA4321067895CADB2104389567"
],
#order 27 (commutative only, placeholder)
#order 27 (commutative only, use left Bruck loops, placeholder)
[
]
,
#order 81 (commutative only, placeholder)
[
]
,
#order 243 (commutative only, placeholder)
#order 81 (commutative only, use left Bruck loops, placeholder)
[
]
]
];
LOOPS_automorphic_cocycles := [];
LOOPS_automorphic_bases := [];
LOOPS_automorphic_coordinates := [];

8058
data/automorphic/automorphic_cocycles.tbl

File diff suppressed because it is too large

61
data/cc.tbl

@ -1,31 +1,52 @@
#############################################################################
##
#W cc.tbl CC-loops p^2, 2p, for p odd prime G. P. Nagy / P. Vojtechovsky
#W cc.tbl Library of CC loops G. P. Nagy / P. Vojtechovsky
##
#H @(#)$Id: cc.tbl, v 3.0.0 2015/06/10 gap Exp $
#H @(#)$Id: cc.tbl, v 3.4.0 2015/06/10 gap Exp $
##
#Y Copyright (C) 2005, G. P. Nagy (University of Szeged, Hungary),
#Y P. Vojtechovsky (University of Denver, USA)
##
#############################################################################
## Binding global variables
## LOOPS_cc_used_factors
## LOOPS_cc_cocycles
## LOOPS_cc_bases
## LOOPS_cc_coordinates
# CC loops are activated as follows:
# If n = 2p or p^2, where p is a prime, then we call a method for
# cosntructing these loops.
# If n = 2p, where p is an odd prime, then we call an algebraic method for
# constructing these loops.
# If n = p^2, where p>3 is a prime, then we call an algebraic method for
# construction these loops.
# If n is a power of 2 or 3, then we use cocycles located in cc/cc_cocycles_n.tbl.
# For all other orders, we point to the library of RCC loops.
LOOPS_cc_data := [
#implemented orders
[ 8, 12, 16, 18, 20, 21, 24, 27],
#number of nonassociative loops of given order
[ 2, 3, 28, 7, 3, 1, 14, 55],
#the numbers of the loops in the RCC library
[ 2, 3, 4, 5, 7, 8, 9, 12, 16, 18, 20, 21, 24, 25, 27, 32, 49, 64, 81, 125, 343],
#number of loops of given order in the library
[ 1, 1, 2, 1, 1, 7, 5, 3, 42, 7, 3, 1, 14, 5, 60, 437, 5, 14854, 5406, 84, 122],
[
#order 8
[2,7],
#order 2 (Z_2)
["010"],
#order 3 (Z_3)
["201"],
#order 4 (placeholder only)
,
# order 5 (Z_5)
["2340401123"],
# order 7 (Z_7)
["234560456016012123345"],
#order 8 (placeholder only)
,
#order 9 (placeholder only)
,
#order 12
[53,73,89],
#order 16
[9,35,107,228,243,292,437,440,1043,1883,1936,2332,2420,2636,2645,2750,2753,2794,2797,2847,3682,3730,3739,3848,3949,4735,4904,4925],
#order 16 (placeholder only)
,
#order 18
[22,29,77,292,360,377,1133],
#order 20
@ -33,18 +54,12 @@ LOOPS_cc_data := [
#order 21
[104],
#order 24
[302,1025,2119,2182,2335,3066,4569,5176,5589,5997,7495,194830,225705,243216],
#order 27
[78,86,317,319,361,571,711,1080,1085,1624,1665,2217,2219,3614,3624,8579,8582,15059,15072,15503,15512,19439,23177,23214,26331,26348,52978,55027,55055,59116,59123,75864,78970,79011,83042,83104,83155,104913,106081,106144,110854,110892,110930,114102,117212,119407,134858,136370,140791,148160,148892,149330,151792,152090,152515]
[302,1025,2119,2182,2335,3066,4569,5176,5589,5997,7495,194830,225705,243216]
]
];
# The following can be used to point to CC loops of order 2p and p^2 in the library of RCC loops.
# order 6, [3]
# order 9, [5,4,3]
# order 10, [16]
# order 14, [97]
# order 22, [10346]
# order 25, [86,93,118]
# order 26, [151964]
LOOPS_cc_used_factors := [];
LOOPS_cc_cocycles := [];
LOOPS_cc_bases := [];
LOOPS_cc_coordinates := [];

61
doc/chap0.txt

@ -6,7 +6,7 @@
Computing with quasigroups and loops in GAP
Version 3.3.0
Version 3.4.0
Gábor P. Nagy
@ -28,7 +28,7 @@
-------------------------------------------------------
Copyright
© 2016 Gábor P. Nagy and Petr Vojtěchovský.
© 2017 Gábor P. Nagy and Petr Vojtěchovský.
-------------------------------------------------------
@ -167,10 +167,12 @@
6.11-3 QuasigroupsUpToIsomorphism
6.11-4 LoopsUpToIsomorphism
6.11-5 AutomorphismGroup
6.11-6 IsomorphicCopyByPerm
6.11-7 IsomorphicCopyByNormalSubloop
6.11-8 Discriminator
6.11-9 AreEqualDiscriminators
6.11-6 QuasigroupIsomorph
6.11-7 LoopIsomorph
6.11-8 IsomorphicCopyByPerm
6.11-9 IsomorphicCopyByNormalSubloop
6.11-10 Discriminator
6.11-11 AreEqualDiscriminators
6.12 Isotopisms
6.12-1 IsotopismLoops
6.12-2 LoopsUpToIsotopism
@ -256,28 +258,31 @@
9.2 Left Bol Loops and Right Bol Loops
9.2-1 LeftBolLoop
9.2-2 RightBolLoop
9.3 Moufang Loops
9.3-1 MoufangLoop
9.4 Code Loops
9.4-1 CodeLoop
9.5 Steiner Loops
9.5-1 SteinerLoop
9.6 Conjugacy Closed Loops
9.6-1 RCCLoop and RightConjugacyClosedLoop
9.6-2 LCCLoop and LeftConjugacyClosedLoop
9.6-3 CCLoop and ConjugacyClosedLoop
9.7 Small Loops
9.7-1 SmallLoop
9.8 Paige Loops
9.8-1 PaigeLoop
9.9 Nilpotent Loops
9.9-1 NilpotentLoop
9.10 Automorphic Loops
9.10-1 AutomorphicLoop
9.11 Interesting Loops
9.11-1 InterestingLoop
9.12 Libraries of Loops Up To Isotopism
9.12-1 ItpSmallLoop
9.3 Left Bruck Loops and Right Bruck Loops
9.3-1 LeftBruckLoop
9.3-2 RightBruckLoop
9.4 Moufang Loops
9.4-1 MoufangLoop
9.5 Code Loops
9.5-1 CodeLoop
9.6 Steiner Loops
9.6-1 SteinerLoop
9.7 Conjugacy Closed Loops
9.7-1 RCCLoop and RightConjugacyClosedLoop
9.7-2 LCCLoop and LeftConjugacyClosedLoop
9.7-3 CCLoop and ConjugacyClosedLoop
9.8 Small Loops
9.8-1 SmallLoop
9.9 Paige Loops
9.9-1 PaigeLoop
9.10 Nilpotent Loops
9.10-1 NilpotentLoop
9.11 Automorphic Loops
9.11-1 AutomorphicLoop
9.12 Interesting Loops
9.12-1 InterestingLoop
9.13 Libraries of Loops Up To Isotopism
9.13-1 ItpSmallLoop
A Files
B Filters

64
doc/chap0_mj.html

@ -31,7 +31,7 @@
<h2>Computing with quasigroups and loops in <strong class="pkg">GAP</strong></h2>
<p>Version 3.3.0</p>
<p>Version 3.4.0</p>
</div>
<p><b>Gábor P. Nagy
@ -50,7 +50,7 @@
<p><a id="X81488B807F2A1CF1" name="X81488B807F2A1CF1"></a></p>
<h3>Copyright</h3>
<p>© 2016 Gábor P. Nagy and Petr Vojtěchovský.</p>
<p>© 2017 Gábor P. Nagy and Petr Vojtěchovský.</p>
<p><a id="X8537FEB07AF2BEC8" name="X8537FEB07AF2BEC8"></a></p>
@ -331,10 +331,12 @@
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X82373C5479574F22">6.11-3 QuasigroupsUpToIsomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8308F38283C61B20">6.11-4 LoopsUpToIsomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X87677B0787B4461A">6.11-5 AutomorphismGroup</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X85B3E22679FD8D81">6.11-6 IsomorphicCopyByPerm</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8121DE3A78795040">6.11-7 IsomorphicCopyByNormalSubloop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7D09D8957E4A0973">6.11-8 Discriminator</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X812F0DEE7C896E18">6.11-9 AreEqualDiscriminators</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7A42812B7B027DD4">6.11-6 QuasigroupIsomorph</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7BD1AC32851286EA">6.11-7 LoopIsomorph</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X85B3E22679FD8D81">6.11-8 IsomorphicCopyByPerm</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8121DE3A78795040">6.11-9 IsomorphicCopyByNormalSubloop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7D09D8957E4A0973">6.11-10 Discriminator</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X812F0DEE7C896E18">6.11-11 AreEqualDiscriminators</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap6_mj.html#X7E996BDD81E594F9">6.12 <span class="Heading">Isotopisms</span></a>
</span>
@ -474,60 +476,66 @@
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7EE99F647C537994">9.2-1 LeftBolLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X8774304282654C58">9.2-2 RightBolLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7953702D84E60AF4">9.3 <span class="Heading">Moufang Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X8028D69A86B15897">9.3 <span class="Heading">Left Bruck Loops and Right Bruck Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X81E82098822543EE">9.3-1 MoufangLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X8290B01780F0FCD3">9.3-1 LeftBruckLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X798DD7CF871F648F">9.3-2 RightBruckLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7BCA6BCB847F79DC">9.4 <span class="Heading">Code Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7953702D84E60AF4">9.4 <span class="Heading">Moufang Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7DB4D3B27BB4D7EE">9.4-1 CodeLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X81E82098822543EE">9.4-1 MoufangLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X84E941EE7846D3EE">9.5 <span class="Heading">Steiner Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7BCA6BCB847F79DC">9.5 <span class="Heading">Code Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X87C235457E859AF4">9.5-1 SteinerLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7DB4D3B27BB4D7EE">9.5-1 CodeLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X867E5F0783FEB8B5">9.6 <span class="Heading">Conjugacy Closed Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X84E941EE7846D3EE">9.6 <span class="Heading">Steiner Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X806B2DE67990E42F">9.6-1 <span class="Heading">RCCLoop and RightConjugacyClosedLoop</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X87C235457E859AF4">9.6-1 SteinerLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X867E5F0783FEB8B5">9.7 <span class="Heading">Conjugacy Closed Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X806B2DE67990E42F">9.7-1 <span class="Heading">RCCLoop and RightConjugacyClosedLoop</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X80AB8B107D55FB19">9.6-2 <span class="Heading">LCCLoop and LeftConjugacyClosedLoop</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X80AB8B107D55FB19">9.7-2 <span class="Heading">LCCLoop and LeftConjugacyClosedLoop</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X798BC601843E8916">9.6-3 <span class="Heading">CCLoop and ConjugacyClosedLoop</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X798BC601843E8916">9.7-3 <span class="Heading">CCLoop and ConjugacyClosedLoop</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7E3A8F2C790F2CA1">9.7 <span class="Heading">Small Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X7E3A8F2C790F2CA1">9.8 <span class="Heading">Small Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7C6EE23E84CD87D3">9.7-1 SmallLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7C6EE23E84CD87D3">9.8-1 SmallLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X8135C8FD8714C606">9.8 <span class="Heading">Paige Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X8135C8FD8714C606">9.9 <span class="Heading">Paige Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7FCF4D6B7AD66D74">9.8-1 PaigeLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7FCF4D6B7AD66D74">9.9-1 PaigeLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X86695C577A4D1784">9.9 <span class="Heading">Nilpotent Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X86695C577A4D1784">9.10 <span class="Heading">Nilpotent Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7A9C960D86E2AD28">9.9-1 NilpotentLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X7A9C960D86E2AD28">9.10-1 NilpotentLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X793B22EA8643C667">9.10 <span class="Heading">Automorphic Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X793B22EA8643C667">9.11 <span class="Heading">Automorphic Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X784FFA9E7FDA9F43">9.10-1 AutomorphicLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X784FFA9E7FDA9F43">9.11-1 AutomorphicLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X843BD73F788049F7">9.11 <span class="Heading">Interesting Loops</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X843BD73F788049F7">9.12 <span class="Heading">Interesting Loops</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X87F24AD3811910D3">9.11-1 InterestingLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X87F24AD3811910D3">9.12-1 InterestingLoop</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X864839227D5C0A90">9.12 <span class="Heading">Libraries of Loops Up To Isotopism</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap9_mj.html#X864839227D5C0A90">9.13 <span class="Heading">Libraries of Loops Up To Isotopism</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X850C4C01817A098D">9.12-1 ItpSmallLoop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9_mj.html#X850C4C01817A098D">9.13-1 ItpSmallLoop</a></span>
</div></div>
</div>
<div class="ContChap"><a href="chapA_mj.html#X7BC4571A79FFB7D0">A <span class="Heading">Files</span></a>

11
doc/chap1.txt

@ -20,7 +20,7 @@
1.2 Installation
Have GAP 4.7 or newer installed on your computer.
Have GAP 4.8 or newer installed on your computer.
If you do not see the subfolder pkg/loops in the main directory of GAP then
download the LOOPS package from the distribution website
@ -85,14 +85,15 @@
We thank the following people for sending us remarks and comments, and for
suggesting new functionality of the package: Muniru Asiru, Bjoern Assmann,
Andreas Distler, Aleš Drápal, Steve Flammia, Kenneth W. Johnson, Michael K.
Kinyon, Alexander Konovalov, Frank Lübeck and Jonathan D.H. Smith.
Andreas Distler, Aleš Drápal, Graham Ellis, Steve Flammia, Kenneth W.
Johnson, Michael K. Kinyon, Alexander Konovalov, Frank Lübeck, Jonathan D.H.
Smith, David Stanovský and Glen Whitney.
The library of Moufang loops of order 243 was generated from data provided
by Michael C. Slattery and Ashley L. Zenisek. The library of right conjugacy
closed loops of order less than 28 was generated from data provided by
Katharina Artic. The library of commutative automorphic loops of order 27,
81 and 243 was obtained jointly with Izabella Stuhl.
Katharina Artic. The library of right Bruck loops of order 27, 81 was
obtained jointly with Izabella Stuhl.
Gábor P. Nagy was supported by OTKA grants F042959 and T043758, and Petr
Vojtěchovský was supported by the 2006 and 2016 University of Denver PROF

6
doc/chap1_mj.html

@ -73,7 +73,7 @@
<h4>1.2 <span class="Heading">Installation</span></h4>
<p>Have <strong class="pkg">GAP 4.7</strong> or newer installed on your computer.</p>
<p>Have <strong class="pkg">GAP 4.8</strong> or newer installed on your computer.</p>
<p>If you do not see the subfolder <code class="file">pkg/loops</code> in the main directory of <strong class="pkg">GAP</strong> then download the <strong class="pkg">LOOPS</strong> package from the distribution website <span class="URL"><a href="http://www.math.du.edu/loops">http://www.math.du.edu/loops</a></span> and unpack the downloaded file into the <code class="file">pkg</code> subfolder.</p>
@ -127,9 +127,9 @@ gap&gt; WriteGapIniFile();;
<h4>1.7 <span class="Heading">Acknowledgment</span></h4>
<p>We thank the following people for sending us remarks and comments, and for suggesting new functionality of the package: Muniru Asiru, Bjoern Assmann, Andreas Distler, Aleš Drápal, Steve Flammia, Kenneth W. Johnson, Michael K. Kinyon, Alexander Konovalov, Frank Lübeck and Jonathan D.H. Smith.</p>
<p>We thank the following people for sending us remarks and comments, and for suggesting new functionality of the package: Muniru Asiru, Bjoern Assmann, Andreas Distler, Aleš Drápal, Graham Ellis, Steve Flammia, Kenneth W. Johnson, Michael K. Kinyon, Alexander Konovalov, Frank Lübeck, Jonathan D.H. Smith, David Stanovský and Glen Whitney.</p>
<p>The library of Moufang loops of order 243 was generated from data provided by Michael C. Slattery and Ashley L. Zenisek. The library of right conjugacy closed loops of order less than 28 was generated from data provided by Katharina Artic. The library of commutative automorphic loops of order 27, 81 and 243 was obtained jointly with Izabella Stuhl.</p>
<p>The library of Moufang loops of order 243 was generated from data provided by Michael C. Slattery and Ashley L. Zenisek. The library of right conjugacy closed loops of order less than 28 was generated from data provided by Katharina Artic. The library of right Bruck loops of order 27, 81 was obtained jointly with Izabella Stuhl.</p>
<p>Gábor P. Nagy was supported by OTKA grants F042959 and T043758, and Petr Vojtěchovský was supported by the 2006 and 2016 University of Denver PROF grants and the Simons Foundation Collaboration Grant 210176.</p>

4
doc/chap3.txt

@ -40,8 +40,8 @@
DeclareRepresentation( "IsLoopElmRep",
IsPositionalObjectRep and IsMultiplicativeElementWithInverse, [1] );
## latin (auxiliary category for GAP to tell apart IsMagma and IsQuasigroup)
DeclareCategory( "IsLatin", IsObject );
DeclareCategory( "IsQuasigroup", IsMagma and IsLatin );
DeclareCategory( "IsLatinMagma", IsObject );
DeclareCategory( "IsQuasigroup", IsMagma and IsLatinMagma );
DeclareCategory( "IsLoop", IsQuasigroup and
IsMultiplicativeElementWithInverseCollection);

44
doc/chap3_mj.html

@ -72,19 +72,19 @@
<pre class="normal">
DeclareCategory( "IsQuasigroupElement", IsMultiplicativeElement );
DeclareRepresentation( "IsQuasigroupElmRep",
IsPositionalObjectRep and IsMultiplicativeElement, [1] );
DeclareCategory( "IsLoopElement",
IsQuasigroupElement and IsMultiplicativeElementWithInverse );
DeclareRepresentation( "IsLoopElmRep",
IsPositionalObjectRep and IsMultiplicativeElementWithInverse, [1] );
## latin (auxiliary category for GAP to tell apart IsMagma and IsQuasigroup)
DeclareCategory( "IsLatin", IsObject );
DeclareCategory( "IsQuasigroup", IsMagma and IsLatin );
DeclareCategory( "IsLoop", IsQuasigroup and
IsMultiplicativeElementWithInverseCollection);
DeclareCategory( "IsQuasigroupElement", IsMultiplicativeElement );
DeclareRepresentation( "IsQuasigroupElmRep",
IsPositionalObjectRep and IsMultiplicativeElement, [1] );
DeclareCategory( "IsLoopElement",
IsQuasigroupElement and IsMultiplicativeElementWithInverse );
DeclareRepresentation( "IsLoopElmRep",
IsPositionalObjectRep and IsMultiplicativeElementWithInverse, [1] );
## latin (auxiliary category for GAP to tell apart IsMagma and IsQuasigroup)
DeclareCategory( "IsLatinMagma", IsObject );
DeclareCategory( "IsQuasigroup", IsMagma and IsLatinMagma );
DeclareCategory( "IsLoop", IsQuasigroup and
IsMultiplicativeElementWithInverseCollection);
</pre>
@ -162,15 +162,15 @@ DeclareCategory( "IsLoop", IsQuasigroup and
<p>In the following example, <code class="code">L</code> is a loop with two elements.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L; </span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Print( L ); </span>
&lt;loop with multiplication table [ [ 1, 2 ], [ 2, 1 ] ]&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Elements( L ); </span>
[ l1, l2 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetLoopElmName( L, "loop_element" );; Elements( L ); </span>
[ loop_element1, loop_element2 ]
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L;</span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Print( L );</span>
&lt;loop with multiplication table [ [ 1, 2 ], [ 2, 1 ] ]&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Elements( L );</span>
[ l1, l2 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetLoopElmName( L, "loop_element" );; Elements( L );</span>
[ loop_element1, loop_element2 ]
</pre></div>

140
doc/chap4_mj.html

@ -188,15 +188,15 @@
<p>Since <code class="code">CanonicalCayleyTable</code> is called within the above operation, the resulting quasigroup will have Cayley table with distinct entries <span class="SimpleMath">\(1\)</span>, <span class="SimpleMath">\(\dots\)</span>, <span class="SimpleMath">\(n\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">ct := CanonicalCayleyTable( [[5,3],[3,5]] ); </span>
[ [ 2, 1 ], [ 1, 2 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalizedQuasigroupTable( ct ); </span>
[ [ 1, 2 ], [ 2, 1 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByCayleyTable( last ); </span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ IsQuasigroupTable( ct ), IsLoopTable( ct ) ]; </span>
[ true, false ]
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">ct := CanonicalCayleyTable( [[5,3],[3,5]] );</span>
[ [ 2, 1 ], [ 1, 2 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalizedQuasigroupTable( ct );</span>
[ [ 1, 2 ], [ 2, 1 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByCayleyTable( last );</span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ IsQuasigroupTable( ct ), IsLoopTable( ct ) ];</span>
[ true, false ]
</pre></div>
<p><a id="X849944F17E2B37F8" name="X849944F17E2B37F8"></a></p>
@ -235,56 +235,56 @@
<p><strong class="button">Example:</strong> Data does not have to be arranged into an array of any kind.</p>
<p class="center">\[
\begin{array}{cccc}
0&amp;1&amp;2&amp;1\\
2&amp;0&amp;2&amp; \\
0&amp;1&amp; &amp;
\end{array}\quad + \quad "" \quad \Longrightarrow\quad
\begin{array}{ccc}
1&amp;2&amp;3\\
2&amp;3&amp;1\\
3&amp;1&amp;2
\end{array}
<p class="center">\[
\begin{array}{cccc}
0&amp;1&amp;2&amp;1\\
2&amp;0&amp;2&amp; \\
0&amp;1&amp; &amp;
\end{array}\quad + \quad "" \quad \Longrightarrow\quad
\begin{array}{ccc}
1&amp;2&amp;3\\
2&amp;3&amp;1\\
3&amp;1&amp;2
\end{array}
\]</p>
<p><strong class="button">Example:</strong> Chunks can be any strings.</p>
<p class="center">\[
\begin{array}{cc}
{\rm red}&amp;{\rm green}\\
{\rm green}&amp;{\rm red}\\
\end{array}\quad + \quad "" \quad \Longrightarrow\quad
\begin{array}{cc}
1&amp; 2\\
2&amp; 1
\end{array}
<p class="center">\[
\begin{array}{cc}
{\rm red}&amp;{\rm green}\\
{\rm green}&amp;{\rm red}\\
\end{array}\quad + \quad "" \quad \Longrightarrow\quad
\begin{array}{cc}
1&amp; 2\\
2&amp; 1
\end{array}
\]</p>
<p><strong class="button">Example:</strong> A typical table produced by <strong class="pkg">GAP</strong> is easily parsed by deleting brackets and commas.</p>
<p class="center">\[
[ [0, 1], [1, 0] ] \quad + \quad "[,]" \quad \Longrightarrow\quad
\begin{array}{cc}
1&amp; 2\\
2&amp; 1
\end{array}
<p class="center">\[
[ [0, 1], [1, 0] ] \quad + \quad "[,]" \quad \Longrightarrow\quad
\begin{array}{cc}
1&amp; 2\\
2&amp; 1
\end{array}
\]</p>
<p><strong class="button">Example:</strong> A typical TeX table with rows separated by lines is also easily converted. Note that we have to use <span class="SimpleMath">\(\backslash\backslash\)</span> to ensure that every occurrence of <span class="SimpleMath">\(\backslash\)</span> is deleted, since <span class="SimpleMath">\(\backslash\backslash\)</span> represents the character <span class="SimpleMath">\(\backslash\)</span> in <strong class="pkg">GAP</strong></p>
<p class="center">\[
\begin{array}{lll}
x\&amp;&amp; y\&amp;&amp;\ z\backslash\backslash\cr
y\&amp;&amp; z\&amp;&amp;\ x\backslash\backslash\cr
z\&amp;&amp; x\&amp;&amp;\ y
\end{array}
\quad + \quad "\backslash\backslash\&amp;" \quad \Longrightarrow\quad
\begin{array}{ccc}
1&amp;2&amp;3\cr
2&amp;3&amp;1\cr
3&amp;1&amp;2
\end{array}
<p class="center">\[
\begin{array}{lll}
x\&amp;&amp; y\&amp;&amp;\ z\backslash\backslash\cr
y\&amp;&amp; z\&amp;&amp;\ x\backslash\backslash\cr
z\&amp;&amp; x\&amp;&amp;\ y
\end{array}
\quad + \quad "\backslash\backslash\&amp;" \quad \Longrightarrow\quad
\begin{array}{ccc}
1&amp;2&amp;3\cr
2&amp;3&amp;1\cr
3&amp;1&amp;2
\end{array}
\]</p>
<p><a id="X81A1DB918057933E" name="X81A1DB918057933E"></a></p>
@ -329,14 +329,14 @@
<p>These are the dual operations to <code class="code">QuasigroupByLeftSection</code> and <code class="code">LoopByLeftSection</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">S := Subloop( MoufangLoop( 12, 1 ), [ 3 ] );; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">ls := LeftSection( S ); </span>
[ (), (1,3,5), (1,5,3) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTableByPerms( ls ); </span>
[ [ 1, 3, 5 ], [ 3, 5, 1 ], [ 5, 1, 3 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( LoopByLeftSection( ls ) ); </span>
[ [ 1, 2, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ] ]
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">S := Subloop( MoufangLoop( 12, 1 ), [ 3 ] );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">ls := LeftSection( S );</span>
[ (), (1,3,5), (1,5,3) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTableByPerms( ls );</span>
[ [ 1, 3, 5 ], [ 3, 5, 1 ], [ 5, 1, 3 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( LoopByLeftSection( ls ) );</span>
[ [ 1, 2, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ] ]
</pre></div>
<p><a id="X85ABE99E84E5B0E8" name="X85ABE99E84E5B0E8"></a></p>
@ -360,11 +360,11 @@
<p>Here is a simple example in which <span class="SimpleMath">\(T\)</span> is actually the right section of the resulting loop.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">T := [ (), (1,2)(3,4,5), (1,3,5)(2,4), (1,4,3)(2,5), (1,5,4)(2,3) ];; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">G := Group( T );; H := Stabilizer( G, 1 );; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByRightFolder( G, H, T ); </span>
&lt;loop of order 5&gt;
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">T := [ (), (1,2)(3,4,5), (1,3,5)(2,4), (1,4,3)(2,5), (1,5,4)(2,3) ];;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">G := Group( T );; H := Stabilizer( G, 1 );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByRightFolder( G, H, T );</span>
&lt;loop of order 5&gt;
</pre></div>
<p><a id="X8759431780AC81A9" name="X8759431780AC81A9"></a></p>
@ -394,16 +394,16 @@
<p>Returns: The extension of an abelian group <var class="Arg">K</var> by a loop <var class="Arg">F</var>, using action <var class="Arg">f</var> and cocycle <var class="Arg">t</var>. The arguments must be formatted as the output of <code class="code">NuclearExtension</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">F := IntoLoop( Group( (1,2) ) ); </span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">K := DirectProduct( F, F );; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">phi := [ (), (2,3) ];; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">theta := [ [ 1, 1 ], [ 1, 3 ] ];; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByExtension( K, F, phi, theta ); </span>
&lt;loop of order 8&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsAssociative( last ); </span>
false
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">F := IntoLoop( Group( (1,2) ) );</span>
&lt;loop of order 2&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">K := DirectProduct( F, F );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">phi := [ (), (2,3) ];;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">theta := [ [ 1, 1 ], [ 1, 3 ] ];;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LoopByExtension( K, F, phi, theta );</span>
&lt;loop of order 8&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsAssociative( last );</span>
false
</pre></div>
<p><a id="X7AE29A1A7AA5C25A" name="X7AE29A1A7AA5C25A"></a></p>

22
doc/chap5_mj.html

@ -167,17 +167,17 @@
<p>Returns: The left inverse, right inverse and inverse, respectively, of the quasigroup element <var class="Arg">x</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( Q ); </span>
[ [ 1, 2, 3, 4, 5 ],
[ 2, 1, 4, 5, 3 ],
[ 3, 4, 5, 1, 2 ],
[ 4, 5, 2, 3, 1 ],
[ 5, 3, 1, 2, 4 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">elms := Elements( Q ); </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ l1, l2, l3, l4, l5 ]; </span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ LeftInverse( elms[3] ), RightInverse( elms[3] ), Inverse( elms[3] ) ]; </span>
[ l5, l4, fail ]
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( Q );</span>
[ [ 1, 2, 3, 4, 5 ],
[ 2, 1, 4, 5, 3 ],
[ 3, 4, 5, 1, 2 ],
[ 4, 5, 2, 3, 1 ],
[ 5, 3, 1, 2, 4 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">elms := Elements( Q );</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ l1, l2, l3, l4, l5 ];</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ LeftInverse( elms[3] ), RightInverse( elms[3] ), Inverse( elms[3] ) ];</span>
[ l5, l4, fail ]
</pre></div>
<p><a id="X7E0849977869E53D" name="X7E0849977869E53D"></a></p>

31
doc/chap6.txt

@ -488,17 +488,28 @@
the elements of the underlying quasigroup without changing the isomorphism
type of the quasigroups. LOOPS contains several functions for this purpose.
6.11-6 IsomorphicCopyByPerm
6.11-6 QuasigroupIsomorph
IsomorphicCopyByPerm( Q, f )  operation
QuasigroupIsomorph( Q, f )  operation
Returns: When Q is a quasigroup and f is a permutation of 1,dots,|Q|,
returns a quasigroup defined on the same set as Q with
multiplication * defined by x*y =f(f^-1(x)f^-1(y)). When Q is a
declared loop, a loop is returned. Consequently, when Q is a
declared loop and f(1) = kne 1, then f is first replaced with f∘
(1,k), to make sure that the resulting Cayley table is normalized.
returns the quasigroup defined on the same set as Q with
multiplication * defined by x*y =f(f^-1(x)f^-1(y)).
6.11-7 LoopIsomorph
LoopIsomorph( Q, f )  operation
Returns: When Q is a loop and f is a permutation of 1,dots,|Q| fixing 1,
returns the loop defined on the same set as Q with multiplication
* defined by x*y =f(f^-1(x)f^-1(y)). If f(1)=cne 1, the
isomorphism (1,c) is applied after f.
6.11-8 IsomorphicCopyByPerm
IsomorphicCopyByPerm( Q, f )  operation
Returns: LoopIsomorphism(Q,f) if Q is a loop, and
QuasigroupIsomorphism(Q,f) if Q is a quasigroup.
6.11-7 IsomorphicCopyByNormalSubloop
6.11-9 IsomorphicCopyByNormalSubloop
IsomorphicCopyByNormalSubloop( Q, S )  operation
Returns: When S is a normal subloop of a loop Q, returns an isomorphic copy
@ -511,7 +522,7 @@
these invariants to partition the loop into blocks of elements preserved
under isomorphisms. The following two operations are used in the search.
6.11-8 Discriminator
6.11-10 Discriminator
Discriminator( Q )  operation
Returns: A data structure with isomorphism invariants of a loop Q.
@ -523,7 +534,7 @@
If two loops have different discriminators, they are not isomorphic. If they
have identical discriminators, they may or may not be isomorphic.
6.11-9 AreEqualDiscriminators
6.11-11 AreEqualDiscriminators
AreEqualDiscriminators( D1, D2 )  operation
Returns: true if D1, D2 are equal discriminators for the purposes of

118
doc/chap6_mj.html

@ -120,10 +120,12 @@
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X82373C5479574F22">6.11-3 QuasigroupsUpToIsomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8308F38283C61B20">6.11-4 LoopsUpToIsomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X87677B0787B4461A">6.11-5 AutomorphismGroup</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X85B3E22679FD8D81">6.11-6 IsomorphicCopyByPerm</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8121DE3A78795040">6.11-7 IsomorphicCopyByNormalSubloop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7D09D8957E4A0973">6.11-8 Discriminator</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X812F0DEE7C896E18">6.11-9 AreEqualDiscriminators</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7A42812B7B027DD4">6.11-6 QuasigroupIsomorph</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7BD1AC32851286EA">6.11-7 LoopIsomorph</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X85B3E22679FD8D81">6.11-8 IsomorphicCopyByPerm</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X8121DE3A78795040">6.11-9 IsomorphicCopyByNormalSubloop</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X7D09D8957E4A0973">6.11-10 Discriminator</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap6_mj.html#X812F0DEE7C896E18">6.11-11 AreEqualDiscriminators</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap6_mj.html#X7E996BDD81E594F9">6.12 <span class="Heading">Isotopisms</span></a>
</span>
@ -265,28 +267,28 @@
<p>Note how the Cayley table of a subquasigroup is created only upon explicit demand. Also note that changing the names of elements of a subquasigroup (subloop) automatically changes the names of the elements of the parent subquasigroup (subloop). This is because the elements are shared.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop( 12, 1 );; S := Subloop( M, [ M.5 ] ); </span>
&lt;loop of order 3&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ Parent( S ) = M, Elements( S ), PosInParent( S ) ]; </span>
[ true, [ l1, l3, l5], [ 1, 3, 5 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">HasCayleyTable( S ); </span>
false
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetLoopElmName( S, "s" );; Elements( S ); Elements( M ); </span>
[ s1, s3, s5 ]
[ s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( S ); </span>
[ [ 1, 3, 5 ], [ 3, 5, 1 ], [ 5, 1, 3 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection( S ); </span>
[ (), (1,3,5), (1,5,3) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ HasCayleyTable( S ), Parent( S ) = M ]; </span>
[ true, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L := LoopByCayleyTable( CayleyTable( S ) );; Elements( L ); </span>
[ l1, l2, l3 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ Parent( L ) = L, IsSubloop( M, S ), IsSubloop( M, L ) ]; </span>
[ true, true, false ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection( L ); </span>
[ (), (1,2,3), (1,3,2) ]
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop( 12, 1 );; S := Subloop( M, [ M.5 ] );</span>
&lt;loop of order 3&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ Parent( S ) = M, Elements( S ), PosInParent( S ) ];</span>
[ true, [ l1, l3, l5], [ 1, 3, 5 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">HasCayleyTable( S );</span>
false
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">SetLoopElmName( S, "s" );; Elements( S ); Elements( M );</span>
[ s1, s3, s5 ]
[ s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">CayleyTable( S );</span>
[ [ 1, 3, 5 ], [ 3, 5, 1 ], [ 5, 1, 3 ] ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection( S );</span>
[ (), (1,3,5), (1,5,3) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ HasCayleyTable( S ), Parent( S ) = M ];</span>
[ true, true ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">L := LoopByCayleyTable( CayleyTable( S ) );; Elements( L );</span>
[ l1, l2, l3 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">[ Parent( L ) = L, IsSubloop( M, S ), IsSubloop( M, L ) ];</span>
[ true, true, false ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection( L );</span>
[ (), (1,2,3), (1,3,2) ]
</pre></div>
<p><a id="X78ED50F578A88046" name="X78ED50F578A88046"></a></p>
@ -349,16 +351,16 @@ false
<p>Here is an example for multiplication groups and inner mapping groups:</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop(12,1); </span>
&lt;Moufang loop 12/1&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection(M)[2]; </span>
(1,2)(3,4)(5,6)(7,8)(9,12)(10,11)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Mlt := MultiplicationGroup(M); Inn := InnerMappingGroup(M); </span>
&lt;permutation group of size 2592 with 23 generators&gt;
Group([ (4,6)(7,11), (7,11)(8,10), (2,6,4)(7,9,11), (3,5)(9,11), (8,12,10) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(Inn); </span>
216
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop(12,1);</span>
&lt;Moufang loop 12/1&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">LeftSection(M)[2];</span>
(1,2)(3,4)(5,6)(7,8)(9,12)(10,11)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Mlt := MultiplicationGroup(M); Inn := InnerMappingGroup(M);</span>
&lt;permutation group of size 2592 with 23 generators&gt;
Group([ (4,6)(7,11), (7,11)(8,10), (2,6,4)(7,9,11), (3,5)(9,11), (8,12,10) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size(Inn);</span>
216
</pre></div>
<p><a id="X7B45C2AF7C2E28AB" name="X7B45C2AF7C2E28AB"></a></p>
@ -464,16 +466,16 @@ Group([ (4,6)(7,11), (7,11)(8,10), (2,6,4)(7,9,11), (3,5)(9,11), (8,12,10) ])
<p>Returns: When <var class="Arg">S</var> is a normal subloop of a loop <var class="Arg">Q</var>, returns the natural projection from <var class="Arg">Q</var> onto <var class="Arg">Q</var><span class="SimpleMath">\(/\)</span><var class="Arg">S</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop( 12, 1 );; S := Subloop( M, [ M.3 ] ); </span>
&lt;loop of order 3&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsNormal( M, S ); </span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">F := FactorLoop( M, S ); </span>
&lt;loop of order 4&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NaturalHomomorphismByNormalSubloop( M, S ); </span>
MappingByFunction( &lt;loop of order 12&gt;, &lt;loop of order 4&gt;,
function( x ) ... end )
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">M := MoufangLoop( 12, 1 );; S := Subloop( M, [ M.3 ] );</span>
&lt;loop of order 3&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsNormal( M, S );</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">F := FactorLoop( M, S );</span>
&lt;loop of order 4&gt;
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NaturalHomomorphismByNormalSubloop( M, S );</span>
MappingByFunction( &lt;loop of order 12&gt;, &lt;loop of order 4&gt;,
function( x ) ... end )
</pre></div>
<p><a id="X821F40748401D698" name="X821F40748401D698"></a></p>
@ -607,16 +609,30 @@ MappingByFunction( &lt;loop of order 12&gt;, &lt;loop of order 4&gt;,
<p>While dealing with Cayley tables, it is often useful to rename or reorder the elements of the underlying quasigroup without changing the isomorphism type of the quasigroups. <strong class="pkg">LOOPS</strong> contains several functions for this purpose.</p>
<p><a id="X7A42812B7B027DD4" name="X7A42812B7B027DD4"></a></p>
<h5>6.11-6 QuasigroupIsomorph</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; QuasigroupIsomorph</code>( <var class="Arg">Q</var>, <var class="Arg">f</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: When <var class="Arg">Q</var> is a quasigroup and <var class="Arg">f</var> is a permutation of <span class="SimpleMath">\(1,\dots,|\)</span><var class="Arg">Q</var><span class="SimpleMath">\(|\)</span>, returns the quasigroup defined on the same set as <var class="Arg">Q</var> with multiplication <span class="SimpleMath">\(*\)</span> defined by <span class="SimpleMath">\(x*y = \)</span><var class="Arg">f</var><span class="SimpleMath">\((\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(x)\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(y))\)</span>.</p>
<p><a id="X7BD1AC32851286EA" name="X7BD1AC32851286EA"></a></p>
<h5>6.11-7 LoopIsomorph</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; LoopIsomorph</code>( <var class="Arg">Q</var>, <var class="Arg">f</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: When <var class="Arg">Q</var> is a loop and <var class="Arg">f</var> is a permutation of <span class="SimpleMath">\(1,\dots,|\)</span><var class="Arg">Q</var><span class="SimpleMath">\(|\)</span> fixing <span class="SimpleMath">\(1\)</span>, returns the loop defined on the same set as <var class="Arg">Q</var> with multiplication <span class="SimpleMath">\(*\)</span> defined by <span class="SimpleMath">\(x*y = \)</span><var class="Arg">f</var><span class="SimpleMath">\((\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(x)\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(y))\)</span>. If <var class="Arg">f</var><span class="SimpleMath">\((1)=c\ne 1\)</span>, the isomorphism <span class="SimpleMath">\((1,c)\)</span> is applied after <var class="Arg">f</var>.</p>
<p><a id="X85B3E22679FD8D81" name="X85B3E22679FD8D81"></a></p>
<h5>6.11-6 IsomorphicCopyByPerm</h5>
<h5>6.11-8 IsomorphicCopyByPerm</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsomorphicCopyByPerm</code>( <var class="Arg">Q</var>, <var class="Arg">f</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: When <var class="Arg">Q</var> is a quasigroup and <var class="Arg">f</var> is a permutation of <span class="SimpleMath">\(1,\dots,|\)</span><var class="Arg">Q</var><span class="SimpleMath">\(|\)</span>, returns a quasigroup defined on the same set as <var class="Arg">Q</var> with multiplication <span class="SimpleMath">\(*\)</span> defined by <span class="SimpleMath">\(x*y = \)</span><var class="Arg">f</var><span class="SimpleMath">\((\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(x)\)</span><var class="Arg">f</var><span class="SimpleMath">\({}^{-1}(y))\)</span>. When <var class="Arg">Q</var> is a declared loop, a loop is returned. Consequently, when <var class="Arg">Q</var> is a declared loop and <var class="Arg">f</var><span class="SimpleMath">\((1) = k\ne 1\)</span>, then <var class="Arg">f</var> is first replaced with <var class="Arg">f</var><span class="SimpleMath">\(\circ (1,k)\)</span>, to make sure that the resulting Cayley table is normalized.</p>
<p>Returns: <code class="code">LoopIsomorphism(<var class="Arg">Q</var>,<var class="Arg">f</var>)</code> if <var class="Arg">Q</var> is a loop, and <code class="code">QuasigroupIsomorphism(<var class="Arg">Q</var>,<var class="Arg">f</var>)</code> if <var class="Arg">Q</var> is a quasigroup.</p>
<p><a id="X8121DE3A78795040" name="X8121DE3A78795040"></a></p>
<h5>6.11-7 IsomorphicCopyByNormalSubloop</h5>
<h5>6.11-9 IsomorphicCopyByNormalSubloop</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsomorphicCopyByNormalSubloop</code>( <var class="Arg">Q</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: When <var class="Arg">S</var> is a normal subloop of a loop <var class="Arg">Q</var>, returns an isomorphic copy of <var class="Arg">Q</var> in which the elements are ordered according to the right cosets of <var class="Arg">S</var>. In particular, the Cayley table of <var class="Arg">S</var> will appear in the top left corner of the Cayley table of the resulting loop.<br /></p>
@ -625,7 +641,7 @@ MappingByFunction( &lt;loop of order 12&gt;, &lt;loop of order 4&gt;,
<p><a id="X7D09D8957E4A0973" name="X7D09D8957E4A0973"></a></p>
<h5>6.11-8 Discriminator</h5>
<h5>6.11-10 Discriminator</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Discriminator</code>( <var class="Arg">Q</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: A data structure with isomorphism invariants of a loop <var class="Arg">Q</var>.</p>
@ -636,7 +652,7 @@ MappingByFunction( &lt;loop of order 12&gt;, &lt;loop of order 4&gt;,
<p><a id="X812F0DEE7C896E18" name="X812F0DEE7C896E18"></a></p>
<h5>6.11-9 AreEqualDiscriminators</h5>
<h5>6.11-11 AreEqualDiscriminators</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; AreEqualDiscriminators</code>( <var class="Arg">D1</var>, <var class="Arg">D2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: <code class="code">true</code> if <var class="Arg">D1</var>, <var class="Arg">D2</var> are equal discriminators for the purposes of isomorphism searches.</p>

26
doc/chap7_mj.html

@ -444,19 +444,19 @@
<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; ]
<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>

14
doc/chap8_mj.html

@ -202,13 +202,13 @@
<p>Returns: One loop (given as a section) whose multiplication group is equal to the transitive permutation group <var class="Arg">G</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=PGL(3,3); </span>
Group([ (6,7)(8,11)(9,13)(10,12), (1,2,5,7,13,3,8,6,10,9,12,4,11) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">a:=AllLoopTablesInGroup(g,3,0);; Size(a); </span>
56
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">a:=AllLoopsWithMltGroup(g,3,0);; Size(a); </span>
52
<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:=PGL(3,3);</span>
Group([ (6,7)(8,11)(9,13)(10,12), (1,2,5,7,13,3,8,6,10,9,12,4,11) ])
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">a:=AllLoopTablesInGroup(g,3,0);; Size(a);</span>
56
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">a:=AllLoopsWithMltGroup(g,3,0);; Size(a);</span>
52
</pre></div>

86
doc/chap9.txt

@ -78,12 +78,34 @@
retrieved by calling Opposite on left Bol loops.
9.3 Moufang Loops
9.3 Left Bruck Loops and Right Bruck Loops
The emmerging library named left Bruck contains all left Bruck loops of
orders 3, 9, 27 and 81 (there are 1, 2, 7 and 72 such loops, respectively).
For an odd prime p, left Bruck loops of order p^k are centrally nilpotent
and hence central extensions of the cyclic group of order p by a left Bruck
loop of order p^k-1. It is known that left Bruck loops of order p and p^2
are abelian groups; we have included them in the library because of the
iterative nature of the construction of nilpotent loops.
9.3-1 LeftBruckLoop
LeftBruckLoop( n, m )  function
Returns: The mth left Bruck loop of order n in the library.
9.3-2 RightBruckLoop
RightBruckLoop( n, m )  function
Returns: The mth right Bruck loop of order n in the library.
9.4 Moufang Loops
The library named Moufang contains all nonassociative Moufang loops of order
nle 64 and n∈{81,243}.
9.3-1 MoufangLoop
9.4-1 MoufangLoop
MoufangLoop( n, m )  function
Returns: The mth Moufang loop of order n in the library.
@ -107,20 +129,20 @@
obtained as MoufangLoop(16,3).
9.4 Code Loops
9.5 Code Loops
The library named code 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 [NV07] for a classification of small code loops.
9.4-1 CodeLoop
9.5-1 CodeLoop
CodeLoop( n, m )  function
Returns: The mth code loop of order n in the library.
9.5 Steiner Loops
9.6 Steiner Loops
Here is how the libary named Steiner is described within LOOPS:
@ -141,13 +163,13 @@
Our labeling of Steiner loops of order 16 coincides with the labeling of
Steiner triple systems of order 15 in [CR99].
9.5-1 SteinerLoop
9.6-1 SteinerLoop
SteinerLoop( n, m )  function
Returns: The mth Steiner loop of order n in the library.
9.6 Conjugacy Closed Loops
9.7 Conjugacy Closed Loops
The library named RCC contains all nonassocitive right conjugacy closed
loops of order nle 27 up to isomorphism. The data for the library was
@ -171,14 +193,14 @@
9.6-1 RCCLoop and RightConjugacyClosedLoop
9.7-1 RCCLoop and RightConjugacyClosedLoop
RCCLoop( n, m )  function
RightConjugacyClosedLoop( n, m )  function
Returns: The mth right conjugacy closed loop of order n in the library.
9.6-2 LCCLoop and LeftConjugacyClosedLoop
9.7-2 LCCLoop and LeftConjugacyClosedLoop
LCCLoop( n, m )  function
LeftConjugacyClosedLoop( n, m )  function
@ -188,8 +210,10 @@
Left conjugacy closed loops are obtained from right conjugacy closed loops
via Opposite.
The library named CC contains all nonassociative conjugacy closed loops of
order nle 27 and also of orders 2p and p^2 for all primes p.
The library named CC contains all CC loops of order 2le 2^kle 64, 3le 3^kle
81, 5le 5^kle 125, 7le 7^kle 343, all nonassociative CC loops of order less
than 28, and all nonassociative CC loops of order p^2 and 2p for any odd
prime p.
By results of Kunen [Kun00], for every odd prime p there are precisely 3
nonassociative conjugacy closed loops of order p^2. Csörgő and Drápal [CD05]
@ -215,25 +239,25 @@
m + n ).
9.6-3 CCLoop and ConjugacyClosedLoop
9.7-3 CCLoop and ConjugacyClosedLoop
CCLoop( n, m )  function
ConjugacyClosedLoop( n, m )  function
Returns: The mth conjugacy closed loop of order n in the library.
9.7 Small Loops
9.8 Small Loops
The library named small contains all nonassociative loops of order 5 and 6.
There are 5 and 107 such loops, respectively.
9.7-1 SmallLoop
9.8-1 SmallLoop
SmallLoop( n, m )  function
Returns: The mth loop of order n in the library.
9.8 Paige Loops
9.9 Paige Loops
Paige loops are nonassociative finite simple Moufang loops. By [Lie87],
there is precisely one Paige loop for every finite field.
@ -241,14 +265,14 @@
The library named Paige contains the smallest nonassociative simple Moufang
loop.
9.8-1 PaigeLoop
9.9-1 PaigeLoop
PaigeLoop( q )  function
Returns: The Paige loop constructed over the finite field of order q. Only
the case q=2 is implemented.
9.9 Nilpotent Loops
9.10 Nilpotent Loops
The library named nilpotent contains all nonassociative nilpotent loops of
order less than 12 up to isomorphism. There are 2 nonassociative nilpotent
@ -258,30 +282,32 @@
are 2623755 nilpotent loops of order 12, and 123794003928541545927226368
nilpotent loops of order 22.
9.9-1 NilpotentLoop
9.10-1 NilpotentLoop
NilpotentLoop( n, m )  function
Returns: The mth nilpotent loop of order n in the library.
9.10 Automorphic Loops
9.11 Automorphic Loops
The library named automorphic 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),
all commutative automorphic loops of order 3, 9, 27 and 81 (there are 1, 2,
7 and 72 such loops, respectively, including abelian groups), and
commutative automorphic loops Q of order 243 possessing a central subloop S
of order 3 such that Q/S is not the elementary abelian group of order 81
(there are 118451 such loops).
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,