Correct the TrueMethods: elt must be associate and have inverses to have quotients
This commit is contained in:
parent
1cf79a02c3
commit
d7f394f957
@ -19,11 +19,14 @@ DeclareCategory( "IsRightQuotientElement", IsExtLElement);
|
|||||||
DeclareCategoryCollections("IsRightQuotientElement");
|
DeclareCategoryCollections("IsRightQuotientElement");
|
||||||
DeclareCategoryCollections("IsRightQuotientElementCollection");
|
DeclareCategoryCollections("IsRightQuotientElementCollection");
|
||||||
|
|
||||||
## Every element with an inverse can form right quotients
|
## Every associative element with an inverse can form right quotients
|
||||||
## (in fact, in some sense it might be enough to have just a left inverse,
|
## (in fact, in some sense it might be enough to have just a left inverse,
|
||||||
## but there doesn't seem to be any benefit to delving to that level of
|
## but there doesn't seem to be any benefit to delving to that level of
|
||||||
## detail at this point.)
|
## detail at this point.)
|
||||||
InstallTrueMethod(IsRightQuotientElement, IsMultiplicativeElementWithInverse);
|
## By noting this property, we can create a RightQuasigroup from, e.g., group
|
||||||
|
## elements
|
||||||
|
InstallTrueMethod(IsRightQuotientElement,
|
||||||
|
IsMultiplicativeElementWithInverse and IsAssociativeElement);
|
||||||
|
|
||||||
## Now what we would like to do is re-declare
|
## Now what we would like to do is re-declare
|
||||||
## DeclareOperation( "/", [IsExtRElement, IsRightQuotientElement] );
|
## DeclareOperation( "/", [IsExtRElement, IsRightQuotientElement] );
|
||||||
@ -37,8 +40,9 @@ DeclareCategory( "IsLeftQuotientElement", IsExtRElement);
|
|||||||
DeclareCategoryCollections("IsLeftQuotientElement");
|
DeclareCategoryCollections("IsLeftQuotientElement");
|
||||||
DeclareCategoryCollections("IsLeftQuotientElementCollection");
|
DeclareCategoryCollections("IsLeftQuotientElementCollection");
|
||||||
|
|
||||||
## Every element with an inverse can form left quotients
|
## Every associative element with an inverse can form left quotients
|
||||||
InstallTrueMethod(IsLeftQuotientElement, IsMultiplicativeElementWithInverse);
|
InstallTrueMethod(IsLeftQuotientElement,
|
||||||
|
IsMultiplicativeElementWithInverse and IsAssociativeElement);
|
||||||
|
|
||||||
## Again, ideally (in some sense) we'd like to redeclare
|
## Again, ideally (in some sense) we'd like to redeclare
|
||||||
## DeclareOperation("LeftQuotient", [IsLeftQuotientElement,IsExtLElement]);
|
## DeclareOperation("LeftQuotient", [IsLeftQuotientElement,IsExtLElement]);
|
||||||
@ -60,10 +64,28 @@ DeclareRepresentation( "IsLoopElmRep",
|
|||||||
DeclareCategory("IsRightQuasigroup",
|
DeclareCategory("IsRightQuasigroup",
|
||||||
IsMagma and IsRightQuotientElementCollection);
|
IsMagma and IsRightQuotientElementCollection);
|
||||||
|
|
||||||
|
## Although the following assertion is mathematically correct, unfortunately
|
||||||
|
## it interferes with method selection for standard group operations
|
||||||
|
## in GAP. As an example, if it is uncommented, it will no longer be possible
|
||||||
|
## to construct a CyclicGroup; trying to do so eventually dies in
|
||||||
|
## GeneratorsOfRightQuasigroup. Those errors could conceivably be corrected by
|
||||||
|
## delving further into GAP's method selection mechanism and adjusting the
|
||||||
|
## declarations of various quasigroup operations, but it doesn't seem worth
|
||||||
|
## the effort as there is unlikely to be much call to consider a group as a
|
||||||
|
## quasigroup. If it is desirable to do so in a particular case, it should be
|
||||||
|
## possible to use the elements of the group to form a quasigroup, since they
|
||||||
|
## will all satisfy IsRightQuotientElement by a TrueMethod installed above.
|
||||||
|
|
||||||
|
## InstallTrueMethod(IsRightQuasigroup, IsGroup);
|
||||||
|
|
||||||
## Left quasigroup
|
## Left quasigroup
|
||||||
DeclareCategory("IsLeftQuasigroup",
|
DeclareCategory("IsLeftQuasigroup",
|
||||||
IsMagma and IsLeftQuotientElementCollection);
|
IsMagma and IsLeftQuotientElementCollection);
|
||||||
|
|
||||||
|
## We forego the following for the reasons outlined above for right quasigroups.
|
||||||
|
|
||||||
|
## InstallTrueMethod(IsLeftQuasigroup, IsGroup);
|
||||||
|
|
||||||
## quasigroup
|
## quasigroup
|
||||||
DeclareSynonym( "IsQuasigroup", IsRightQuasigroup and IsLeftQuasigroup );
|
DeclareSynonym( "IsQuasigroup", IsRightQuasigroup and IsLeftQuasigroup );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user