GAP QA #3

Constructing a Covering

Keywords: Covering, Extension

Respondent:

Max Neunhöffer ( Max.Neunhoeffer@Math.RWTH-Aachen.DE)

Question:

The group SL(2) over the ring Z/qZ (for example q=12 is interesting) admits
a twofold covering, the metaplectic group. The interesting case is that 4
divides q. Then there is a covering which does not split. The cocycle can be
computed.
What is the best way to get it into GAP?

Answer:

There are in fact two groups that qualify as twofold covers of SL(2,Z/12Z):
We start by giving generators of SL(2,Z/12Z); this is necessary in GAP 4.2,
in the next version one can use "SL(2,Integers mod 12)":

gap> gens := [  [[0,11],[1,0]] , [[1,1],[0,1]] ];
[ [ [ 0, 11 ], [ 1, 0 ] ], [ [ 1, 1 ], [ 0, 1 ] ] ]
gap> R := Integers mod 12;
(Integers mod 12)
gap> e := One(R);
ZmodnZObj( 1, 12 )
gap> gens := [  e*[[0,11],[1,0]] , e*[[1,1],[0,1]] ];
[ [ [ ZmodnZObj( 0, 12 ), ZmodnZObj( 11, 12 ) ], 
      [ ZmodnZObj( 1, 12 ), ZmodnZObj( 0, 12 ) ] ], 
  [ [ ZmodnZObj( 1, 12 ), ZmodnZObj( 1, 12 ) ], 
      [ ZmodnZObj( 0, 12 ), ZmodnZObj( 1, 12 ) ] ] ]
gap> g := Group(gens);;
gap> Size(g);
1152
gap> IsSolvable(g);
true

It is advantageous to use a pc presentation of the group:

gap> gp := Image(IsomorphismPcGroup(g));
Group([ f1, f2, f3, f4, f5, f6, f7, f8, f9 ])

We then need the module by which the group is to be extended:

gap> mats := List( Pcgs(gp), x -> IdentityMat( 1, GF(2) ) );;
gap> M := GModuleByMats( mats, GF(2) );;

And now we construct the extensions up to equivalence:

gap> li := Extensions(gp,M);
[ <pc group of size 2304 with 10 generators>, 
  <pc group of size 2304 with 10 generators>, 
  <pc group of size 2304 with 10 generators>, 
  <pc group of size 2304 with 10 generators> ]

There is a yet undocumented function that gives the subgroup of the
extension which corresponds to the module, in all four cases it is
generated by the last of the pc generators:

gap> List(li,ModuleOfExtension);
[ Group([ f10 ]), Group([ f10 ]), Group([ f10 ]), Group([ f10 ]) ]

We now check for which this subgroup is in the intersection of the
center and the derived group:

gap> cli := List(li,h-> Intersection(Centre(h),DerivedSubgroup(h)));
[ Group([ f5*f7*f9 ]), Group([ f5*f7*f9*f10 ]), 
  Group([ f10, f5*f7*f9, f5*f7*f9*f10 ]), 
  Group([ f10, f5*f7*f9, f5*f7*f9*f10 ]) ]

So the last too of the 4 extensions remain, they are not isomorphic:

gap> AbelianInvariants(Centre(li[3]));
[ 2, 4 ]
gap> AbelianInvariants(Centre(li[4]));
[ 2, 2, 2 ]

Back to the GAP QA list