#### 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