This chapter describes methods of **LOOPS** that apply to specific classes of loops, mostly Bol and Moufang loops.

`‣ AssociatedLeftBruckLoop` ( Q ) | ( attribute ) |

`‣ AssociatedRightBruckLoop` ( Q ) | ( attribute ) |

Returns: The left (resp. right) Bruck loop associated with a uniquely 2-divisible left (resp. right) Bol loop `Q`.

Let \(Q\) be a left Bol loop such that the mapping \(x\mapsto x^2\) is a permutation of \(Q\). Define a new operation \(*\) on \(Q\) by \(x*y =(x(y^2x))^{1/2}\). Then \((Q,*)\) is a left Bruck loop, called the *associated left Bruck loop*. (In fact, Bruck used the isomorphic operation \(x*y = x^{1/2}(yx^{1/2})\) instead. Our approach is more natural in the sense that the left Bruck loop associated with a left Bruck loop is identical to the original loop.) Associated right Bruck loops are defined dually.

`‣ IsExactGroupFactorization` ( G, H1, H2 ) | ( operation ) |

Returns: `true`

if (`G`, `H1`, `H2`) is an exact group factorization.

Many right Bol loops can be constructed from exact group factorizations. The triple \((G,H_1,H_2)\) is an *exact group factorization* if \(H_1\), \(H_2\) are subgroups of \(G\) such that \(H_1H_2=G\) and \(H_1\cap H_2=1\).

If \((G,H_1,H_2)\) is an exact group factorization then \((G\times G, H_1\times H_2, T)\) with \(T=\{(x,x^{-1})| x\in G\}\) is a loop folder that gives rise to a right Bol loop.

`‣ RightBolLoopByExactGroupFactorization` ( arg ) | ( function ) |

Returns: The right Bol loop constructed from an exact group factorization. The argument `arg` can either be an exact group factorization `[G,H1,H2]`

, or the tuple `[G,H]`

, where `H`

is a regular subgroup of `G`

. We also allow `arg` to be separate entries rather than a list of entries.

Drápal [Drá03] described two prominent families of extensions of Moufang loops. It turns out that these extensions suffice to obtain all nonassociative Moufang loops of order at most 64 if one starts with so-called Chein loops. We call the two constructions *Moufang modifications*. The library of Moufang loops included in **LOOPS** is based on Moufang modifications. See [DV06] for details.

`‣ LoopByCyclicModification` ( Q, S, a, h ) | ( function ) |

Returns: The cyclic modification of a Moufang loop `Q` obtained from `S`, `a`\(=\alpha\) and `h` described below.

Assume that \(Q\) is a Moufang loop with a normal subloop \(S\) such that \(Q/S\) is a cyclic group of order \(2m\). Let \(h\in S\cap Z(L)\). Let \(\alpha\) be a generator of \(Q/S\) and write \(Q = \bigcup_{i\in M} \alpha^i\), where \(M=\{-m+1\), \(\dots\), \(m\}\). Let \(\sigma:\mathbb{Z}\to M\) be defined by \(\sigma(i)=0\) if \(i\in M\), \(\sigma(i)=1\) if \(i>m\), and \(\sigma(i)=-1\) if \(i<-m+1\). Introduce a new multiplication \(*\) on \(Q\) by \(x*y = xyh^{\sigma(i+j)}\), where \(x\in \alpha^i\), \(y\in\alpha^j\), \(i\in M\) and \(j\in M\). Then \((Q,*)\) is a Moufang loop, a *cyclic modification* of \(Q\).

`‣ LoopByDihedralModification` ( Q, S, e, f, h ) | ( function ) |

Returns: The dihedral modification of a Moufang loop `Q` obtained from `S`, `e`, `f` and `h` as described below.

Let \(Q\) be a Moufang loop with a normal subloop \(S\) such that \(Q/S\) is a dihedral group of order \(4m\), with \(m\ge 1\). Let \(M\) and \(\sigma\) be defined as in the cyclic case. Let \(\beta\), \(\gamma\) be two involutions of \(Q/S\) such that \(\alpha=\beta\gamma\) generates a cyclic subgroup of \(Q/S\) of order \(2m\). Let \(e\in\beta\) and \(f\in\gamma\) be arbitrary. Then \(Q\) can be written as a disjoint union \(Q=\bigcup_{i\in M}(\alpha^i\cup e\alpha^i)\), and also \(Q=\bigcup_{i\in M}(\alpha^i\cup \alpha^if)\). Let \(G_0=\bigcup_{i\in M}\alpha^i\), and \(G_1=L\setminus G_0\). Let \(h\in S\cap N(L)\cap Z(G_0)\). Introduce a new multiplication \(*\) on \(Q\) by \(x*y = xyh^{(-1)^r\sigma(i+j)}\), where \(x\in\alpha^i\cup e\alpha^i\), \(y\in\alpha^j\cup \alpha^jf\), \(i\in M\), \(j\in M\), \(y\in G_r\) and \(r\in\{0,1\}\). Then \((Q,*)\) is a Moufang loop, a *dihedral modification* of \(Q\).

