On 2009-11-17, at 11:32, pooja singla wrote: > Dear Forum members, > I am new to this forum and have not used Gap yet. I need your help in > answering the following question: > > I am looking at representations of the following groups; > > A = GL_2(Z/p^Z) and B = GL_2(F_p[t]/t^2) , where p is a prime. > > By some abstract theory, I know that these groups have same number of > conjugacy classes and irreducible representations. Is it possible to check > by using Gap that whether these groups have same character tables or not? if > answer is negative for which p? For p =2 magma gives positive answer to > this question. > > > Regards, > Pooja.
GAP allows you to construct A as GL(2,Integers mod p^2), but for B it is easier to think of F_p[t]/(t^2) as a 2x2 matrix algebra over F_p generated by t=[0,1;0,0]. Both A and B surject onto GL(2,p) and the kernel is easy to describe. This allows you to write functions to construct very similar generating sets for A and B. I include those functions at the bottom. For p=2 and p=3 the groups A and B not only have isomorphic character tables, but are actually isomorphic. For p=5, the groups do not have isomorphic character tables. This can be checked for p=2,3 in a few seconds: gap> A2:=ImagesSource(IsomorphismPermGroup(gl2p2(2)));; gap> B2:=ImagesSource(IsomorphismPermGroup(gl2pt(2)));; gap> fail <> IsomorphismGroups(A2,B2); # are they isomorphic? true gap> A3:=ImagesSource(IsomorphismPermGroup(gl2p2(3)));; gap> B3:=ImagesSource(IsomorphismPermGroup(gl2pt(3)));; gap> fail <> IsomorphismGroups(A3,B3); # are they isomorphic? true The test for p=5 takes significantly longer, but: gap> A5:=ImagesSource(IsomorphismPermGroup(gl2p2(5)));; gap> B5:=ImagesSource(IsomorphismPermGroup(gl2pt(5)));; gap> fail <> IsomorphismGroups(A5,B5); # are they isomorphic? (30 minutes) false gap> fail <> TransformingPermutationsCharacterTables(CharacterTable(A5),CharacterTable(B5)); # do they have the same character table? (3 hours) false These use the auxiliary functions gl2p2 and gl2pt to construct the groups as matrix groups. The second group B is constructed as a subgroup of GL(4,p). gl2p2 := function( p ) local bmat, t, gens; bmat := a -> [ [ ZmodnZObj( a[1], p^2 ), ZmodnZObj( a[2], p^2 ) ], [ ZmodnZObj( a[3], p^2 ), ZmodnZObj( a[4], p^2 ) ] ]; t := p; gens := List( GeneratorsOfGroup( GL(2,p) ), mat -> bmat( IntVecFFE( Flat( mat ) ) ) ); Add( gens, bmat( [ t^0 + t, 0*t, 0*t, t^0 ] ) ); Add( gens, bmat( [ t^0, 0*t, 0*t, t^0 + t ] ) ); Add( gens, bmat( [ t^0, 1*t, 0*t, t^0 ] ) ); Add( gens, bmat( [ t^0, 0*t, 1*t, t^0 ] ) ); return Group( gens ); end; gl2pt := function( p ) local bmat, t, gens; bmat := function( a ) local x; x := List([1..4],i->List([1..4],j->0)); x{[1..2]}{[1..2]} := a[1]; x{[1..2]}{[3..4]} := a[2]; x{[3..4]}{[1..2]} := a[3]; x{[3..4]}{[3..4]} := a[4]; return x*One(GF(p)); end; t := [[0,1],[0,0]]; gens := List( GeneratorsOfGroup( GL(2,p) ), mat -> bmat( List( Flat( mat ), e -> e*t^0 ) ) ); Add( gens, bmat( [ t^0 + t, 0*t, 0*t, t^0 ] ) ); Add( gens, bmat( [ t^0, 0*t, 0*t, t^0 + t ] ) ); Add( gens, bmat( [ t^0, 1*t, 0*t, t^0 ] ) ); Add( gens, bmat( [ t^0, 0*t, 1*t, t^0 ] ) ); return Group( gens ); end; One could also have defined gl2p2 as "p -> GL(2,Integers mod p^2)", but perhaps it is easier to understand the gl2pt function in context. _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum