GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
############################################################################# ## #W goutergroup.gd HAP Robert F. Morse ## Graham Ellis ## ## ############################################################################# ## ## Declare G-OuterGroups and their homomorphisms to be component ## objects. Also do StandardNCocycles. ## DeclareProperty("IsGOuterGroup", IsComponentObjectRep); DeclareProperty("IsGOuterGroupHomomorphism", IsComponentObjectRep); DeclareProperty("IsStandardNCocycle", IsComponentObjectRep); ############################################################################# ## ## Tester operaton to check if a group homomorphism is mathematically a ## G-outer group homomorphisms. ## DeclareOperation("GOuterHomomorphismTester", [IsGOuterGroup,IsGOuterGroup,IsGroupHomomorphism]); ############################################################################# ## ## Basic attributes of a GOuterGroup ## DeclareAttribute( "ActingGroup" , IsGOuterGroup ); DeclareAttribute( "ActedGroup" , IsGOuterGroup ); DeclareAttribute( "OuterAction" , IsGOuterGroup ); ############################################################################# ## ## Basic attributes of a GOuterGroup homomorphism ## DeclareAttribute( "Source" , IsGOuterGroupHomomorphism ); DeclareAttribute( "Target" , IsGOuterGroupHomomorphism ); DeclareAttribute( "Mapping" , IsGOuterGroupHomomorphism ); ############################################################################# ## ## Basic attributes of a standardNcocycle ## DeclareAttribute( "CoefficientModule" , IsStandardNCocycle ); DeclareAttribute( "Mapping", IsStandardNCocycle); DeclareAttribute( "Arity", IsStandardNCocycle); ############################################################################# ## ## Empty Constructors -- each attribute must be set later using ## a setter function ## ## Example: ## N := GOuterGroup(); ## SetActingGroup(N,G); ## SetActedGroup(N,A); ## SetOuterAction(N,alpha); ## DeclareOperation("GOuterGroup", []); DeclareOperation("GOuterGroupHomomorphism", []); DeclareOperation("StandardNCocycle",[]); ############################################################################# ## ## Constructor for G-outer group from abelian group A (module) and ## group G (assumed to act triviall on A. ## DeclareOperation("TrivialGModuleAsGOuterGroup", [IsGroup,IsGroup]); ############################################################################# ## ## Constructor for G-outer group from group E (Extension) and ## normal subgroup A ## DeclareOperation("GOuterGroup", [IsGroup,IsGroup]); ############################################################################# ## ## Constructor for G-outer group from a group E ## DeclareOperation("GOuterGroup", [IsGroup]); ############################################################################# ## ## Constructor for G-outer group homomorphism from a group homomorphism ## DeclareOperation("GOuterGroup", [IsGroupHomomorphism]); ############################################################################# ## ## Constructor for G-outer group homomorphisms ## DeclareOperation("GOuterGroupHomomorphism", [IsGOuterGroup,IsGOuterGroup,IsGroupHomomorphism]); ############################################################################# ## ## Constructor for a standard N-cocycle ## DeclareOperation("StandardNCocycle", [IsGOuterGroup,IsFunction,IsInt]); ############################################################################# ## ## Direct products of G-outer groups ## DeclareOperation("DirectProductGog", [IsGOuterGroup,IsGOuterGroup]); DeclareOperation("DirectProductGog", [IsList]); ############################################################################# ## ## Operation for Hom_ZG(R,n,A) and Hom_ZG(R,A) where R is a free ZG-module ## resolution, n is an integer and A is an abelian G-outer group. ## DeclareOperation("HomToGModule", [IsHapResolution,IsInt,IsGOuterGroup,IsGOuterGroup,IsGOuterGroup]); DeclareOperation("HomToGModule", [IsHapResolution,IsGOuterGroup]); ##################################################################### ## ## Declaration of the G-cocomplex data type. ## DeclareCategory("IsHapGCocomplex",IsObject); DeclareRepresentation( "IsHapGCocomplexRep", IsComponentObjectRep, ["boundary", "properties"]); HapGCocomplexFamily:=NewFamily( "HapGCocomplexFamily", IsHapGCocomplex, IsHapGCocomplex); HapGCocomplex:=NewType(HapGCocomplexFamily,IsHapGCocomplexRep); ############################################################################# ## ## Operation for returning the cohomology of a G-cochain complex as ## a G-outer group. DeclareOperation("CohomologyModule", [IsHapGCocomplex,IsInt]); ##################################################################### ##################################################################### DeclareCategory("IsHapGComplex",IsObject); DeclareRepresentation( "IsHapGComplexRep", IsComponentObjectRep, ["boundary", "properties"]); HapGComplexFamily:=NewFamily("HapGComplexFamily", IsHapGComplex, IsHapGComplex); HapGComplex:=NewType(HapGComplexFamily,IsHapGComplexRep); InstallMethod( ViewObj, "for HapGComplex", [IsHapGComplex], function(R) Print("G-Complex of length ", EvaluateProperty(R,"length"), "\n"); end); InstallMethod( PrintObj, "for HapGComplex", [IsHapGComplex], function(R) Print("G-Complex of length ", EvaluateProperty(R,"length"), "\n"); end); ##################################################################### ##################################################################### DeclareOperation("GDerivedSubgroup",[IsGOuterGroup]); DeclareOperation("LowerGCentralSeries",[IsGOuterGroup]); DeclareGlobalFunction("AbelianGOuterGroupToCatOneGroup"); DeclareGlobalFunction("ImageOfGOuterGroupHomomorphism"); DeclareGlobalFunction("KernelOfGOuterGroupHomomorphism"); DeclareOperation("CohomologyClass",[IsGOuterGroup,IsStandardNCocycle]);