gap> # Groups gap> g1:= Group( (1,2), (1,2,3,4) ); Group([ (1,2), (1,2,3,4) ]) gap> g2:= Group( [ [ 0, 1 ], [ -1, 0 ] ] ); Group([ [ [ 0, 1 ], [ -1, 0 ] ] ]) gap> Size( g2 ); 4 gap> g3:= FreeGroup( 2 ); gap> gens:= GeneratorsOfGroup( g3 ); [ f1, f2 ] gap> x:= gens[1]; f1 gap> y:= gens[2]; f2 gap> x*y; f1*f2 gap> y^20 * x^10; f2^20*f1^10 gap> Comm( x, y ); f1^-1*f2^-1*f1*f2 gap> SylowSubgroup( g1, 2 ); Group([ (3,4), (1,2)(3,4), (1,4)(2,3) ]) gap> der:= DerivedSubgroup( g1 ); Group([ (1,2,3), (2,3,4) ]) gap> f1:= CommutatorFactorGroup( g1 ); Group([ f1 ]) gap> f2:= g1 / der; Group([ f1 ]) gap> f1 = f2; true gap> # Group Actions gap> Read( "s4action.g" ); Symmetries of a Cube: --------------------- 2 ___________ 1 _ y /| /| /| / | / | / 3 /__|_______/ 4| -/----> x | | | | |8 |_______|__| 7 | / | / |/ |/ 5 /__________/ 6 g: group generated by rotations x, y (around x- and y-axes) gap> x; (1,4,6,7)(2,3,5,8) gap> y; (1,7,8,2)(3,4,6,5) gap> Size( g ); 24 gap> 1^x; 4 gap> OnPoints( 1, x ); 4 gap> OnTuples( [ 1, 2 ], x ); [ 4, 3 ] gap> OnSets( [ 1, 2 ], x ); [ 3, 4 ] gap> OnSetsSets( [ [ 1, 2 ], [ 1, 7 ] ], x ); [ [ 1, 4 ], [ 3, 4 ] ] gap> edges:= Orbit( g, [ 1, 2 ], OnSets ); [ [ 1, 2 ], [ 5, 6 ], [ 3, 4 ], [ 7, 8 ], [ 1, 4 ], [ 5, 8 ], [ 6, 7 ], [ 2, 3 ], [ 1, 7 ], [ 3, 5 ], [ 2, 8 ], [ 4, 6 ] ] gap> act:= Action( g, edges, OnSets ); Group([ (1,3,2,4)(5,12,7,9)(6,11,8,10), (1,9,4,11)(2,10,3,12)(5,7,6,8) ]) gap> Size( act ); 24 gap> c:= RightCoset( Group( (1,2) ), (1,2,3) ); RightCoset(Group( [ (1,2) ] ),(1,2,3)) gap> OnRight( c, (1,3,2) ); RightCoset(Group( [ (1,2) ] ),()) gap> Permutation( (2,3,4), [ 2 .. 4 ] ); (1,2,3) gap> g:= SymmetricGroup( 4 ); Sym( [ 1 .. 4 ] ) gap> orb1:= Orbit( g, [ 1, 2, 3 ], OnTuples ); [ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 2, 1, 3 ], [ 3, 4, 1 ], [ 1, 3, 4 ], [ 3, 2, 4 ], [ 4, 1, 2 ], [ 3, 4, 2 ], [ 2, 4, 1 ], [ 4, 3, 1 ], [ 3, 1, 4 ], [ 4, 2, 1 ], [ 4, 1, 3 ], [ 3, 1, 2 ], [ 1, 4, 2 ], [ 4, 3, 2 ], [ 1, 3, 2 ], [ 1, 2, 4 ], [ 4, 2, 3 ], [ 3, 2, 1 ], [ 1, 4, 3 ], [ 2, 4, 3 ], [ 2, 3, 1 ], [ 2, 1, 4 ] ] gap> Length( orb1 ); 24 gap> orb2:= Orbit( g, [ 1, 2, 3 ], OnSets ); [ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 1, 3, 4 ], [ 1, 2, 4 ] ] gap> Length( orb2 ); 4 gap> Stabilizer( g, [ 1, 2, 3 ], OnSets ); Group([ (2,3), (1,2,3) ]) gap> Action( g, orb2, OnSets ); Group([ (1,2,3,4), (2,3) ]) gap> invol:= Elements( ConjugacyClass( g, (1,2) ) ); [ (3,4), (2,3), (2,4), (1,2), (1,3), (1,4) ] gap> Length( invol ); 6 gap> Action( g, invol ); Group([ (1,6,4,2)(3,5), (2,5)(3,6) ]) gap> Centralizer( g, (1,2) ); Group([ (1,2), (3,4) ]) gap> # Group Homomorphisms gap> g:= SymmetricGroup( 4 ); Sym( [ 1 .. 4 ] ) gap> tr:= RightTransversal( g, Group( (1,2) ) ); RightTransversal(Sym( [ 1 .. 4 ] ),Group([ (1,2) ])) gap> hom:= ActionHomomorphism( g, tr, OnRight ); gap> Range( hom ); Sym( [ 1 .. 12 ] ) gap> Images( hom ); Group([ (1,10,5,9)(2,12,4,8)(3,11,6,7), (2,3)(4,7)(5,8)(6,9)(10,11) ]) gap> n:= SubgroupNC( g, [ (1,2)(3,4), (1,3)(2,4) ] ); Group([ (1,2)(3,4), (1,3)(2,4) ]) gap> epi:= NaturalHomomorphismByNormalSubgroup( g, n ); [ (1,2,3,4), (1,2) ] -> [ f1*f2, f1 ] gap> Images( epi ); Group([ f1, f2 ]) gap> Kernel( epi ); Group([ (1,2)(3,4), (1,3)(2,4) ]) gap> h:= SymmetricGroup( 3 ); Sym( [ 1 .. 3 ] ) gap> hom:= GroupHomomorphismByImages( h, g, [ (1,2), (1,2,3) ], > [ (2,3), (2,3,4) ] ); [ (1,2), (1,2,3) ] -> [ (2,3), (2,3,4) ] gap> (1,3)^hom; (2,4) gap> # Group Libraries gap> Filtered( [ 1 .. 100 ], i -> NrPerfectGroups( i ) <> 0 ); [ 1, 60 ] gap> g:= PerfectGroup( IsPermGroup, 168, 1 ); L3(2) gap> GeneratorsOfGroup( g ); [ (1,2)(4,5), (2,3,4)(5,6,7) ] gap> g:= OnePrimitiveGroup( NrMovedPoints, 10, Size, 60 ); A(5) gap> GeneratorsOfGroup( g ); [ (1,5,7)(2,9,4)(3,8,10), (2,6)(3,5)(4,7)(9,10) ] gap> grps:= AllSmallGroups( Size, 8, IsAbelian, false ); [ , ] gap> List( grps, g -> List( Elements( g ), Order ) ); [ [ 1, 2, 2, 2, 4, 2, 2, 4 ], [ 1, 4, 4, 2, 4, 4, 4, 4 ] ] gap> OneTransitiveGroup( NrMovedPoints, IsPrimeInt, IsSolvableGroup, false ); #W AllTransitiveGroups: Degree restricted to [2..30] A5 gap> # Domains gap> g:= SymmetricGroup( 4 ); Sym( [ 1 .. 4 ] ) gap> GeneratorsOfGroup( g ); [ (1,2,3,4), (1,2) ] gap> DerivedSubgroup( g ); Group([ (1,3,2), (1,4,3) ]) gap> SylowSubgroup( g, 2 ); Group([ (1,2), (3,4), (1,3)(2,4) ]) gap> Size( Rationals ); infinity gap> GeneratorsOfField( GF(27) ); [ Z(3^3) ] gap> GaloisGroup( GF(16) ); gap> Size( last ); 4 gap> BasisVectors( Basis( Rationals^3 ) ); [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] gap> gens:= GeneratorsOfVectorSpace( GF(2)^2 ); [ , ] gap> Print( gens, "\n" ); [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ] gap> a:= Rationals^[2,2]; ( Rationals^[ 2, 2 ] ) gap> Dimension( a ); 4 gap> a:= GroupRing( Rationals, SymmetricGroup( 3 ) ); gap> GeneratorsOfAlgebra( a ); [ (1)*(), (1)*(1,2,3), (1)*(1,2) ] gap> # Operations and Methods gap> Size; gap> Print( Size, "\n" ); gap> ApplicableMethod( Size, [ SymmetricGroup( 3 ) ] ); function( object ) ... end gap> Print( last, "\n" ); function ( object ) <> end gap> ApplicableMethod( Size, [ Group( (1,2,3), (1,2) ) ] ); function( G ) ... end gap> Print( last, "\n" ); function ( G ) return SizeStabChain( StabChainMutable( G ) ); end gap> ApplicableMethod( IsAbelian, [ GL(2,3) ] ); function( D ) ... end gap> Print( last, "\n" ); function ( D ) local gens, i, j; gens := GeneratorsStruct( D ); for i in [ 2 .. Length( gens ) ] do for j in [ 1 .. i - 1 ] do if gens[i] * gens[j] <> gens[j] * gens[i] then return false; fi; od; od; return true; end gap> g:= Group( (1,2,3), (1,2) );; gap> HasSize( g ); false gap> Size( g ); 6 gap> HasSize( g ); true