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