Goto Chapter: Top 1 2 3 4 5 6 7 8 9 A B Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

7 Testing Properties of Quasigroups and Loops
 7.1 Associativity, Commutativity and Generalizations
 7.2 Inverse Properties
 7.3 Some Properties of Quasigroups
 7.4 Loops of Bol Moufang Type
 7.5 Power Alternative Loops
 7.6 Conjugacy Closed Loops and Related Properties
 7.7 Automorphic Loops
 7.8 Additional Varieties of Loops

7 Testing Properties of Quasigroups and Loops

Although loops are quasigroups, it is often the case in the literature that a property of the same name can differ for quasigroups and loops. For instance, a Steiner loop is not necessarily a Steiner quasigroup.

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

7.1-1 IsAssociative
‣ IsAssociative( Q )( property )

Returns: true if Q is an associative quasigroup.

7.1-2 IsCommutative
‣ IsCommutative( Q )( property )

Returns: true if Q is a commutative quasigroup.

7.1-3 IsPowerAssociative
‣ IsPowerAssociative( Q )( property )

Returns: true if Q is a power associative quasigroup.

A quasigroup Q is said to be power associative if every element of Q generates an associative quasigroup, that is, a group.

7.1-4 IsDiassociative
‣ IsDiassociative( Q )( property )

Returns: true if Q is a diassociative quasigroup.

A quasigroup Q is said to be diassociative if any two elements of Q generate an associative quasigroup, that is, a group. Note that a diassociative quasigroup is necessarily a loop, but it need not be so declared in LOOPS.

7.2 Inverse Properties

For an element x of a loop Q, the left inverse of x is the element x^λ of Q such that x^λ ⋅ x = 1, while the right inverse of x is the element x^ρ of Q such that x⋅ x^ρ = 1.

7.2-1 HasLeftInverseProperty, HasRightInverseProperty and HasInverseProperty
‣ HasLeftInverseProperty( Q )( property )
‣ HasRightInverseProperty( Q )( property )
‣ HasInverseProperty( Q )( property )

Returns: true if a loop Q has the left inverse property, right inverse property, resp. inverse property.

A loop Q has the left inverse property if x^λ(xy)=y for every x, y in Q. Dually, Q has the right inverse property if (yx)x^ρ=y for every x, y in Q. If Q has both the left inverse property and the right inverse property, it has the inverse property.

7.2-2 HasTwosidedInverses
‣ HasTwosidedInverses( Q )( property )

Returns: true if a loop Q has two-sided inverses.

A loop Q is said to have two-sided inverses if x^λ=x^ρ for every x in Q.

7.2-3 HasWeakInverseProperty
‣ HasWeakInverseProperty( Q )( property )

Returns: true if a loop Q has the weak inverse property.

A loop Q has the weak inverse property if (xy)^λ x = y^λ (equivalently, x(yx)^ρ = y^ρ) holds for every x, y in Q.

7.2-4 HasAutomorphicInverseProperty
‣ HasAutomorphicInverseProperty( Q )( property )

Returns: true if a loop Q has the automorphic inverse property.

According to [Art59], a loop Q has the automorphic inverse property if (xy)^λ = x^λ y^λ, or, equivalently, (xy)^ρ = x^ρ y^ρ holds for every x, y in Q.

7.2-5 HasAntiautomorphicInverseProperty
‣ HasAntiautomorphicInverseProperty( Q )( property )

Returns: true if a loop Q has the antiautomorphic inverse property.

A loop Q has the antiautomorphic inverse property if (xy)^λ=y^λ x^λ, or, equivalently, (xy)^ρ = y^ρ x^ρ holds for every x, y in Q.

See Appendix B for implications implemented in LOOPS among various inverse properties.

7.3 Some Properties of Quasigroups

7.3-1 IsSemisymmetric
‣ IsSemisymmetric( Q )( property )

Returns: true if Q is a semisymmetric quasigroup.

A quasigroup Q is semisymmetric if (xy)x=y, or, equivalently x(yx)=y holds for every x, y in Q.

7.3-2 IsTotallySymmetric
‣ IsTotallySymmetric( Q )( property )

Returns: true if Q is a totally symmetric quasigroup.

A commutative semisymmetric quasigroup is called totally symmetric. Totally symmetric quasigroups are precisely the quasigroups satisfying xy=xbackslash y = x/y.

7.3-3 IsIdempotent
‣ IsIdempotent( Q )( property )