`‣ LoopMG2` ( G ) | ( function ) |

Returns: The Chein loop constructed from a group `G`.

Let \(G\) be a group. Let \(\overline{G}=\{\overline{g}|g\in G\}\) be a disjoint copy of elements of \(G\). Define multiplication \(*\) on \(Q=G\cup \overline{G}\) by \(g*h = gh\), \(g*\overline{h}=\overline{hg}\), \(\overline{g}*h = \overline{gh^{-1}}\) and \(\overline{g}*\overline{h}=h^{-1}g\), where \(g\), \(h\in G\). Then \((Q,*)=M(G,2)\) is a so-called *Chein loop*, which is always a Moufang loop, and it is associative if and only if \(G\) is commutative.

Let \(G\) be a group and \(\sigma\), \(\rho\) be automorphisms of \(G\) satisfying \(\sigma^2 = \rho^3 = (\sigma \rho)^2 = 1\). Below we write automorphisms as exponents and \([g,\sigma]\) for \(g^{-1}g^\sigma\). We say that the triple \((G,\rho,\sigma)\) is a *group with triality* if \([g, \sigma] [g,\sigma]^\rho [g,\sigma]^{\rho^2} =1\) holds for all \(g \in G\). It is known that one can associate a group with triality \((G,\rho,\sigma)\) in a canonical way with a Moufang loop \(Q\). See [NV03] for more details.

For any Moufang loop \(Q\), we can calculate the triality group as a permutation group acting on \(3|Q|\) points. If the multiplication group of \(Q\) is polycyclic, then we can also represent the triality group as a pc group. In both cases, the automorphisms \(\sigma\) and \(\rho\) are in the same family as the elements of \(G\).

`‣ TrialityPermGroup` ( Q ) | ( function ) |

Returns: A record with components `G`

, `rho`

, `sigma`

, where `G`

is the canonical group with triality associated with a Moufang loop `Q`, and `rho`

, `sigma`

are the corresponding triality automorphisms.

`‣ TrialityPcGroup` ( Q ) | ( function ) |

This is a variation of `TrialityPermGroup`

in which `G`

is returned as a pc group.

It is difficult to determine which groups can occur as multiplication groups of loops.

The following operations search for loops whose multiplication groups are contained within a specified transitive permutation group `G`. In all these operations, one can speed up the search by increasing the optional argument `depth`, the price being a much higher memory consumption. The argument `depth` is optimally chosen if in the permutation group `G` there are not many permutations fixing `depth` elements. It is safe to omit the argument or set it equal to 2.

The optional argument `infolevel` determines the amount of information displayed during the search. With

, no information is provided. With `infolevel`=0

, you get some information on timing and hits. With `infolevel`=1

, the results are printed as well.`infolevel`=2

`‣ AllLoopTablesInGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: All Cayley tables of loops whose multiplication group is contained in the transitive permutation group `G`.

`‣ AllProperLoopTablesInGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: All Cayley tables of nonassociative loops whose multiplication group is contained in the transitive permutation group `G`.

`‣ OneLoopTableInGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: A Cayley table of a loop whose multiplication group is contained in the transitive permutation group `G`.

`‣ OneProperLoopTableInGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: A Cayley table of a nonassociative loop whose multiplication group is contained in the transitive permutation group `G`.

`‣ AllLoopsWithMltGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: A list of all loops (given as sections) whose multiplication group is equal to the transitive permutation group `G`.

`‣ OneLoopWithMltGroup` ( G[, depth[, infolevel]] ) | ( operation ) |

Returns: One loop (given as a section) whose multiplication group is equal to the transitive permutation group `G`.

gap> g:=PGL(3,3); Group([ (6,7)(8,11)(9,13)(10,12), (1,2,5,7,13,3,8,6,10,9,12,4,11) ]) gap> a:=AllLoopTablesInGroup(g,3,0);; Size(a); 56 gap> a:=AllLoopsWithMltGroup(g,3,0);; Size(a); 52

generated by GAPDoc2HTML