1############################################################################# 2## 3#W isoclinic.gd GAP4 package `XMod' Alper Odabas 4#W & Enver Uslu 5#Y Copyright (C) 2001-2019, Chris Wensley et al 6 7############################################################################# 8## 9#A FixedPointSubgroupXMod . . . . . . . . {s in S | s^r = s for all r in R} 10#A StabilizerSubgroupXMod . . . . . . . . {r in R | s^r = s for all s in S} 11## 12DeclareOperation( "FixedPointSubgroupXMod", [ IsPreXMod, IsGroup, IsGroup ] ); 13DeclareOperation( "StabilizerSubgroupXMod", [ IsPreXMod, IsGroup, IsGroup ] ); 14 15############################################################################# 16## 17#O Displacement( act, r, s ) 18#O DisplacementGroup( XM, R, S ) 19#A DisplacementSubgroup( XM ) 20#O CrossActionSubgroup( XM ) 21## 22DeclareOperation( "Displacement", [ IsGroupHomomorphism, IsObject, IsObject ] ); 23DeclareOperation( "DisplacementGroup", [ IsXMod, IsGroup, IsGroup ] ); 24DeclareAttribute( "DisplacementSubgroup", IsXMod ); 25DeclareOperation( "CrossActionSubgroup", [ IsXMod, IsXMod, IsXMod ] ); 26 27############################################################################# 28## 29#A DerivedSubXMod . . . . . . . . . the commutator of the crossed module 30## 31DeclareAttribute( "DerivedSubXMod", IsXMod ); 32 33############################################################################# 34## 35#O IntersectionSubXMods . . . . .intersection of subcrossed modules SH and RK 36## 37DeclareOperation( "IntersectionSubXMods", [ IsXMod, IsXMod, IsXMod ] ); 38 39############################################################################# 40## 41#O FactorPreXMod . . . . . . . . . . . . . . the quotient precrossed module 42#O NaturalMorphismByNormalSubPreXMod . . . . . the quotient prexmod morphism 43## 44DeclareOperation( "FactorPreXMod", [ IsPreXMod, IsPreXMod ] ); 45DeclareOperation( "NaturalMorphismByNormalSubPreXMod", 46 [ IsPreXMod, IsPreXMod ] ); 47DeclareAttribute( "ProjectionOfFactorPreXMod", IsPreXMod ); 48 49############################################################################# 50## 51#O CommutatorSubXMod . . . . . . . commutator subxmod of two normal subxmods 52## 53DeclareOperation( "CommutatorSubXMod", [ IsXMod, IsXMod, IsXMod ] ); 54 55############################################################################# 56## 57#O CentreXMod . . . . . . . . . . . . . . . the center of a crossed module 58## 59DeclareAttribute( "CentreXMod", IsXMod ); 60DeclareSynonym( "CenterXMod", CentreXMod ); 61 62############################################################################# 63## 64#O IsAbelian2DimensionalGroup 65#O IsAspherical2DimensionalGroup 66#O IsSimplyConnected2DimensionalGroup 67#O IsFaithful2DimensionalGroup 68## 69DeclareProperty( "IsAbelian2DimensionalGroup", Is2DimensionalGroup ); 70DeclareProperty( "IsAspherical2DimensionalGroup", Is2DimensionalGroup ); 71DeclareProperty( "IsSimplyConnected2DimensionalGroup", Is2DimensionalGroup ); 72DeclareProperty( "IsFaithful2DimensionalGroup", Is2DimensionalGroup ); 73 74############################################################################# 75## 76#P IsNilpotent2DimensionalGroup . . check an xmod or cat1-group is nilpotent 77#A NilpotencyClassOf2DimensionalGroup . nilpotency degree of xmod/cat1-group 78## 79DeclareProperty( "IsNilpotent2DimensionalGroup", Is2DimensionalGroup ); 80DeclareAttribute( "NilpotencyClassOf2DimensionalGroup", Is2DimensionalGroup ); 81 82############################################################################# 83## 84#O IsomorphismXMods . . . . . check that two crossed modules are isomorphic 85## 86DeclareOperation( "IsomorphismXMods", 87 [ Is2DimensionalGroup, Is2DimensionalGroup ] ); 88 89############################################################################# 90## 91#F AllXMods 92#O AllXModsWithGroups . . . . . . . . . all xmods with given source and range 93## 94DeclareGlobalFunction( "AllXMods" ); 95DeclareOperation( "AllXModsWithGroups", [ IsGroup, IsGroup ] ); 96DeclareOperation( "AllXModsWithGroups0", [ IsGroup, IsGroup ] ); 97DeclareOperation( "AllXModsWithGroups1", [ IsGroup, IsGroup ] ); 98DeclareOperation( "AllXModsWithGroups2", [ IsGroup, IsGroup ] ); 99DeclareOperation( "AllXModsWithGroups3", [ IsGroup, IsGroup ] ); 100 101 102############################################################################# 103##### FUNCTIONS FOR ISOCLINISM OF GROUPS ##### 104############################################################################# 105 106############################################################################# 107## 108#P IsStemDomain . . check that the centre is a subgroup of the derived domain 109#O AllStemGroupFamilies . . . . . all IdGroups of stem groups of chosen order 110## 111DeclareProperty( "IsStemDomain", IsGroup ); 112DeclareProperty( "IsStemDomain", IsXMod ); 113DeclareOperation( "AllStemGroupIds", [ IsPosInt ] ); 114DeclareOperation( "AllStemGroupFamilies", [ IsPosInt ] ); 115DeclareAttribute( "CentralQuotient", IsDomain ); 116 117############################################################################# 118## 119#A IsoclinicStemDomain . . . . . . . . . . find a stem group for the group G 120#O Isoclinism . . . find a homomorphism between the stem groups of two groups 121#O AreIsoclinicDomains . . . does an isoclinism exist between two (2d-)groups 122## 123DeclareAttribute( "IsoclinicStemDomain", IsGroup ); 124DeclareOperation( "Isoclinism", [ IsGroup, IsGroup ] ); 125DeclareOperation( "Isoclinism", [ IsXMod, IsXMod ] ); 126DeclareOperation( "AreIsoclinicDomains", [ IsDomain, IsDomain ] ); 127 128 129############################################################################# 130##### FUNCTIONS FOR ISOCLINISM OF CROSSED MODULES ##### 131############################################################################# 132 133############################################################################# 134## 135#O IsoclinicXModFamily . . . . . . all xmods in list isoclinic to given xmod 136## 137DeclareOperation( "IsoclinicXModFamily", [ Is2DimensionalGroup, IsList ] ); 138 139############################################################################# 140## 141#O IsomorphicXModFamily 142## . . . . . . . all xmods in the list which are isomorphic to the given xmod 143## 144DeclareOperation( "IsomorphicXModFamily", [ Is2DimensionalGroup, IsList ] ); 145 146############################################################################# 147## 148#O AllXModsUpToIsomorphism . . . . . . all crossed modules up to isomorphism 149## 150DeclareOperation( "AllXModsUpToIsomorphism", [ IsList ] ); 151 152############################################################################# 153## 154#A IsoclinicMiddleLength . . the middle length of a group or crossed module 155#A IsoclinicRank . . . . . . . . . . the rank of a group or crossed module 156## 157DeclareAttribute( "IsoclinicMiddleLength", IsGroup ); 158DeclareAttribute( "IsoclinicMiddleLength", Is2DimensionalGroup ); 159DeclareAttribute( "IsoclinicRank", IsGroup ); 160DeclareAttribute( "IsoclinicRank", Is2DimensionalGroup ); 161 162############################################################################# 163## 164#O TableRowXMod . . . . table row for isoclinism families of crossed modules 165## 166DeclareOperation( "TableRowXMod", [ Is2DimensionalGroup, IsList ] ); 167