GAP QA #2

Building matrices from blocks

Keywords: Block matrix

Respondent:

Alexander Hulpke ( hulpke@math.colostate.edu)

Question:

I would like to use GAP to work on certain subgroups
of SL_{n}(Z/pZ) e.g. the subgroup of unimodular matrices
of the form
( A 0 )
( C D )
and A, D symplectic, or C symmetric, etc. Is there a way
to construct such subgroups?

Answer:

There is no generic command, you would have to build matrix generators (from
generators for A,D and the corresponding C) yourself. The following (simple)
example shows a way how. I form a simple direct product (all A/D
combinations possible, C is always zero). In you application you might
want to consider only particular combinations.

gap> GrpA:=SP(4,3);
Sp(4,3)
gap> GrpB:=SP(2,3);
SL(2,3)
gap> Null42:=NullMat(4,2,GF(3));
[ [ 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3) ] ]
gap> Null24:=NullMat(2,4,GF(3));
[ [ 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ] ]
BuildMatrix:=function(A,B,C,D)
  return Concatenation(
     List([1..Length(A)],i->Concatenation(A[i],B[i])),
     List([1..Length(C)],i->Concatenation(C[i],D[i])));
end;
gap> gens:=[];
[  ]
gap> for A in GeneratorsOfGroup(GrpA) do
> Add(gens,BuildMatrix(A,Null42,Null24,One(GrpB)));
> od;
gap> for D in GeneratorsOfGroup(GrpB) do
> Add(gens,BuildMatrix(One(GrpA),Null42,Null24,D));        
> od;
gap> mygp:=Group(gens);
<matrix group with 4 generators>
gap> Display(mygp.2);
 1 . 1 . . .
 1 . . . . .
 . 1 . 1 . .
 . 2 . . . .
 . . . . 1 .
 . . . . . 1

Back to the GAP QA list