1############################################################################## 2## 3#W induced.tst GAP4 package `XMod' Chris Wensley 4## 5#Y Copyright (C) 2001-2019, Chris Wensley et al, 6#Y School of Computer Science, Bangor University, U.K. 7 8gap> START_TEST( "XMod package: induced.tst" ); 9gap> saved_infolevel_xmod := InfoLevel( InfoXMod );; 10gap> SetInfoLevel( InfoXMod, 0 );; 11gap> 12gap> c4a := Group( (5,6,7,8) );; 13gap> SetName( c4a, "c4a" ); 14gap> AX4 := XModByAutomorphismGroup( c4a );; 15gap> isoX4 := IsomorphismPerm2DimensionalGroup( AX4 );; 16gap> X4 := Range( isoX4 );; 17gap> Display( X4 ); 18 19Crossed module [c4a->PAut(c4a)] :- 20: Source group c4a has generators: 21 [ (5,6,7,8) ] 22: Range group PAut(c4a) has generators: 23 [ (1,2) ] 24: Boundary homomorphism maps source generators to: 25 [ () ] 26: Action homomorphism maps range generators to automorphisms: 27 (1,2) --> { source gens --> [ (5,8,7,6) ] } 28 This automorphism generates the group of automorphisms. 29 30gap> c2 := Range( X4 );; 31gap> SetName( c2, "c2" ); 32gap> c2dash := Group( (3,4) );; 33gap> dash := GroupHomomorphismByImages( c2, c2dash, [(1,2)], [(3,4)] );; 34gap> X4dash := InducedXMod( X4, dash ); 35i*([c4a->PAut(c4a)]) 36 37gap> c6 := Group( (11,12,13,14,15,16) );; 38gap> SetName( c6, "c6" ); 39gap> iota := GroupHomomorphismByImages( c2, c6, 40> [ (1,2) ], [ (11,14)(12,15)(13,16) ] );; 41gap> indc4c2c6 := InducedXModByCopower( X4, iota, [ ] );; 42gap> StructureDescription( indc4c2c6 ); 43[ "C4 x C4 x C4", "C6" ] 44gap> Size( indc4c2c6 ); 45[ 64, 6 ] 46gap> indsrc := Source( indc4c2c6 );; 47gap> gensrc := GeneratorsOfGroup( indsrc );; 48gap> genc4c4c4 := [ (1,2,3,4), (5,6,7,8), (9,10,11,12) ];; 49gap> c4c4c4 := Group( genc4c4c4 );; 50gap> isosrc := GroupHomomorphismByImages( indsrc, c4c4c4, gensrc, genc4c4c4 );; 51gap> idindrng := IdentityMapping( Range( indc4c2c6 ) );; 52gap> isoind := IsomorphismByIsomorphisms( indc4c2c6, [ isosrc, idindrng ] );; 53gap> indc4c2c6i := Range( isoind );; 54gap> SetName( indc4c2c6i, Name( indc4c2c6 ) ); 55gap> Display( indc4c2c6i ); 56 57Crossed module i*([c4a->PAut(c4a)]) :- 58: Source group has generators: 59 [ ( 1, 2, 3, 4), ( 5, 6, 7, 8), ( 9,10,11,12) ] 60: Range group c6 has generators: 61 [ (11,12,13,14,15,16) ] 62: Boundary homomorphism maps source generators to: 63 [ (), (), () ] 64: Action homomorphism maps range generators to automorphisms: 65 (11,12,13,14,15,16) --> { source gens --> [ ( 9,10,11,12), ( 1, 4, 3, 2), 66 ( 5, 6, 7, 8) ] } 67 This automorphism generates the group of automorphisms. 68 69gap> q8 := Group( (1,2,3,4)(5,8,7,6), (1,5,3,7)(2,6,4,8) );; 70gap> AX8 := XModByAutomorphismGroup( q8 );; 71gap> s4a := Range( AX8 );; 72gap> gens4b := [ (11,12), (12,13), (13,14) ];; 73gap> s4b := Group( gens4b );; 74gap> SetName( s4b, "s4b" ); 75gap> iso8 := IsomorphismGroups( s4a, s4b );; 76gap> s3b := Group( (5,6), (6,7) );; 77gap> SetName( s3b, "s3b" ); 78gap> surj4 := GroupHomomorphismByImages( s4b, s3b, gens4b, 79> [ (5,6), (6,7), (5,6) ] );; 80gap> iota8 := iso8 * surj4;; 81gap> ind8 := InducedXModBySurjection( AX8, iota8 );; 82gap> StructureDescription( ind8 ); 83[ "C2 x C2", "S3" ] 84gap> Size( ind8 ); 85[ 4, 6 ] 86gap> n := 5;; 87gap> c2n := CyclicGroup( 2*n );; 88gap> SetName( c2n, "c2n" ); 89gap> X2n := XModByNormalSubgroup( c2n, c2n );; 90gap> g := GeneratorsOfGroup( c2n )[1];; 91gap> cn := Subgroup( c2n, [g^2] );; 92gap> SetName( cn, "cn" ); 93gap> surj := GroupHomomorphismByImages( c2n, cn, [g], [g^2] );; 94gap> ind1 := InducedXModBySurjection( X2n, surj );; 95gap> ok := IsCentralExtension2DimensionalGroup( ind1 ); 96true 97gap> StructureDescription( ind1 ); 98[ "C10", "C5" ] 99gap> inc := GroupHomomorphismByImages( cn, c2n, [g^2], [g^2] );; 100gap> ind2 := InducedXModByCopower( ind1, inc, [ ] );; 101gap> StructureDescription( ind2 ); 102[ "C10 x C10", "C10" ] 103gap> indsrc2 := Source( ind2 );; 104gap> gensrc2 := GeneratorsOfGroup( indsrc2 );; 105gap> genc10c10 := [ (1,2)(5,6,7,8,9), (3,4)(10,11,12,13,14) ];; 106gap> c10c10 := Group( genc10c10 );; 107gap> isosrc2 := GroupHomomorphismByImages( indsrc2,c10c10,gensrc2,genc10c10 );; 108gap> idindrng2 := IdentityMapping( Range( ind2 ) );; 109gap> isoind2 := IsomorphismByIsomorphisms( ind2, [ isosrc2, idindrng2 ] );; 110gap> ind2i := Range( isoind2 );; 111gap> SetName( ind2i, Name( ind2 ) ); 112gap> Display( ind2i ); 113 114Crossed module i*([c2n/ker->cn]) :- 115: Source group has generators: 116 [ ( 1, 2)( 5, 6, 7, 8, 9), ( 3, 4)(10,11,12,13,14) ] 117: Range group c2n has generators: 118 [ f1, f2 ] 119: Boundary homomorphism maps source generators to: 120 [ f2, f2 ] 121: Action homomorphism maps range generators to automorphisms: 122 f1 --> { source gens --> [ ( 3, 4)(10,11,12,13,14), ( 1, 2)( 5, 6, 7, 8, 9) 123 ] } 124 f2 --> { source gens --> [ ( 1, 2)( 5, 6, 7, 8, 9), ( 3, 4)(10,11,12,13,14) 125 ] } 126 These 2 automorphisms generate the group of automorphisms. 127 128gap> c5 := Group( (1,2,3,4,5) );; 129gap> SetName( c5, "c5" ); 130gap> c4b := Group( (4,5,6,7) );; 131gap> SetName( c4b, "c4b" ); 132gap> bdy54 := GroupHomomorphismByImages( c5, c4b, [ (1,2,3,4,5) ], [ () ] );; 133gap> X54 := XModByTrivialAction( bdy54 );; 134gap> Display( X54 ); 135 136Crossed module [c5->c4b] :- 137: Source group c5 has generators: 138 [ (1,2,3,4,5) ] 139: Range group c4b has generators: 140 [ (4,5,6,7) ] 141: Boundary homomorphism maps source generators to: 142 [ () ] 143 The automorphism group is trivial 144 145gap> c2 := Group( (8,9) );; 146gap> SetName( c2, "c2" ); 147gap> surj := GroupHomomorphismByImages( c4b, c2, [ (4,5,6,7) ], [ (8,9) ] );; 148gap> K := Kernel( surj );; 149gap> SetName( K, "ker(surj)" ); 150gap> D := DisplacementGroup( X54, K, c5 );; 151gap> SetName( D, "D" ); 152gap> Size( D ) = 1; 153true 154gap> ind2 := InducedXMod( X54, surj );; 155gap> Display( ind2 ); 156 157Crossed module i*([c5->c4b]) :- 158: Source group c5/ker has generators: 159 [ (1,5,4,3,2) ] 160: Range group c2 has generators: 161 [ (8,9) ] 162: Boundary homomorphism maps source generators to: 163 [ () ] 164 The automorphism group is trivial 165 166gap> c := (1,2,3,4,5,6);; 167gap> c6 := Group( c );; 168gap> SetName( c6, "c6" ); 169gap> monoc6 := GroupHomomorphismByImages( c2, c6, [(8,9)], [(1,4)(2,5)(3,6)] );; 170gap> indc6 := InducedXMod( ind2, monoc6 );; 171gap> StructureDescription( indc6 ); 172[ "C5 x C5 x C5", "C6" ] 173gap> indsrc6 := Source( indc6 );; 174gap> gensrc6 := GeneratorsOfGroup( indsrc6 );; 175gap> genc5c5c5 := [ (1,2,3,4,5), (6,7,8,9,10), (11,12,13,14,15) ];; 176gap> c5c5c5 := Group( genc5c5c5 );; 177gap> isosrc6 := GroupHomomorphismByImages( indsrc6,c5c5c5,gensrc6,genc5c5c5 );; 178gap> idindrng6 := IdentityMapping( Range( indc6 ) );; 179gap> isoind6 := IsomorphismByIsomorphisms( indc6, [ isosrc6, idindrng6 ] );; 180gap> indc6i := Range( isoind6 );; 181gap> SetName( indc6i, Name( indc6 ) ); 182gap> Display( indc6i ); 183 184Crossed module i*(i*([c5->c4b])) :- 185: Source group has generators: 186 [ ( 1, 2, 3, 4, 5), ( 6, 7, 8, 9,10), (11,12,13,14,15) ] 187: Range group c6 has generators: 188 [ (1,2,3,4,5,6) ] 189: Boundary homomorphism maps source generators to: 190 [ (), (), () ] 191: Action homomorphism maps range generators to automorphisms: 192 (1,2,3,4,5,6) --> { source gens --> [ (11,12,13,14,15), ( 1, 2, 3, 4, 5), 193 ( 6, 7, 8, 9,10) ] } 194 This automorphism generates the group of automorphisms. 195 196gap> s3 := Group( (11,12),(12,13) );; 197gap> SetName( s3, "s3" ); 198gap> monos3 := GroupHomomorphismByImages( c2, s3, [ (8,9) ], [ (11,13) ] );; 199gap> inds3 := InducedXMod( ind2, monos3 );; 200gap> StructureDescription( inds3 ); 201[ "C5 x C5 x C5", "S3" ] 202gap> indsrc3 := Source( inds3 );; 203gap> gensrc3 := GeneratorsOfGroup( indsrc3 );; 204gap> isosrc3 := GroupHomomorphismByImages( indsrc3,c5c5c5,gensrc3,genc5c5c5 );; 205gap> idindrng3 := IdentityMapping( Range( inds3 ) );; 206gap> isoind3 := IsomorphismByIsomorphisms( inds3, [ isosrc3, idindrng3 ] );; 207gap> inds3i := Range( isoind3 );; 208gap> SetName( inds3i, Name( inds3 ) ); 209gap> Display( inds3i ); 210 211Crossed module i*(i*([c5->c4b])) :- 212: Source group has generators: 213 [ ( 1, 2, 3, 4, 5), ( 6, 7, 8, 9,10), (11,12,13,14,15) ] 214: Range group s3 has generators: 215 [ (11,12), (12,13) ] 216: Boundary homomorphism maps source generators to: 217 [ (), (), () ] 218: Action homomorphism maps range generators to automorphisms: 219 (11,12) --> { source gens --> [ ( 6, 7, 8, 9,10), ( 1, 2, 3, 4, 5), 220 (11,12,13,14,15) ] } 221 (12,13) --> { source gens --> [ (11,12,13,14,15), ( 6, 7, 8, 9,10), 222 ( 1, 2, 3, 4, 5) ] } 223 These 2 automorphisms generate the group of automorphisms. 224 225gap> c3 := Subgroup( c6, [ c^2 ] );; 226gap> SetName( c3, "c3" ); 227gap> surj6 := GroupHomomorphismByImages( c6, c3, [c], [c^2] );; 228gap> X6 := XModByCentralExtension( surj6 ); 229[c6->c3] 230gap> a4 := Group( (1,2,3), (2,3,4) );; 231gap> SetName( a4, "a4" ); 232gap> monoa4 := GroupHomomorphismByImages( c3, a4, [c^2], [(2,3,4)] );; 233gap> ind4 := InducedXMod( X6, monoa4, [ ] );; 234gap> Size( ind4 ); 235[ 48, 12 ] 236gap> StructureDescription( ind4 ); 237[ "C2 x SL(2,3)", "A4" ] 238gap> triv := Group( () );; 239gap> SetName( triv, "triv" ); 240gap> zero := GroupHomomorphismByImages( c6, triv, [c], [()] );; 241gap> X0 := XModByTrivialAction( zero );; 242gap> mono0 := GroupHomomorphismByImages( triv, s3, [()], [()] );; 243gap> ind0 := InducedXModFromTrivialRange( X0, mono0 );; 244gap> Display( ind0 ); 245 246Crossed module [c6^6->s3] :- 247: Source group c6^6 has generators: 248 [ (1,2,3,4,5,6), ( 7, 8, 9,10,11,12), (13,14,15,16,17,18), 249 (19,20,21,22,23,24), (25,26,27,28,29,30), (31,32,33,34,35,36) ] 250: Range group s3 has generators: 251 [ (11,12), (12,13) ] 252: Boundary homomorphism maps source generators to: 253 [ (), (), (), (), (), () ] 254: Action homomorphism maps range generators to automorphisms: 255 (11,12) --> { source gens --> [ (13,14,15,16,17,18), (19,20,21,22,23,24), 256 ( 1, 2, 3, 4, 5, 6), ( 7, 8, 9,10,11,12), (31,32,33,34,35,36), 257 (25,26,27,28,29,30) ] } 258 (12,13) --> { source gens --> [ ( 7, 8, 9,10,11,12), ( 1, 2, 3, 4, 5, 6), 259 (25,26,27,28,29,30), (31,32,33,34,35,36), (13,14,15,16,17,18), 260 (19,20,21,22,23,24) ] } 261 These 2 automorphisms generate the group of automorphisms. 262 263gap> ## this example used to be in tst/gp2ind.tst 264gap> b1 := (11,12,13,14,15,16,17,18);; 265gap> b2 := (12,18)(13,17)(14,16);; 266gap> d16 := Group( b1, b2 );; 267gap> SetName( d16, "d16" ); 268gap> d8 := Subgroup( d16, [ b1^2, b2 ] ); SetName( d8, "d8" ); 269Group([ (11,13,15,17)(12,14,16,18), (12,18)(13,17)(14,16) ]) 270gap> c4c := Subgroup( d8, [ b1^2 ] ); SetName( c4c, "c4c" ); 271Group([ (11,13,15,17)(12,14,16,18) ]) 272gap> Y16 := XModByNormalSubgroup( d16, d8 ); 273[d8->d16] 274gap> Y8 := SubXMod( Y16, c4c, d8 ); 275[c4c->d8] 276gap> inc8 := InclusionMorphism2DimensionalDomains( Y16, Y8 ); 277[[c4c->d8] => [d8->d16]] 278gap> incd8 := RangeHom( inc8 );; 279gap> indY8 := InducedXMod( Y8, incd8 ); 280i*([c4c->d8]) 281gap> StructureDescription( indY8 ); 282[ "C4 x C4", "D16" ] 283gap> morY8 := MorphismOfInducedXMod( indY8 ); 284[[c4c->d8] => i*([c4c->d8])] 285gap> s4 := Group( (1,2), (2,3), (3,4) );; 286gap> s3c := Subgroup( s4, [ (2,3), (3,4) ] );; 287gap> SetName( s3c, "s3c" ); 288gap> indXs3c := InducedXMod( s4, s3c, s3c ); 289i*([s3c->s3c]) 290gap> StructureDescription( indXs3c ); 291[ "GL(2,3)", "S4" ] 292 293gap> SetInfoLevel( InfoXMod, saved_infolevel_xmod );; 294gap> STOP_TEST( "induced.tst", 10000 ); 295 296############################################################################## 297## 298#E induced.tst . . . . . . . . . . . . . . . . . . . . . . . . . . ends here 299