GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
############################################################################## ## ## gp3obj.gd GAP4 package `XMod' Chris Wensley ## Alper Odabas #Y Copyright (C) 2001-2017, Chris Wensley et al, #Y School of Computer Science, Bangor University, U.K. ## ## This file declares generic methods for (pre-)crossed squares and ## (pre-)cat2-groups. ############################################################################# ## #R IsPreCrossedSquareObj ( <obj> ) ## A pre-crossed square is a square of pre-crossed modules ## DeclareRepresentation( "IsPreCrossedSquareObj", IsHigherDimensionalGroup and IsAttributeStoringRep, [ "up2d", "down2d", "left2d", "right2d", "action", "pairing" ] ); ############################################################################# ## #P IsPerm3DimensionalGroup( <obj> ) #P IsFp3DimensionalGroup( <obj> ) #P IsPc3DimensionalGroup( <obj> ) ## DeclareProperty( "IsPerm3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsFp3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsPc3DimensionalGroup", IsHigherDimensionalGroup ); ############################################################################# ## #T PreCrossedSquareObjType . . . . . . . . . . . . type for crossed squares #T PermPreCrossedSquareObjType . . . . . . . type for perm crossed squares #T PcPreCrossedSquareObjType . . . . . . . . . . type for pc crossed squares ## BindGlobal( "PreCrossedSquareObjType", NewType( FamilyHigherDimensionalGroup, IsPreCrossedSquareObj ) ); BindGlobal( "PermPreCrossedSquareObjType", NewType( FamilyHigherDimensionalGroup, IsPreCrossedSquareObj and IsPerm3DimensionalGroup ) ); BindGlobal( "PcPreCrossedSquareObjType", NewType( FamilyHigherDimensionalGroup, IsPreCrossedSquareObj and IsPc3DimensionalGroup ) ); ############################################################################# ## #P IsPreCrossedSquare( <PM> } #P IsPermPreCrossedSquare( <PM> ) #P IsFpPreCrossedSquare( <PM> ) #P IsPcPreCrossedSquare( <PM> } ## DeclareProperty( "IsPreCrossedSquare", IsHigherDimensionalGroup ); DeclareSynonym( "IsPermPreCrossedSquare", IsPreCrossedSquare and IsPerm3DimensionalGroup ); DeclareSynonym( "IsFpPreCrossedSquare", IsPreCrossedSquare and IsFp3DimensionalGroup ); DeclareSynonym( "IsPcPreCrossedSquare", IsPreCrossedSquare and IsPc3DimensionalGroup ); ############################################################################# ## #P IsCrossedSquare( <PM> ) #P IsPermCrossedSquare( <XS> } #P IsFpCrossedSquare( <XS> ) #P IsPcCrossedSquare( <XS> ) ## DeclareProperty( "IsCrossedSquare", IsHigherDimensionalGroup ); InstallTrueMethod( IsPreCrossedSquare, IsCrossedSquare ); DeclareSynonym( "IsPermCrossedSquare", IsCrossedSquare and IsPerm3DimensionalGroup ); DeclareSynonym( "IsFpCrossedSquare", IsCrossedSquare and IsFp3DimensionalGroup ); DeclareSynonym( "IsPcCrossedSquare", IsCrossedSquare and IsPc3DimensionalGroup ); ############################################################################# ## #P IsCrossedPairing( <map> ) #R IsCrossedPairingObj( <obj> ) #O CrossedPairingObj( <src>, <rng>, <map> ) #V CrossedPairingFamily #T CrossedPairingObjType #A CrossedPairingMap( <xp> ) #O ImageElmCrossedPairing( <xp>, <elm> ) ## DeclareProperty( "IsCrossedPairing", IsGeneralMapping ); DeclareRepresentation( "IsCrossedPairingObj", IsCrossedPairing and IsAttributeStoringRep, [ "Source", "Range", "CrossedPairingMap" ] ); BindGlobal( "CrossedPairingFamily", NewFamily( "CrossedPairingFamily", IsCrossedPairing, CanEasilySortElements, CanEasilySortElements ) ); BindGlobal( "CrossedPairingType", NewType( CrossedPairingFamily, IsCrossedPairingObj ) ); DeclareOperation( "CrossedPairingObj", [ IsList, IsGroup, IsGeneralMapping ] ); DeclareAttribute( "CrossedPairingMap", IsCrossedPairing ); DeclareOperation( "ImageElmCrossedPairing", [ IsCrossedPairing, IsObject ] ); ############################################################################# ## #O CrossedPairingByNormalSubgroups #O CrossedPairingByDerivations ## DeclareOperation( "CrossedPairingByNormalSubgroups", [ IsGroup, IsGroup, IsGroup ] ); DeclareOperation( "CrossedPairingByDerivations", [ IsXMod ] ); ############################################################################# ## #P IsPreCat2Group( <PCG> ) #P IsPermPreCat2Group( <PCG> ) #P IsFpPreCat2Group( <PCG> ) #P IsPcPreCat2Group( <PCG> ) ## DeclareProperty( "IsPreCat2Group", IsHigherDimensionalGroup ); DeclareSynonym( "IsPermPreCat2Group", IsPreCat2Group and IsPerm3DimensionalGroup ); DeclareSynonym( "IsFpPreCat2Group", IsPreCat2Group and IsFp3DimensionalGroup ); DeclareSynonym( "IsPcPreCat2Group", IsPreCat2Group and IsPc3DimensionalGroup ); ############################################################################# ## #P IsCat2Group( <C1G> ) #P IsPermCat2Group( <CG> ) #P IsFpCat2Group( <CG> ) #P IsPcCat2Group( <CG> ) ## DeclareProperty( "IsCat2Group", IsHigherDimensionalGroup ); InstallTrueMethod( IsPreCat2Group, IsCat2Group ); DeclareSynonym( "IsPermCat2Group", IsCat2Group and IsPerm3DimensionalGroup ); DeclareSynonym( "IsFpCat2Group", IsCat2Group and IsFp3DimensionalGroup ); DeclareSynonym( "IsPcCat2Group", IsCat2Group and IsPc3DimensionalGroup ); ############################################################################# ## #O PreCrossedSquareObj( <bdy>, <act> ) #O PreCat2Group0bj ( <arg> ) #A Up2DimensionalGroup( <PS> ) #A Down2DimensionalGroup ( <PS> ) #A Left2DimensionalGroup( <PS> ) #A Right2DimensionalGroup( <PS> ) #A DiagonalAction( <PS> ) #A CrossedPairing( <PS> ) ## DeclareOperation( "PreCrossedSquareObj", [ IsPreXMod, IsPreXMod, IsPreXMod, IsPreXMod, IsObject, IsObject] ); DeclareAttribute( "Up2DimensionalGroup", IsHigherDimensionalGroup ); DeclareAttribute( "Left2DimensionalGroup", IsHigherDimensionalGroup ); DeclareAttribute( "Down2DimensionalGroup", IsHigherDimensionalGroup ); DeclareAttribute( "Right2DimensionalGroup", IsHigherDimensionalGroup ); DeclareAttribute( "DiagonalAction", IsHigherDimensionalGroup ); DeclareAttribute( "CrossedPairing", IsHigherDimensionalGroup ); DeclareAttribute( "LeftRightMorphism", IsHigherDimensionalGroup ); DeclareAttribute( "UpDownMorphism", IsHigherDimensionalGroup ); ############################################################################# ## #F CrossedSquare( <args> ) #0 AsCrossedSquare( <arg> ) #0 CrossedSquareByXMods( <up>, <left>, <down>, <right>, <action>, <pairing> ) #0 CrossedSquareByNormalSubgroups( <P>, <N>, <M>, <L> ) #A ActorCrossedSquare( <xmod> ) #A Transpose3DimensionalGroup( <CrossedSquare> ) ## DeclareGlobalFunction( "CrossedSquare" ); DeclareOperation( "CrossedSquareByXMods", [ IsXMod, IsXMod, IsXMod, IsXMod, IsGroupHomomorphism, IsCrossedPairing ] ); DeclareOperation( "CrossedSquareByNormalSubgroups", [ IsGroup, IsGroup, IsGroup, IsGroup ] ); DeclareAttribute( "ActorCrossedSquare", IsXMod ); DeclareAttribute( "Transpose3DimensionalGroup", IsHigherDimensionalGroup ); ############################################################################# ## #P IsTrivialAction3DimensionalGroup( <obj> ) #P IsNormalSubgroup3DimensionalGroup( <obj> ) #P IsAutomorphismGroup3DimensionalGroup( <XS> ) #P IsAbelianSquare3DimensionalGroup( <obj> ) #P IsFreeCrossedSquare( <XS> ) ## DeclareProperty( "IsTrivialAction3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsNormalSubgroup3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsCentralExtension3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsAutomorphismGroup3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsAbelianSquare3DimensionalGroup", IsHigherDimensionalGroup ); DeclareProperty( "IsFreeCrossedSquare", IsPreCrossedSquareObj ); ############################################################################# ## #0 IsSubPreCrossedSquare( <obj> ) #0 IsSubCrossedSquare( <obj> ) #0 IsSubPreCat2Group( <obj> ) #0 IsSubCat2Group( <obj> ) ## DeclareOperation( "IsSubPreCrossedSquare", [ IsHigherDimensionalGroup, IsHigherDimensionalGroup ] ); DeclareOperation( "IsSubCrossedSquare", [ IsHigherDimensionalGroup, IsHigherDimensionalGroup ] ); DeclareOperation( "IsSubPreCat2Group", [ IsHigherDimensionalGroup, IsHigherDimensionalGroup ] ); DeclareOperation( "IsSubCat2Group", [ IsHigherDimensionalGroup, IsHigherDimensionalGroup ] ); ############################################################################## ## #0 SubPreCrossedSquare( <PM, Ssrc, Srng> ) #0 SubCrossedSquare( <PM, Ssrc, Srng> ) #0 SubPreCat2Group( <C>, <H> ) ## DeclareOperation( "SubPreCrossedSquare", [ IsPreCrossedSquare, IsGroup, IsGroup ] ); DeclareOperation( "SubCrossedSquare", [ IsCrossedSquare, IsGroup, IsGroup ] ); DeclareOperation( "SubPreCat2Group", [ IsPreCat2Group, IsGroup, IsGroup ] ); DeclareOperation( "SubCat2Group", [ IsCat2Group, IsGroup, IsGroup ] ); ############################################################################# ## #0 TrivialSubHigherDimensionalGroup( <obj> ) #A TrivialSubPreCrossedSquare( <obj> ) #A TrivialSubCrossedSquare( <obj> ) #A TrivialSubPreCat2Group( <obj> ) #A TrivialSubCat2Group( <obj> ) #P IsIdentityCat2Group( <C1G> ) ## DeclareOperation( "TrivialSubHigherDimensionalGroup", [ IsHigherDimensionalGroup ] ); DeclareAttribute( "TrivialSubPreCrossedSquare", IsPreCrossedSquare ); DeclareAttribute( "TrivialSubCrossedSquare", IsCrossedSquare ); DeclareAttribute( "TrivialSubPreCat2Group", IsPreCat2Group ); DeclareAttribute( "TrivialSubCat2Group", IsCat2Group ); DeclareProperty( "IsIdentityCat2Group", IsCat2Group ); ############################################################################# ## #A ElementsRelationsForSemidirectProduct( <G> ) ## DeclareAttribute( "ElementsRelationsForSemidirectProduct", IsGroup ); ############################################################################# ## #F PreCat2Group( <arg> ) #0 PreCat2GroupByPreCat1Groups( <first>, <second> ) ## DeclareGlobalFunction( "PreCat2Group" ); DeclareOperation( "PreCat2GroupByPreCat1Groups", [ IsPreCat1Group, IsPreCat1Group ] ); ############################################################################# ## #F Cat2Group( <arg> } ## DeclareGlobalFunction( "Cat2Group" ); ############################################################################# ## #O ConjugationActionForCrossedSquare( <G>, <N> ) #A PreCrossedSquareOfPreCat2Group( <PCG> ) #A PreCat2GroupOfPreCrossedSquare( <PS> } #A CrossedSquareOfCat2Group( <C1G> } #A Cat2GroupOfCrossedSquare( <XS> ) ## DeclareOperation( "ConjugationActionForCrossedSquare", [ IsGroup, IsGroup ] ); DeclareAttribute( "PreCrossedSquareOfPreCat2Group", IsPreCat2Group ); DeclareAttribute( "PreCat2GroupOfPreCrossedSquare", IsPreCrossedSquare ); DeclareAttribute( "CrossedSquareOfCat2Group", IsCat2Group ); DeclareAttribute( "Cat2GroupOfCrossedSquare", IsCrossedSquare ); ############################################################################# ## #A DirectProductHigherDimensionalInfo( <D> } ## DeclareAttribute( "DirectProductHigherDimensionalInfo", IsHigherDimensionalDomain, "mutable" ); ############################################################################# ## #A NormalSubCrossedSquares( <XS> } #A NormalSubXCat2Groups( <C1G> } ## DeclareAttribute( "NormalSubCrossedSquares", IsCrossedSquare ); DeclareAttribute( "NormalSubCat2Groups", IsCat2Group ); ############################################################################# ## #E gp3obj.gd . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here