Returns: true if Q is an idempotent quasigroup.

A quasigroup is idempotent if it satisfies x^2=x.

7.3-4 IsSteinerQuasigroup
‣ IsSteinerQuasigroup( Q )( property )

Returns: true if Q is a Steiner quasigroup.

A totally symmetric idempotent quasigroup is called a Steiner quasigroup.

7.3-5 IsUnipotent

A quasigroup Q is unipotent if it satisfies x^2=y^2 for every x, y in Q.

‣ IsUnipotent( Q )( property )

Returns: true if Q is a unipotent quasigroup.

7.3-6 IsLeftDistributive, IsRightDistributive, IsDistributive
‣ IsLeftDistributive( Q )( property )
‣ IsRightDistributive( Q )( property )
‣ IsDistributive( Q )( property )

Returns: true if Q is a left distributive quasigroup, resp. a right distributive quasigroup, resp. a distributive quasigroup.

A quasigroup is left distributive if it satisfies x(yz) = (xy)(xz), right distributive if it satisfies (xy)z = (xz)(yz), and distributive if it is both left distributive and right distributive.

Remark: In order to be compatible with GAPs terminology, we also support the synonyms IsLDistributive and IsRDistributive of IsLeftDistributive and IsRightDistributive, respectively.

7.3-7 IsEntropic and IsMedial
‣ IsEntropic( Q )( property )
‣ IsMedial( Q )( property )

Returns: true if Q is an entropic (aka medial) quasigroup.

A quasigroup is entropic or medial if it satisfies the identity (xy)(uv) = (xu)(yv).

7.4 Loops of Bol Moufang Type

Following [Fen69] and [PV05], a variety of loops is said to be of Bol-Moufang type if it is defined by a single identity 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, and the variables occur in the same order on both sides.

It is proved in [PV05] that there are 13 varieties of nonassociative loops of Bol-Moufang type. These are:

Note that although some of the defining identities are not of Bol-Moufang type, they are equivalent to a Bol-Moufang identity. Moreover, many varieties of loops of Bol-Moufang type can be defined by one of several equivalent identities of Bol-Moufang type.

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

7.4-1 IsExtraLoop
‣ IsExtraLoop( Q )( property )

Returns: true if Q is an extra loop.

7.4-2 IsMoufangLoop
‣ IsMoufangLoop( Q )( property )

Returns: true if Q is a Moufang loop.

7.4-3 IsCLoop
‣ IsCLoop( Q )( property )

Returns: true if Q is a C loop.

7.4-4 IsLeftBolLoop
‣ IsLeftBolLoop( Q )( property )

Returns: true if Q is a left Bol loop.

7.4-5 IsRightBolLoop
‣ IsRightBolLoop( Q )( property )

Returns: true if Q is a right Bol loop.

7.4-6 IsLCLoop
‣ IsLCLoop( Q )( property )

Returns: true if Q is an LC loop.

7.4-7 IsRCLoop
‣ IsRCLoop( Q )( property )

Returns: true if Q is an RC loop.

7.4-8 IsLeftNuclearSquareLoop
‣ IsLeftNuclearSquareLoop( Q )( property )

Returns: true if Q is a left nuclear square loop.

7.4-9 IsMiddleNuclearSquareLoop
‣ IsMiddleNuclearSquareLoop( Q )( property )

Returns: true if Q is a middle nuclear square loop.

7.4-10 IsRightNuclearSquareLoop
‣ IsRightNuclearSquareLoop( Q )( property )

Returns: true if Q is a right nuclear square loop.

7.4-11 IsNuclearSquareLoop
‣ IsNuclearSquareLoop( Q )( property )

Returns: true if Q is a nuclear square loop.

7.4-12 IsFlexible
‣ IsFlexible( Q )( property )

Returns: true if Q is a flexible quasigroup.

7.4-13 IsLeftAlternative
‣ IsLeftAlternative( Q )( property )

Returns: true if Q is a left alternative quasigroup.

7.4-14 IsRightAlternative
‣ IsRightAlternative( Q )( property )

Returns: true if Q is a right alternative quasigroup.

7.4-15 IsAlternative
‣ IsAlternative( Q )( property )

Returns: true if Q is an alternative quasigroup.

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

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 except for the situations explicitly noted above.

7.5 Power Alternative Loops

