loops/doc/chap7.txt

490 lines
24 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 Propeties
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:
 left alternative loops defined by x(xy) = (xx)y,
 right alternative loops defined by x(yy) = (xy)y,
 left nuclear square loops defined by (xx)(yz) = ((xx)y)z,
 middle nuclear square loopsdefined by x((yy)z) = (x(yy))z,
 right nuclear square loops defined by x(y(zz)) = (xy)(zz),
 flexible loops defined by x(yx) = (xy)x,
 left Bol loops defined by x(y(xz)) = (x(yx))z, always left
alternative,
 right Bol loops defined by x((yz)y) = ((xy)z)y, always right
alternative,
 LC loops defined by (xx)(yz) = (x(xy))z, always left alternative, left
nuclear square and middle nuclear square,
 RC loops defined by x((yz)z) = (xy)(zz), always right alternative,
right nuclear square and middle nuclear square,
 Moufang loops defined by (xy)(zx) = (x(yz))x, always flexible, left
Bol and right Bol,
 C loops defined by x(y(yz)) = ((xy)y)z, always LC and RC,
 extra loops 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 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:
 Example 
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:
 automorphic loops are power associative [BP56]
 in an automorphic loop Q we have Nuc(Q) = Nuc_λ(Q) = Nuc_ρ(Q)le
Nuc_μ(Q) and all nuclei are normal [BP56]
 a loop that is left automorphic and right automorphic satisfies the
anti-automorphic inverse property and is automorphic [JKNV11]
 diassociative automorphic loops are Moufang [KKP02]
 automorphic loops of odd order are solvable [KKPV16]
 finite commutative automorphic loops are solvable [GKN14]
 commutative automorphic loops of order p, 2p, 4p, p^2, 2p^2, 4p^2 (p
an odd prime) are abelian groups [Voj15]
 commutative automorphic loops of odd prime power order are centrally
nilpotent [JKV12]
 for any prime p, there are 7 commutative automorphic loops of order
p^3 up to isomorphism [BGV12]
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 Additonal 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.