Libraries of small loops, racks an quandles form an integral part of RightQuasigroups. The algebras are stored in libraries up to isomorphism and, occasionally, up to isotopism.
A library named my algebras is stored in file data/my_algebras.tbl
and the corresponding data structure is named RQ_my_algebras
. For example, when the library is called left Bol loops, the corresponding data file is called data/left_Bol_loops.tbl
and the corresponding data structure is named RQ_left_Bol_loops
.
In most cases, the array RQ_my_algebras
consists of three lists:
RQ_my_algebras[1]
is a list of orders for which there is at least one algebra in the library,
RQ_my_algebras[2,k]
is the number of algebras of order RQ_my_algebras[1,k]
in the library,
RQ_my_algebras[3][k][s]
contains data necessary to produce the s
th algebra of order RQ_my_algebras[1,k]
in the library.
The format of RQ_my_algebras[3]
depends heavily on the particular library and is not standardized in any way. The data is often coded to save space.
The library names are, in alphabetical order:
"automorphic loops",
"CC loops",
"connected quandles",
"code loops",
"interesting loops",
"itp small loops",
"LCC loops",
"left Bol loops",
"left Bruck loops",
"Moufang loops",
"nilpotent loops",
"Paige loops",
"right Bol loops",
"right Bruck loops",
"RCC loops",
"small loops",
"small quandles",
"small racks",
"Steiner loops".
‣ DisplayLibraryInfo ( name ) | ( operation ) |
Returns: Brief information about the loops contained in the library named name.
gap> DisplayLibraryInfo("nilpotent loops"); The library contains all nonassociative nilpotent loops of order less \ than 12. ------ Extent of the library: 2 algebras of order 6 134 algebras of order 8 8 algebras of order 9 1043 algebras of order 10 true
‣ LibraryAlgebra ( name, n, m ) | ( operation ) |
Returns: the mth algebra of order n from the library named name.
It is aso possible to access individual libraries directly, e.g., MoufangLoop(
n,
m )
.
gap> LibraryAlgebra( "Moufang loops", 64, 10 ); MoufangLoop( 64, 10 ) gap> MoufangLoop( 64, 10 ); MoufangLoop( 64, 10 )
‣ LibraryAlgebras ( name, filters ) | ( function ) |
Returns: all algebras from the library named name that satisfy all the conditons specified by filters. The argument list filters consists of alternating functions and accepted values of those functions (e.g., Size, [3..6], IsCommutative, false
), with the following conventions:
the first function is understood to be Size
, whether it is given or not,
if the given accepted values v
for a function f
form a list, then an algebra A
passes the condition on f
iff f(A)
is in v
,
if the given accepted values v
for a function f
do not form a list, then an algebra A
passes the condition on f
iff f(A)
is equal to v
,
the accepted values for Size
must always be given,
if the accepted values for a function f
(other than Size
) are omitted, then an algebra A
passes the condition on f
iff f(A)
is true
.
Note that the function delivers all algebras IN THE LIBRARY satisfying the conditions, not all algebras satisfying the conditions. For instance, requesting all Moufang loops of order 2048 will deliver an empty list because there are no such loops in the library, although there certainly are nonassociative Moufang loops of order 2048. Care must be taken especially in the situations when the library has gaps in the implemented orders.
It is aso possible to access individual libraries directly, e.g., MoufangLoops(
filters )
.
gap> LibraryAlgebras( "Moufang loops", Size, 81, IsCommutative, false ); [ MoufangLoop( 81, 3 ), MoufangLoop( 81, 4 ), MoufangLoop( 81, 5 ) ] gap> MoufangLoops( [65..81], IsCommutative, Exponent, 3 ); [ MoufangLoop( 81, 1 ) ]
The library named left Bol loops contains all nonassociative left Bol loops of order less than 17, including Moufang loops, as well as all left Bol loops of order \(pq\) for primes \(p>q>2\). There are 6 such loops of order 8, 1 of order 12, 2 of order 15, 2038 of order 16, and \((p+q-4)/2\) of order \(pq\).
The classification of left Bol loops of order 16 was first accomplished by Moorhouse [Moo]. Our library was generated independently and it agrees with Moorhouse's results. The left Bol loops of order \(pq\) were classified in [KNVe15].
Note: Only left Bol loops are stored in the library. Right Bol loops are retrieved by calling OppositeLoop
on left Bol loops.
‣ LeftBolLoop ( n, m ) | ( operation ) |
‣ RightBolLoop ( n, m ) | ( operation ) |
Returns: the mth left Bol loop (right Bol loop) of order n
‣ LeftBolLoops ( filters ) | ( function ) |
‣ RightBolLoops ( filters ) | ( function ) |
Returns: all left Bol loops (right Bol loops) satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named left Bruck loops 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.
‣ LeftBruckLoop ( n, m ) | ( operation ) |
‣ RightBruckLoop ( n, m ) | ( operation ) |
Returns: the mth left Bruck loop (right Bruck loop) of order n.
‣ LeftBruckLoops ( filters ) | ( function ) |
‣ RightBruckLoops ( filters ) | ( function ) |
Returns: all left Bruck loops (right Bruck loops) satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named Moufang loops contains all nonassociative Moufang loops of order \(n\le 64\) and \(n\in\{81,243\}\).
For \(n\le 63\), our catalog numbers coincide with those of Goodaire et al. [GMR99]. The classification of Moufang loops of order 64 and 81 was carried out in [NVe07]. The classification of Moufang loops of order 243 was carried out by Slattery and Zenisek [SZ12].
The extent of the library is summarized below:
\[ \begin{array}{r|rrrrrrrrrrrrrrrrrr} order&12&16&20&24&28&32&36&40&42&44&48&52&54&56&60&64&81&243\cr loops&1 &5 &1 &5 &1 &71&4 &5 &1 &1 &51&1 &2 &4 &5 &4262& 5 &72 \end{array} \]
The octonion loop of order 16 (i.e., the multiplication loop of the basis elements in the 8-dimensional standard real octonion algebra) can be obtained as MoufangLoop(16,3)
.
‣ MoufangLoop ( n, m ) | ( operation ) |
Returns: the mth Moufang loop of order n.
‣ MoufangLoops ( filters ) | ( function ) |
Returns: all Moufang loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named code loops contains all code loops of order up to and including 256. Code loops are Moufang loops \(Q\) containing a central subloop \(Z\) of order \(2\) such that \(Q/Z\) is an elementary abelian \(2\)-group.
There are 1, 2, 4, 10, 23, 88, 767, 80826 and 937791557 code loops of order 2, 4, 8, 16, 32, 64, 128, 256 and 512, respectively. The code loops of order 512 can be obtained by request from the second author. See [NVe07] for a classification of small code loops and [OV17] for a classification of code loops up to order 512.
‣ CodeLoop ( n, m ) | ( operation ) |
Returns: the mth code loop of order n.
‣ CodeLoops ( filters ) | ( function ) |
Returns: all code loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
Here is how the libary named Steiner loops is described within RightQuasigroups:
gap> DisplayLibraryInfo( "Steiner loops" ); The library contains all nonassociative Steiner loops of order less or equal to 16. It also contains the associative Steiner loops of order 4 and 8. ------ Extent of the library: 1 loop of order 4 1 loop of order 8 1 loop of order 10 2 loops of order 14 80 loops of order 16 true
Our labeling of Steiner loops of order 16 coincides with the labeling of Steiner triple systems of order 15 in [CR99].
‣ SteinerLoop ( n, m ) | ( operation ) |
Returns: the mth Steiner loop of order n.
‣ SteinerLoops ( filters ) | ( function ) |
Returns: all Steiner loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named RCC loops contains all nonassocitive right conjugacy closed loops of order \(n\le 27\) up to isomorphism. The data for the library was generated by Katharina Artic [Art15] who can also provide additional data for all right conjugacy closed loops of order \(n\le 31\).
Let \(Q\) be a right conjugacy closed loop, \(G\) its right multiplication group and \(T\) its right section. Then \(\langle T\rangle = G\) is a transitive group, and \(T\) is a union of conjugacy classes of \(G\). Every right conjugacy closed loop of order \(n\) can therefore be represented as a union of certain conjugacy classes of a transitive group of degree \(n\). This is how right conjugacy closed loops of order less than \(28\) are represented in RightQuasigroups.
The following table summarizes the number of right conjugacy closed loops of a given order up to isomorphism:
\[ \begin{array}{r|rrrrrrrrrrrrrr} order &6& 8&9&10& 12&14&15& 16\cr loops &3&19&5&16&155&97& 17&6317\cr \hline order &18& 20&21& 22& 24& 25& 26& 27\cr loops &1901&8248&119&10487&471995& 119&151971&152701 \end{array} \]
Note: Only the right conjugacy closed loops are stored in the library. Left conjugacy closed loops are obtained from right conjugacy closed loops via OppositeLoop
.
‣ LCCLoop ( n, m ) | ( operation ) |
‣ LeftConjugacyClosedLoop ( n, m ) | ( operation ) |
‣ RCCLoop ( n, m ) | ( operation ) |
‣ RightConjugacyClosedLoop ( n, m ) | ( operation ) |
Returns: the mth left conjugacy closed loop (right conjugacy closed loop) of order n.
‣ LCCLoops ( filters ) | ( function ) |
‣ LeftConjugacyClosedLoops ( filters ) | ( function ) |
‣ RCCLoops ( filters ) | ( function ) |
‣ RightConjugacyClosedLoops ( filters ) | ( function ) |
Returns: all left conjugacy closed loops (right conjugacy closed loops) satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named CC loops contains all CC loops of order \(2\le 2^k\le 64\), \(3\le 3^k\le 81\), \(5\le 5^k\le 125\), \(7\le 7^k\le 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 [CoD05] described these 3 loops by multiplicative formulas on \(\mathbb{Z}_{p^2}\) and \(\mathbb{Z}_p \times \mathbb{Z}_p\) as follows:
Case \(m = 1\):Let \(k\) be the smallest positive integer relatively prime to \(p\) and such that \(k\) is a square modulo \(p\) (i.e., \(k=1\)). Define multiplication on \(\mathbb{Z}_{p^2}\) by \(x\cdot y = x + y + kpx^2y\).
Case \(m = 2\): Let \(k\) be the smallest positive integer relatively prime to \(p\) and such that \(k\) is not a square modulo \(p\). Define multiplication on \(\mathbb{Z}_{p^2}\) by \(x\cdot y = x + y + kpx^2y\).
Case \(m = 3\): Define multiplication on \(\mathbb{Z}_p \times \mathbb{Z}_p\) by \((x,a)(y,b) = (x+y, a+b+x^2y )\).
Moreover, Wilson [WJ75] constructed a nonassociative conjugacy closed loop of order \(2p\) for every odd prime \(p\), and Kunen [Kun00] showed that there are no other nonassociative conjugacy closed oops of this order. Here is the relevant multiplication formula on \(\mathbb{Z}_2 \times \mathbb{Z}_p\): \((0,m)(0,n) = ( 0, m + n )\), \((0,m)(1,n) = ( 1, -m + n )\), \((1,m)(0,n) = ( 1, m + n)\), \((1,m)(1,n) = ( 0, 1 - m + n )\).
‣ CCLoop ( n, m ) | ( operation ) |
‣ ConjugacyClosedLoop ( n, m ) | ( operation ) |
Returns: the mth conjugacy closed loop of order n.
‣ CCLoops ( filters ) | ( function ) |
‣ ConjugacyClosedLoops ( filters ) | ( function ) |
Returns: all conjugacy closed loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named small loops contains all nonassociative loops of order 5 and 6. There are 5 and 107 such loops, respectively.
‣ SmallLoop ( n, m ) | ( operation ) |
Returns: the mth small loop of order n.
‣ SmallLoops ( filters ) | ( function ) |
Returns: all small loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
Paige loops are nonassociative finite simple Moufang loops. Liebeck showed [Lie87] that there is precisely one Paige loop for every finite field.
The library named Paige loops contains a single loop, the smallest nonassociative simple Moufang loop of order 120 over the 2-element field.
‣ PaigeLoop ( q ) | ( operation ) |
Returns: the Paige loop over the finite field of order q. Only the case q=2
is implemented.
‣ PaigeLoops ( filters ) | ( function ) |
Returns: all Paige loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named nilpotent loops contains all nonassociative nilpotent loops of order less than 12 up to isomorphism. There are 2 nonassociative nilpotent loops of order 6, 134 of order 8, 8 of order 9 and 1043 of order 10.
See [DVe09] for more on enumeration of nilpotent loops. For instance, there are 2623755 nilpotent loops of order 12, and 123794003928541545927226368 nilpotent loops of order 22.
‣ NilpotentLoop ( n, m ) | ( operation ) |
Returns: the mth nilpotent loop of order n.
‣ NilpotentLoops ( filters ) | ( function ) |
Returns: all nilpotent loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named automorphic loops contains all nonassociative automorphic loops of order less than 16 up to isomorphism (there is 1 such loop of order 6, 7 of order 8, 3 of order 10, 2 of order 12, 5 of order 14, and 2 of order 15) and all commutative automorphic loops of order 3, 9, 27 and 81 (there are 1, 2, 7 and 72 such loops).
It turns out that commutative automorphic loops of order 3, 9, 27 and 81 (but not 243) are in one-to-on correspondence with left Bruck loops of the respective orders, see [Gre14], [SVe17]. Only the left Bruck loops are stored in the library.
‣ AutomorphicLoop ( n, m ) | ( operation ) |
Returns: the mth automorphic loop of order n.
‣ AutomorphicLoops ( filters ) | ( function ) |
Returns: all automorphic loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named interesting loops contains some loops that are illustrative in the theory of loops. At this point, the library contains a nonassociative loop of order 5, a nonassociative nilpotent loop of order 6, a non-Moufang left Bol loop of order 16, the loop of sedenions of order 32 (sedenions generalize octonions), and the unique nonassociative simple right Bol loop of order 96 and exponent 2.
‣ InterestingLoop ( n, m ) | ( operation ) |
Returns: the mth interesting loop of order n.
‣ InterestingLoops ( filters ) | ( function ) |
Returns: all interesting loops satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named small racks contains all racks of order less than 11 up to isomorphism. There are 1, 2, 6, 19, 74, 353, 2080, 16023, 159526, 2093244 such racks, respectively. (The 36265070 racks of order 11 are available from the second author upon request.)
‣ SmallRack ( n, m ) | ( operation ) |
Returns: the mth rack of order n.
‣ SmallRacks ( filters ) | ( function ) |
Returns: all small racks satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library named small quandles contains all quandles of order less than 12 up to isomorphism. There are 1, 1, 3, 7, 22, 73, 298, 1581, 11079, 102771, 1275419 such racks, respectively. (The 21101335) quandles of order 12 are available from the second author by request.)
‣ SmallQuandle ( n, m ) | ( operation ) |
Returns: the mth quandle of order n.
‣ SmallQuandles ( filters ) | ( function ) |
Returns: all small quandles satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
The library name connected quandles contains all connected quandles of order less than 48 up to isomorphism. A quandle Q
is connected if its right multiplication group acts transitively on Q
.
‣ ConnectedQuandle ( n, m ) | ( operation ) |
Returns: the mth connected quandle of order n.
‣ ConnectedQuandles ( filters ) | ( function ) |
Returns: all connected quandles satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
For the library named small loops we also provide the corresponding library of loops up to isotopism. There is 1 nonassociative loop of order 5 and 20 nonassociative loops of order 6 up to isotopism.
In general, given a library named name, the corresponding library of loops up to isotopism is named itp name, and the loops can be retrieved by a function with the prefix Itp
.
gap> SmallLoop( 6, 14 ); <small loop 6/14> gap> ItpSmallLoop( 6, 14 ); <small loop 6/42> gap> LibraryAlgebra( "itp small loops", 6, 14 ); <small loop 6/42>
Note that loops up to isotopism form a subset of the corresponding library of loops up to isomorphism. For instance, the above example shows that the 14th small loop of order 6 up to isotopism is in fact the 42nd small loop of order 6 up to isomorphism.
‣ ItpSmallLoop ( n, m ) | ( operation ) |
Returns: the mth small loop of order n up to isotopism.
‣ ItpSmallLoops ( filters ) | ( function ) |
Returns: all small loops up to isotopism satisfying the conditions specified by filters. See LibraryAlgebras
above for the conventions on filters.
generated by GAPDoc2HTML