1############################################################################# 2## 3#W classes.gd Testing varieties [loops] 4## 5## 6#Y Copyright (C) 2004, G. P. Nagy (University of Szeged, Hungary), 7#Y P. Vojtechovsky (University of Denver, USA) 8## 9 10############################################################################# 11## ASSOCIATIVITY, COMMUTATIVITY AND GENERALIZATIONS 12## ------------------------------------------------------------------------- 13 14DeclareProperty( "IsAssociative", IsLoop ); 15DeclareProperty( "IsCommutative", IsQuasigroup ); 16DeclareProperty( "IsPowerAssociative", IsQuasigroup ); 17DeclareProperty( "IsDiassociative", IsQuasigroup ); 18 19############################################################################# 20## INVERSE PROPERTIES 21## ------------------------------------------------------------------------- 22 23DeclareProperty( "HasLeftInverseProperty", IsLoop ); 24DeclareProperty( "HasRightInverseProperty", IsLoop ); 25DeclareProperty( "HasInverseProperty", IsLoop ); 26DeclareProperty( "HasWeakInverseProperty", IsLoop ); 27DeclareProperty( "HasTwosidedInverses", IsLoop ); 28DeclareProperty( "HasAutomorphicInverseProperty", IsLoop ); 29DeclareProperty( "HasAntiautomorphicInverseProperty", IsLoop ); 30 31############################################################################# 32## PROPERTIES OF QUASIGROUPS 33## ------------------------------------------------------------------------- 34 35DeclareProperty( "IsSemisymmetric", IsQuasigroup ); 36DeclareProperty( "IsTotallySymmetric", IsQuasigroup ); 37DeclareProperty( "IsIdempotent", IsQuasigroup ); 38DeclareProperty( "IsSteinerQuasigroup", IsQuasigroup ); 39DeclareProperty( "IsUnipotent", IsQuasigroup ); 40DeclareProperty( "IsLDistributive", IsQuasigroup ); 41DeclareProperty( "IsRDistributive", IsQuasigroup ); 42DeclareSynonymAttr( "IsLeftDistributive", IsLDistributive ); 43DeclareSynonymAttr( "IsRightDistributive", IsRDistributive ); 44#IsDistributive already declared in GAP 45DeclareProperty( "IsEntropic", IsQuasigroup ); 46DeclareSynonymAttr( "IsMedial", IsEntropic ); 47 48############################################################################# 49## LOOPS OF BOL-MOUFANG TYPE 50## ------------------------------------------------------------------------- 51 52DeclareProperty( "IsExtraLoop", IsLoop ); 53DeclareProperty( "IsMoufangLoop", IsLoop ); 54DeclareProperty( "IsCLoop", IsLoop ); 55DeclareProperty( "IsLeftBolLoop", IsLoop ); 56DeclareProperty( "IsRightBolLoop", IsLoop ); 57DeclareProperty( "IsLCLoop", IsLoop ); 58DeclareProperty( "IsRCLoop", IsLoop ); 59DeclareProperty( "IsLeftNuclearSquareLoop", IsLoop ); 60DeclareProperty( "IsMiddleNuclearSquareLoop", IsLoop ); 61DeclareProperty( "IsRightNuclearSquareLoop", IsLoop ); 62DeclareProperty( "IsNuclearSquareLoop", IsLoop ); 63DeclareProperty( "IsFlexible", IsQuasigroup ); 64DeclareProperty( "IsLeftAlternative", IsQuasigroup ); 65DeclareProperty( "IsRightAlternative", IsQuasigroup ); 66DeclareProperty( "IsAlternative", IsQuasigroup ); 67 68############################################################################# 69## POWER ALTERNATIVE LOOPS 70## ------------------------------------------------------------------------- 71 72DeclareProperty( "IsLeftPowerAlternative", IsLoop ); 73DeclareProperty( "IsRightPowerAlternative", IsLoop ); 74DeclareProperty( "IsPowerAlternative", IsLoop ); 75 76############################################################################# 77## CC-LOOPS AND RELATED PROPERTIES 78## ------------------------------------------------------------------------- 79 80DeclareProperty( "IsLCCLoop", IsLoop ); 81DeclareSynonymAttr( "IsLeftConjugacyClosedLoop", IsLCCLoop ); 82DeclareProperty( "IsRCCLoop", IsLoop ); 83DeclareSynonymAttr( "IsRightConjugacyClosedLoop", IsRCCLoop ); 84DeclareProperty( "IsCCLoop", IsLoop ); 85DeclareSynonymAttr( "IsConjugacyClosedLoop", IsCCLoop ); 86DeclareProperty( "IsOsbornLoop", IsLoop ); 87 88############################################################################ 89## ADDITIONAL VARIETIES OF LOOPS 90## ------------------------------------------------------------------------- 91 92DeclareProperty( "IsCodeLoop", IsLoop ); 93DeclareProperty( "IsSteinerLoop", IsLoop ); 94DeclareProperty( "IsLeftBruckLoop", IsLoop ); 95DeclareSynonymAttr( "IsLeftKLoop", IsLeftBruckLoop ); 96DeclareProperty( "IsRightBruckLoop", IsLoop ); 97DeclareSynonymAttr( "IsRightKLoop", IsRightBruckLoop ); 98DeclareProperty( "IsALoop", IsLoop ); 99DeclareSynonymAttr( "IsAutomorphicLoop", IsALoop ); 100DeclareProperty( "IsLeftALoop", IsLoop ); 101DeclareSynonymAttr( "IsLeftAutomorphicLoop", IsLeftALoop ); 102DeclareProperty( "IsMiddleALoop", IsLoop ); 103DeclareSynonymAttr( "IsMiddleAutomorphicLoop", IsMiddleALoop ); 104DeclareProperty( "IsRightALoop", IsLoop ); 105DeclareSynonymAttr( "IsRightAutomorphicLoop", IsRightALoop ); 106 107############################################################################ 108## IMPLICATIONS for InstallTrueMethod 109## ------------------------------------------------------------------------- 110 111# implies 112InstallTrueMethod( IsExtraLoop, IsAssociative and IsLoop ); 113InstallTrueMethod( HasTwosidedInverses, IsPowerAssociative and IsLoop ); 114InstallTrueMethod( IsPowerAlternative, IsDiassociative ); 115InstallTrueMethod( IsFlexible, IsDiassociative ); 116InstallTrueMethod( IsMoufangLoop, IsExtraLoop ); 117InstallTrueMethod( IsCLoop, IsExtraLoop ); 118InstallTrueMethod( IsLeftBolLoop, IsMoufangLoop ); 119InstallTrueMethod( IsRightBolLoop, IsMoufangLoop ); 120InstallTrueMethod( IsDiassociative, IsMoufangLoop ); 121InstallTrueMethod( IsLCLoop, IsCLoop ); 122InstallTrueMethod( IsRCLoop, IsCLoop ); 123InstallTrueMethod( IsDiassociative, IsCLoop and IsFlexible); 124InstallTrueMethod( IsRightBolLoop, IsLeftBolLoop and IsCommutative ); 125InstallTrueMethod( IsLeftPowerAlternative, IsLeftBolLoop ); 126InstallTrueMethod( IsLeftBolLoop, IsRightBolLoop and IsCommutative ); 127InstallTrueMethod( IsRightPowerAlternative, IsRightBolLoop ); 128InstallTrueMethod( IsLeftPowerAlternative, IsLCLoop ); 129InstallTrueMethod( IsLeftNuclearSquareLoop, IsLCLoop ); 130InstallTrueMethod( IsMiddleNuclearSquareLoop, IsLCLoop ); 131InstallTrueMethod( IsRCLoop, IsLCLoop and IsCommutative ); 132InstallTrueMethod( IsRightPowerAlternative, IsRCLoop ); 133InstallTrueMethod( IsRightNuclearSquareLoop, IsRCLoop ); 134InstallTrueMethod( IsMiddleNuclearSquareLoop, IsRCLoop ); 135InstallTrueMethod( IsLCLoop, IsRCLoop and IsCommutative ); 136InstallTrueMethod( IsRightNuclearSquareLoop, IsLeftNuclearSquareLoop and IsCommutative ); 137InstallTrueMethod( IsLeftNuclearSquareLoop, IsRightNuclearSquareLoop and IsCommutative ); 138InstallTrueMethod( IsLeftNuclearSquareLoop, IsNuclearSquareLoop ); 139InstallTrueMethod( IsRightNuclearSquareLoop, IsNuclearSquareLoop ); 140InstallTrueMethod( IsMiddleNuclearSquareLoop, IsNuclearSquareLoop ); 141InstallTrueMethod( IsRightAlternative, IsLeftAlternative and IsCommutative ); 142InstallTrueMethod( IsLeftAlternative, IsRightAlternative and IsCommutative ); 143InstallTrueMethod( IsLeftAlternative, IsAlternative ); 144InstallTrueMethod( IsRightAlternative, IsAlternative ); 145InstallTrueMethod( IsLeftAlternative, IsLeftPowerAlternative ); 146InstallTrueMethod( HasLeftInverseProperty, IsLeftPowerAlternative ); 147InstallTrueMethod( IsPowerAssociative, IsLeftPowerAlternative ); 148InstallTrueMethod( IsRightAlternative, IsRightPowerAlternative ); 149InstallTrueMethod( HasRightInverseProperty, IsRightPowerAlternative ); 150InstallTrueMethod( IsPowerAssociative, IsRightPowerAlternative ); 151InstallTrueMethod( IsLeftPowerAlternative, IsPowerAlternative ); 152InstallTrueMethod( IsRightPowerAlternative, IsPowerAlternative ); 153InstallTrueMethod( IsAssociative, IsLCCLoop and IsCommutative ); 154InstallTrueMethod( IsExtraLoop, IsLCCLoop and IsMoufangLoop ); 155InstallTrueMethod( IsAssociative, IsRCCLoop and IsCommutative ); 156InstallTrueMethod( IsExtraLoop, IsRCCLoop and IsMoufangLoop ); 157InstallTrueMethod( IsLCCLoop, IsCCLoop ); 158InstallTrueMethod( IsRCCLoop, IsCCLoop ); 159InstallTrueMethod( IsExtraLoop, IsCodeLoop ); 160InstallTrueMethod( IsCCLoop, IsCodeLoop ); 161InstallTrueMethod( IsCommutative, IsSteinerLoop ); 162InstallTrueMethod( IsCLoop, IsSteinerLoop ); 163InstallTrueMethod( HasAutomorphicInverseProperty, IsLeftBruckLoop ); 164InstallTrueMethod( IsLeftBolLoop, IsLeftBruckLoop ); 165InstallTrueMethod( IsRightBruckLoop, IsLeftBruckLoop and IsCommutative ); 166InstallTrueMethod( HasAutomorphicInverseProperty, IsRightBruckLoop ); 167InstallTrueMethod( IsRightBolLoop, IsRightBruckLoop ); 168InstallTrueMethod( IsLeftBruckLoop, IsRightBruckLoop and IsCommutative ); 169InstallTrueMethod( IsLeftALoop, IsALoop ); 170InstallTrueMethod( IsRightALoop, IsALoop ); 171InstallTrueMethod( IsMiddleALoop, IsALoop ); 172InstallTrueMethod( IsLeftALoop, IsRightALoop and HasAntiautomorphicInverseProperty ); 173InstallTrueMethod( IsRightALoop, IsLeftALoop and HasAntiautomorphicInverseProperty ); 174InstallTrueMethod( IsFlexible, IsMiddleALoop ); 175InstallTrueMethod( HasAntiautomorphicInverseProperty, IsFlexible and IsLeftALoop ); 176InstallTrueMethod( HasAntiautomorphicInverseProperty, IsFlexible and IsRightALoop ); 177InstallTrueMethod( IsMoufangLoop, IsALoop and IsLeftAlternative ); 178InstallTrueMethod( IsMoufangLoop, IsALoop and IsRightAlternative ); 179InstallTrueMethod( IsMoufangLoop, IsALoop and HasLeftInverseProperty ); 180InstallTrueMethod( IsMoufangLoop, IsALoop and HasRightInverseProperty ); 181InstallTrueMethod( IsMoufangLoop, IsALoop and HasWeakInverseProperty ); 182 183# is implied by 184InstallTrueMethod( IsExtraLoop, IsMoufangLoop and IsLeftNuclearSquareLoop ); 185InstallTrueMethod( IsExtraLoop, IsMoufangLoop and IsMiddleNuclearSquareLoop ); 186InstallTrueMethod( IsExtraLoop, IsMoufangLoop and IsRightNuclearSquareLoop ); 187InstallTrueMethod( IsMoufangLoop, IsLeftBolLoop and IsRightBolLoop ); 188InstallTrueMethod( IsCLoop, IsLCLoop and IsRCLoop ); 189InstallTrueMethod( IsNuclearSquareLoop, IsLeftNuclearSquareLoop 190 and IsRightNuclearSquareLoop and IsMiddleNuclearSquareLoop ); 191InstallTrueMethod( IsFlexible, IsCommutative ); 192InstallTrueMethod( IsAlternative, IsLeftAlternative and IsRightAlternative ); 193InstallTrueMethod( IsCCLoop, IsLCCLoop and IsRCCLoop ); 194InstallTrueMethod( IsOsbornLoop, IsMoufangLoop ); 195InstallTrueMethod( IsOsbornLoop, IsCCLoop ); 196InstallTrueMethod( IsLeftBruckLoop, IsLeftBolLoop and HasAutomorphicInverseProperty ); 197InstallTrueMethod( IsRightBruckLoop, IsRightBolLoop and HasAutomorphicInverseProperty ); 198InstallTrueMethod( IsMiddleALoop, IsCommutative and IsLoop); 199InstallTrueMethod( IsLeftALoop, IsLeftBruckLoop ); 200InstallTrueMethod( IsLeftALoop, IsLCCLoop ); 201InstallTrueMethod( IsRightALoop, IsRightBruckLoop ); 202InstallTrueMethod( IsRightALoop, IsRCCLoop ); 203InstallTrueMethod( IsALoop, IsCommutative and IsMoufangLoop ); 204InstallTrueMethod( IsALoop, IsLeftALoop and IsMiddleALoop ); 205InstallTrueMethod( IsALoop, IsRightALoop and IsMiddleALoop ); 206InstallTrueMethod( IsALoop, IsAssociative and IsLoop); 207 208# implies and is implied by (for inverse properties) 209InstallTrueMethod( HasAntiautomorphicInverseProperty, HasAutomorphicInverseProperty and IsCommutative ); 210InstallTrueMethod( HasAutomorphicInverseProperty, HasAntiautomorphicInverseProperty and IsCommutative ); 211InstallTrueMethod( HasLeftInverseProperty, HasInverseProperty ); 212InstallTrueMethod( HasRightInverseProperty, HasInverseProperty ); 213InstallTrueMethod( HasWeakInverseProperty, HasInverseProperty ); 214InstallTrueMethod( HasAntiautomorphicInverseProperty, HasInverseProperty ); 215InstallTrueMethod( HasTwosidedInverses, HasAntiautomorphicInverseProperty ); 216InstallTrueMethod( HasInverseProperty, HasLeftInverseProperty and IsCommutative ); 217InstallTrueMethod( HasInverseProperty, HasRightInverseProperty and IsCommutative ); 218InstallTrueMethod( HasInverseProperty, HasLeftInverseProperty and HasRightInverseProperty ); 219InstallTrueMethod( HasInverseProperty, HasLeftInverseProperty and HasWeakInverseProperty ); 220InstallTrueMethod( HasInverseProperty, HasRightInverseProperty and HasWeakInverseProperty ); 221InstallTrueMethod( HasInverseProperty, HasLeftInverseProperty and HasAntiautomorphicInverseProperty ); 222InstallTrueMethod( HasInverseProperty, HasRightInverseProperty and HasAntiautomorphicInverseProperty ); 223InstallTrueMethod( HasInverseProperty, HasWeakInverseProperty and HasAntiautomorphicInverseProperty ); 224InstallTrueMethod( HasTwosidedInverses, HasLeftInverseProperty ); 225InstallTrueMethod( HasTwosidedInverses, HasRightInverseProperty ); 226InstallTrueMethod( HasTwosidedInverses, IsFlexible and IsLoop ); 227