GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#############################################################################
##
#W gp3objmap.tst XMOD test file Chris Wensley
##
#Y Copyright (C) 2001-2017, Chris Wensley et al,
#Y School of Computer Science, Bangor University, U.K.
##
gap> START_TEST( "XMod package: gp3objmap.tst" );
gap> saved_infolevel_xmod := InfoLevel( InfoXMod );;
gap> SetInfoLevel( InfoXMod, 0 );;
gap> saved_infolevel_groupoids := InfoLevel( InfoGroupoids );;
gap> SetInfoLevel( InfoGroupoids, 0 );;
## make independent of isoclinic.tst
gap> d24 := DihedralGroup(24);;
gap> SetName( d24, "d24" );
gap> X24 := XModByAutomorphismGroup( d24 );;
gap> nsx := NormalSubXMods( X24 );;
gap> ids := List( nsx, n -> IdGroup(n) );;
## Chapter 8
## Section 8.2.1
gap> d20 := DihedralGroup( IsPermGroup, 20 );;
gap> gend20 := GeneratorsOfGroup( d20 );
[ (1,2,3,4,5,6,7,8,9,10), (2,10)(3,9)(4,8)(5,7) ]
gap> p1 := gend20[1];; p2 := gend20[2];; p12 := p1*p2;
(1,10)(2,9)(3,8)(4,7)(5,6)
gap> d10a := Subgroup( d20, [ p1^2, p2 ] );;
gap> d10b := Subgroup( d20, [ p1^2, p12 ] );;
gap> c5d := Subgroup( d20, [ p1^2 ] );;
gap> SetName( d20, "d20" ); SetName( d10a, "d10a" );
gap> SetName( d10b, "d10b" ); SetName( c5d, "c5d" );
gap> XSconj := CrossedSquareByNormalSubgroups( d20, d10b, d10a, c5d );
[ c5d -> d10b ]
[ | | ]
[ d10a -> d20 ]
gap> Name( XSconj );
"[c5d->d10b,d10a->d20]"
gap> XStrans := Transpose3DimensionalGroup( XSconj );
[ c5d -> d10a ]
[ | | ]
[ d10b -> d20 ]
gap> X20 := XModByNormalSubgroup( d20, d10a );
[d10a->d20]
gap> XSact := ActorCrossedSquare( X20 );
crossed square with:
up = Whitehead[d10a->d20]
left = [d10a->d20]
down = Norrie[d10a->d20]
right = Actor[d10a->d20]
## Section 8.2.2
gap> pos7 := Position( ids, [ [12,2], [24,5] ] );;
gap> Xn7 := nsx[pos7];;
gap> IdGroup( Xn7 );
[ [ 12, 2 ], [ 24, 5 ] ]
gap> IdGroup( CentreXMod(Xn7) );
[ [ 4, 1 ], [ 4, 1 ] ]
gap> CQXn7 := CentralQuotient( Xn7 );;
gap> IdGroup( CQXn7 );
[ [ [ 12, 2 ], [ 3, 1 ] ], [ [ 24, 5 ], [ 6, 1 ] ] ]
## Section 8.2.4
gap> Up2DimensionalGroup( XSconj );
[c5d->d10b]
gap> Right2DimensionalGroup( XSact );
Actor[d10a->d20]
gap> xpconj := CrossedPairing( XSconj );;
gap> ImageElmCrossedPairing( xpconj, [ p2, p12 ] );
(1,9,7,5,3)(2,10,8,6,4)
gap> diag := DiagonalAction( XSact );;
## comment out the output as dev gives different results to 4r8
## [ (1,3,5,2,4)(6,10,14,8,12)(7,11,15,9,13), (1,2,5,4)(6,8,14,12)(7,11,13,9)
## ] -> [ ^(1,3,5,7,9)(2,4,6,8,10), ^(1,2,5,4)(3,8)(6,7,10,9) ]
## Section 8.3.2
gap> ad20 := GroupHomomorphismByImages( d20, d20, [p1,p2], [p1,p2^p1] );;
gap> ad10a := GroupHomomorphismByImages( d10a, d10a, [p1^2,p2], [p1^2,p2^p1] );;
gap> ad10b := GroupHomomorphismByImages( d10b, d10b, [p1^2,p12], [p1^2,p12^p1] );;
gap> idc5d := IdentityMapping( c5d );;
gap> upconj := Up2DimensionalGroup( XSconj );;
gap> leftconj := Left2DimensionalGroup( XSconj );;
gap> downconj := Down2DimensionalGroup( XSconj );;
gap> rightconj := Right2DimensionalGroup( XSconj );;
gap> up := XModMorphismByHoms( upconj, upconj, idc5d, ad10b );
[[c5d->d10b] => [c5d->d10b]]
gap> left := XModMorphismByHoms( leftconj, leftconj, idc5d, ad10a );
[[c5d->d10a] => [c5d->d10a]]
gap> down := XModMorphismByHoms( downconj, downconj, ad10a, ad20 );
[[d10a->d20] => [d10a->d20]]
gap> right := XModMorphismByHoms( rightconj, rightconj, ad10b, ad20 );
[[d10b->d20] => [d10b->d20]]
gap> autoconj := CrossedSquareMorphism( XSconj, XSconj, [up,left,right,down] );;
gap> ord := Order( autoconj );;
gap> Display( autoconj );
Morphism of crossed squares :-
: Source = [c5d->d10b,d10a->d20]
: Range = [c5d->d10b,d10a->d20]
: order = 5
: up-left: [ [ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10) ],
[ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10) ] ]
: up-right:
[ [ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10), ( 1,10)( 2, 9)( 3, 8)( 4, 7)( 5, 6) ],
[ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10), ( 1, 2)( 3,10)( 4, 9)( 5, 8)( 6, 7) ] ]
: down-left:
[ [ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10), ( 2,10)( 3, 9)( 4, 8)( 5, 7) ],
[ ( 1, 3, 5, 7, 9)( 2, 4, 6, 8,10), ( 1, 3)( 4,10)( 5, 9)( 6, 8) ] ]
: down-right:
[ [ ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10), ( 2,10)( 3, 9)( 4, 8)( 5, 7) ],
[ ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10), ( 1, 3)( 4,10)( 5, 9)( 6, 8) ] ]
gap> IsAutomorphismHigherDimensionalDomain( autoconj );
true
gap> KnownPropertiesOfObject( autoconj );
[ "CanEasilyCompareElements", "CanEasilySortElements", "IsTotal",
"IsSingleValued", "IsInjective", "IsSurjective",
"IsPreCrossedSquareMorphism", "IsCrossedSquareMorphism",
"IsEndomorphismHigherDimensionalDomain",
"IsAutomorphismHigherDimensionalDomain" ]
# Section 8.4.2
gap> CC6 := Cat2Group( Cat1Group(6,2,2), Cat1Group(6,2,3) );
generating (pre-)cat1-groups:
1 : [C6=>Group( [ f1 ] )]
2 : [C6=>Group( [ f2 ] )]
gap> IsCat2Group( CC6 );
true
# Section 8.4.2
gap> xsCC6 := CrossedSquareOfCat2Group( CC6 );
crossed square with:
up = [Group( () )->Group( [ (1,2) ] )]
left = [Group( () )->Group( [ (), (3,4,5) ] )]
down = [Group( [ (), (3,4,5) ] ) -> Group( () )]
right = [Group( [ (1,2) ] ) -> Group( () )]
gap> Cat2GroupOfCrossedSquare( XSact );
Warning: these conversion functions are still under development
fail
gap> SetInfoLevel( InfoXMod, saved_infolevel_xmod );;
gap> SetInfoLevel( InfoGroupoids, saved_infolevel_groupoids );;
gap> STOP_TEST( "gp3objmap.tst", 10000 );
#############################################################################
##
#E gp3objmap.tst . . . . . . . . . . . . . . . . . . . . . . . . . ends here