[GAP Forum] Help to compare Character values

Jack Schmidt jack at ms.uky.edu
Wed Nov 25 20:15:38 GMT 2009


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.




More information about the Forum mailing list