> < ^ Date: Wed, 27 Feb 2002 17:35:51 +0100
< ^ From: Max Neunhoeffer <max.neunhoeffer@math.rwth-aachen.de >
> < ^ Subject: Re: Metaplektische Gruppe

Lieber Herr Freitag, dear GAP-Forum members,

> the group SL(2) over the ring Z/qZ (for example q=12 is interesting)
> admits a twofold covering, the mataplectic group.
> 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 ]
```

With kind regards,

Joachim Neubueser and Max Neunhoeffer

```--
//  //   Max Neunhöffer <max.neunhoeffer@math.rwth-aachen.de>
//  //   Alexianergraben 4-6, 52062 Aachen, Germany
//  //   Tel.: +49 241 406605 (private) / +49 241 8094550 (institute)
//  //   May the Source be with you!
```

> < [top]