Dear all, I have a matrix group G and a permutation representation phi. I want to find a generating set for the kernel. It seems to be a hard problem with GAP and I am unsure why. Is it really such a hard problem ?
The problem happens already when we take GL2 and the determinant representation, which is my primary example, though not the only one. Any help would be appreciated. Mathieu PS: Below, the example that shows the problem and an attempt solution at it in the particular case of a permutation representation to Sym(2). I do not claim optimality, but I think it is correct. TestGL:=function(n) local TheG, ListGen, ListPerm, eGen, eDet, Sym2, phi, TheKer; TheG:=GL(n, Integers); ListGen:=GeneratorsOfGroup(TheG); ListPerm:=[]; for eGen in ListGen do eDet:=DeterminantMat(eGen); if eDet=1 then Add(ListPerm, ()); else Add(ListPerm, (1,2)); fi; od; Sym2:=SymmetricGroup(2); Print("Before computing phi\n"); phi:=GroupHomomorphismByImagesNC(TheG, Sym2, ListGen, ListPerm); Print("Before computing TheKer\n"); TheKer:=Kernel(phi); Print("After computing TheKer\n"); return rec(phi:=phi, TheKer:=TheKer); end; GetIndexOneTwoKernelOfMapping:=function(GRP1, GRP2, ListGens1, ListGens2) local nbGen, ListPosPlus, ListPosMinus, ListGenRet, x1, TheId, eGenMinus, eGenPlus, List1, List2, i1, i2; if First(ListGens2, x->x<>() and x<>(1,2))<>fail then Error("The ListGens2 must be only () or (1,2)"); fi; if GRP2<>SymmetricGroup(2) then Error("The second group must be SymmetricGroup(2)"); fi; nbGen:=Length(ListGens2); ListPosPlus:=Filtered([1..nbGen], x->ListGens2[x]=()); ListPosMinus:=Filtered([1..nbGen], x->ListGens2[x]=(1,2)); if Length(ListPosMinus)=0 then return GRP1; fi; ListGenRet:=ListGens1{ListPosPlus}; x1:=ListGens1[ListPosMinus[1]]; TheId:=Identity(GRP1); for eGenMinus in ListGens1{ListPosMinus} do for eGenPlus in Concatenation(ListPosPlus, TheId) do List1:=[eGenMinus, Inverse(eGenMinus)]; List2:=[x1, Inverse(x1)]; for i1 in [1,2] do for i2 in [1,2] do Add(ListGenRet, List1[i1]*eGenPlus*List2[i2]); Add(ListGenRet, List2[i2]*eGenPlus*List1[i1]); od; od; od; od; return Group(ListGenRet); end; _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum