[Up] [Previous] [Next] [Index]

# 7 Testing properties of quasigroups and loops

### Sections

1. Associativity, commutativity and generalizations
2. Inverse properties
3. Some properties of quasigroups
4. Loops of Bol-Moufang type
5. Power alternative loops
6. Conjugacy closed loops and related properties
7. Additional varieties of loops

The reader should be aware that although loops are quasigroups, it is often the case in the literature that a property named P can differ for quasigroups and loops. For instance, a Steiner loop is not necessarily a Steiner quasigroup.

To avoid such ambivalences, we often include the noun `Loop` or `Quasigroup` as part of the name of the property, e.g. `IsSteinerQuasigroup` versus `IsSteinerLoop`.

On the other hand, some properties coincide for quasigroups and loops and we therefore do not include `Loop`, `Quasigroup` as part of the name of the property, e.g. `IsCommutative`.

## 7.1 Associativity, commutativity and generalizations

The following properties test if a quasigroup Q is associative and commutative:

- `IsAssociative(` Q`) P`
- `IsCommutative(` Q`) P`

  A loop L is said to be power-associativeindexpower-associative loop (resp. diassociativeindexdiassociative loop) if every monogenic subloop of L (resp. every 2-generated subloop of L) is a group.

- `IsPowerAssociative(` L`) P`
- `IsDiassociative(` L`) P`

  ## 7.2 Inverse properties

  A loop L has the left inverse propertyindexleft inverse property if xl(xy)=y for every x, y Î L, where xl is the left inverse of x. Dually, L has the right inverse propertyindexright inverse property if (yx)xr=y for every x, y Î L, where xr is the right inverse of x. If L has both the left and right inverse properties, it has the inverse propertyindexinverse property. We say that L has two-sided inversesindextwo-sided inverses loop if xl=xr for every x Î L.

- `HasLeftInverseProperty(` L`) P`
- `HasRightInverseProperty(` L`) P`
- `HasInverseProperty(` L`) P`
- `HasTwosidedInverses(` L`) P`

  A loop has the weak inverse propertyindexweak inverse property if (xy)l x = yl. Equivalently, a loop has the weak inverse property if x(yx)r = yr.

- `HasWeakInverseProperty(` L`) P`

  According to Ar, a loop L has the automorphic inverse propertyindexautomorphic inverse property if (xy)l = xl yl, or, equivalently, (xy)r = xr yr. (In particular, when L has two-sided inverses and the automorphic inverse property, it satisfies (xy)-1=x-1y-1.) Similarly, L has the antiautomorphic inverse propertyindexantiautomorphic inverse property if (xy)l=yl xl, or, equivalently, (xy)r = yr xr.

- `HasAutomorphicInverseProperty(` L`) P`
- `HasAntiautomorphicInverseProperty(` L`) P`

  The following implications among inverse properties hold and are implemented in LOOPS:

  - Inverse property implies left and right inverse properties, two-sided inverses, weak inverse property, and antiautomorphic inverse property.
  - Antiautomorphic inverse property loops have two-sided inverses.
  - If a loop has any two of the left inverse property, right inverse property, weak inverse property or antiautomorphic inverse property, it also has the inverse property.

  ## 7.3 Some properties of quasigroups

  A quasigroup Q is semisymmetricindexsemisymmetric quasigroup if (xy)x=y for every x, y Î Q. Equivalently, Q is semisymmetric if x(yx)=y for every x, y Î Q. A semisymmetric commutative quasigroup is known as totally symmetricindextotally symmetric quasigroup. Totally symmetric quasigroups are precisely quasigroups satisfying xy=x\y = x/y.

- `IsSemisymmetric(` Q`) P`
- `IsTotallySymmetric(` Q`) P`

  A quasigroup Q is idempotentindexidempotent quasigroup if x2=x for every x Î Q. Idempotent totally symmetric quasigroups are known as Steiner quasigroupsindexSteiner quasigroup. A quasigroup Q is unipotentindexunipotent quasigroup if x2=y2 for every x, y Î Q.

- `IsIdempotent(` Q`) P`
- `IsSteinerQuasigroup(` Q`) P`
- `IsUnipotent(` Q`) P`

  A quasigroup is left distributiveindexleft distributive quasigroup if it satisfies x(yz)=(xy)(xz). Similarly, it is right distributiveindexright distributive quasigroup if it satisfies (xy)z=(xz)(yz). A distributive quasigroupindexdistributive quasigroup is a quasigroup that is both left and right distributive. A quasigroup is called entropicindexentropic quasigroup or medialindexmedial quasigroup if it satisfies (xy)(zw)=(xz)(yw).

- `IsLeftDistributive(` Q`) P`
- `IsRightDistributive(` Q`) P`
- `IsDistributive(` Q`) P`
- `IsEntropic(` Q`) P`
- `IsMedial(` Q`) P`

  In order to be compatible with GAP's terminology, we also support the synonyms

- `IsLDistributive(` Q`) P`
- `IsRDistributive(` Q`) P`

  for `IsLeftDistributive` and `IsRightDistributive` respectively.

  ## 7.4 Loops of Bol-Moufang type

  Following Fe and PhVo, a variety of loops is said to be of Bol-Moufang typeindexloops of Bol-Moufang type if it is defined by a single identity of Bol-Moufang typeindexidentity of Bol-Moufang type, i.e., by an identity that:

  - contains the same 3 variables on both sides,
  - exactly one of the variables occurs twice on both sides,
  - the variables occur in the same order on both sides.
  It is proved in PhVo that there are 13 varieties of nonassociative loops of Bol-Moufang type. These are:
  - left alternative loopsindexleft alternative loop, defined by x(xy) = (xx)y,
  - right alternative loopsindexright alternative loop, defined by x(yy) = (xy)y,
  - left nuclear square loopsindexleft nuclear square loop, defined by (xx)(yz) = ((xx)y)z,
  - middle nuclear square loopsindexmiddle nuclear square loop, defined by x((yy)z) = (x(yy))z,
  - right nuclear square loopsindexright nuclear square loop, defined by x(y(zz)) = (xy)(zz),
  - flexible loopsindexflexible loop, defined by x(yx) = (xy)x,
  - left Bol loopsindexleft Bol loop, defined by x(y(xz)) = (x(yz))x, always left alternative,
  - right Bol loopsindexright Bol loop, defined by x((yz)y) = ((xy)z)y, always right alternative,
  - LC-loopsindexLC-loop, defined by (xx)(yz) = (x(xy))z, always left alternative, left and middle nuclear square,
  - RC-loopsindexRC-loop, defined by x((yz)z) = (xy)(zz), always right alternative, right and middle nuclear square,
  - Moufang loopsindexMoufang loop, defined by (xy)(zx) = (x(yz))x, always flexible, left and right Bol,
  - C-loopsindexC-loop, defined by x(y(yz)) = ((xy)y)z, always LC and RC,
  - extra loopsindexextra loop, defined by x(y(zx)) = ((xy)z)x, always Moufang and C.
  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 are defined in several ways, by equivalent identities of Bol-Moufang type.

  There are several varieties related to loops of Bol-Moufang type. A loop is said to be alternativeindexalternative loop if it is both left and right alternative, and nuclear squareindexnuclear square loop if it is left, middle and right nuclear square.

  Here are the corresponding LOOPS commands (argument L indicates that the property applies only to loops, argument Q indicates that the property applies also to quasigroups):

- `IsExtraLoop(` L`) P`
- `IsMoufangLoop(` L`) P`
- `IsCLoop(` L`) P`
- `IsLeftBolLoop(` L`) P`
- `IsRightBolLoop(` L`) P`
- `IsLCLoop(` L`) P`
- `IsRCLoop(` L`) P`
- `IsLeftNuclearSquareLoop(` L`) P`
- `IsMiddleNuclearSquareLoop(` L`) P`
- `IsRightNuclearSquareLoop(` L`) P`
- `IsNuclearSquareLoop(` L`) P`
- `IsFlexible(` Q`) P`
- `IsLeftAlternative(` Q`) P`
- `IsRightAlternative(` Q`) P`
- `IsAlternative(` Q`) P`

  While listing the varieties of loops of Bol-Moufang type, we have also listed all inclusions among them. These inclusions are built into LOOPS.

  The following trivial example shows some of the implications and the naming conventions of LOOPS at work:

      gap> L := LoopByCayleyTable( [ [ 1, 2 ], [ 2, 1 ] ] );
      <loop of order 2>
      gap> [ IsLeftBolLoop( L ), L ]
      [ true, <left Bol loop of order 2> ]
      gap> [ HasIsLeftAlternativeLoop( L ), IsLeftAlternativeLoop( L ) ];
      [ true, true ]
      gap> [ HasIsRightBolLoop( L ), IsRightBolLoop( L ) ];
      [ false, true ]
      gap> L;
      <Moufang loop of order 2>
      gap> [ IsAssociative( L ), L ];
      [ true, <associative loop of order 2> ]

  The analogous terminology for quasigroups of Bol-Moufang type is not standard yet, and hence is not supported in LOOPS.

  ## 7.5 Power alternative loops

  A loop is left power alternativeindexleft power alternative loop if it is power associative and xn(xm y) = xn+my for every x, y and all integers n, m. Similarly, a loop is right power alternativeindexright power alternative loop if it is power associative and (xyn)ym = xyn+m for all x, y and all integers n, m. A loop that is both left and right power alternative is said to be power alternativeindexpower alternative loop.

  Left power alternative loops are left alternative and have the left inverse property. Left Bol loops and LC-loops are left power alternative.

- `IsLeftPowerAlternative(` L`) P`
- `IsRightPowerAlternative(` L`) P`
- `IsPowerAlternative(` L`) P`

  ## 7.6 Conjugacy closed loops and related properties

  noindentA loop is left (resp. right) conjugacy closedindexleft conjugacy closed loopindexright conjugacy closed loop if its left (resp. right) translations are closed under conjugation. A loop that is both left and right conjugacy closed is called conjugacy closedindexconjugacy closed loop. It is common to refer to these loops as LCC-, RCC-, CC-loops, respectively.

- `IsLCCLoop(` L`) P`
- `IsRCCLoop(` L`) P`
- `IsCCLoop(` L`) P`

  The equivalence LCC + RCC = CC is built into LOOPS.

  A loop is OsbornindexOsborn loop if it satisfies x(yz· x)=(xl\y)(zx), where xl is the left inverse of x. Both Moufang loops and CC-loops are Osborn.

- `IsOsbornLoop(` L`) P`

  ## 7.7 Additional varieties of loops

  An (even) code loopindexcode loop is a Moufang 2-loop with Frattini subloop of order 1 or 2. Code loops are extra and conjugacy closed.

- `IsCodeLoop(` L`) P`

  Steiner loopindexSteiner loop is an inverse property loop of exponent 2. Steiner loops are commutative.

- `IsSteinerLoop(` L`) P`

  A left (resp. right) Bol loop with the automorphic inverse property is known as left (resp. right) Bruck loopindexleft Bruck loopindexright Bruck loop. Bruck loops are also known as K-loopsindexK-loop.

- `IsLeftBruckLoop(` L`) P`
- `IsLeftKLoop(` L`) P`
- `IsRightBruckLoop(` L`) P`
- `IsRightKLoop(` L`) P`

  A loop whose all left (resp. middle, right) inner mappings are automorphisms is called a left (resp. middle, right) A-loopindexleft A-loopindexmiddle A-loopindexright A-loop. A loop whose every inner mapping is an automorphism is known as an A-loopindexA-loop. Diassociative A-loops are Moufang by KiKuPh. See the built-in filters for additional properties of A-loops.

- `IsLeftALoop(` L`) P`
- `IsMiddleALoop(` L`) P`
- `IsRightALoop(` L`) P`
- `IsALoop(` L`) P`

  Do not confuse `IsALoop` and `IsLoop`.

  [Up] [Previous] [Next] [Index]