A loop is left power alternative if it is power associative and satisfies x^n(x^m y) = x^n+my for all elements x, y and all integers m, n. Similarly, a loop is right power alternative if it is power associative and satisfies (x y^n)y^m = xy^n+m for all elements x, y and all integers m, n. A loop is power alternative if it is both left power alternative and right power alternative.

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

7.5-1 IsLeftPowerAlternative, IsRightPowerAlternative and IsPowerAlternative
‣ IsLeftPowerAlternative( Q )( property )
‣ IsRightPowerAlternative( Q )( property )
‣ IsPowerAlternative( Q )( property )

Returns: true if Q is a left power alternative loop, resp. a right power alternative loop, resp. a power alternative loop.

7.6 Conjugacy Closed Loops and Related Properties

A loop Q is left conjugacy closed if the set of left translations of Q is closed under conjugation (by itself). Similarly, a loop Q is right conjugacy closed if the set of right translations of Q is closed under conjugation. A loop is conjugacy closed if it is both left conjugacy closed and right conjugacy closed. It is common to refer to these loops as LCC, RCC, and CC loops, respectively.

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

7.6-1 IsLCCLoop
‣ IsLCCLoop( Q )( property )
‣ IsLeftConjugacyClosedLoop( Q )( property )

Returns: true if Q is a left conjugacy closed loop.

7.6-2 IsRCCLoop
‣ IsRCCLoop( Q )( property )
‣ IsRightConjugacyClosedLoop( Q )( property )

Returns: true if Q is a right conjugacy closed loop.

7.6-3 IsCCLoop
‣ IsCCLoop( Q )( property )
‣ IsConjugacyClosedLoop( Q )( property )

Returns: true if Q is a conjugacy closed loop.

7.6-4 IsOsbornLoop
‣ IsOsbornLoop( Q )( property )

Returns: true if Q is an Osborn loop.

A loop is Osborn if it satisfies x(yz⋅ x)=(x^λbackslash y)(zx). Both Moufang loops and CC loops are Osborn.

7.7 Automorphic Loops

A loop Q whose all left (resp. middle, resp. right) inner mappings are automorphisms of Q is known as a left automorphic loop (resp. middle automorphic loop, resp. right automorphic loop).

A loop Q is an automorphic loop if all inner mappings of Q are automorphisms of Q.

Automorphic loops are also known as A loops, and similar terminology exists for left, right and middle automorphic loops.

The following results hold for automorphic loops:

See the built-in filters and the survey [Voj15] for additional properties of automorphic loops.

7.7-1 IsLeftAutomorphicLoop
‣ IsLeftAutomorphicLoop( Q )( property )
‣ IsLeftALoop( Q )( property )

Returns: true if Q is a left automorphic loop.

7.7-2 IsMiddleAutomorphicLoop
‣ IsMiddleAutomorphicLoop( Q )( property )
‣ IsMiddleALoop( Q )( property )

Returns: true if Q is a middle automorphic loop.

7.7-3 IsRightAutomorphicLoop
‣ IsRightAutomorphicLoop( Q )( property )
‣ IsRightALoop( Q )( property )

Returns: true if Q is a right automorphic loop.

7.7-4 IsAutomorphicLoop
‣ IsAutomorphicLoop( Q )( property )
‣ IsALoop( Q )( property )

Returns: true if Q is an automorphic loop.

Remark: Be careful not to confuse IsALoop and IsLoop.

7.8 Additional Varieties of Loops

7.8-1 IsCodeLoop
‣ IsCodeLoop( Q )( property )

Returns: true if Q is a code loop.

A code loop is a Moufang 2-loop with a Frattini subloop of order 1 or 2. Code loops are extra and conjugacy closed.

7.8-2 IsSteinerLoop
‣ IsSteinerLoop( Q )( property )

Returns: true if Q is a Steiner loop.

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

7.8-3 IsLeftBruckLoop and IsLeftKLoop
‣ IsLeftBruckLoop( Q )( property )
‣ IsLeftKLoop( Q )( property )

Returns: true if Q is a left Bruck loop (aka left K loop).

A left Bol loop with the automorphic inverse property is known as a left Bruck loop or a left K loop.

7.8-4 IsRightBruckLoop and IsRightKLoop
‣ IsRightBruckLoop( Q )( property )
‣ IsRightKLoop( Q )( property )

Returns: true if Q is a right Bruck loop (aka right K loop).

A right Bol loop with the automorphic inverse property is known as a right Bruck loop or a right K loop.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 A B Bib Ind

generated by GAPDoc2HTML