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

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));
[ 2, 4 ]
gap> AbelianInvariants(Centre(li));
[ 2, 2, 2 ]
```