local N, F, p, pcgsN, C, pcgsC, one, i, mat, mats, CC, H, hom, infomat, info, rep, ext, imgs, g, r;
N := FittingSubgroup(G);
pcgsN := Pcgs(N);
p := Set(RelativeOrders(pcgsN)); if Length(p) <> 1then
Error("G must be primitive"); fi;
p := p[1];
if not IsAbelian(N) or ForAny(pcgsN, g -> g^p <> One(G)) then
Error("G must be primitive"); fi;
# now we know that N is elementary abelian of exponent p
F := GF(p);
one := One(F);
mats := [];
C := ComplementClassesRepresentatives(G, N); if Length(C) <> 1then
Error("G must be primitive"); fi;
C := C[1];
# N is complemented
pcgsC := Pcgs(C); for g in pcgsC do
mat := []; for i in [1..Length(pcgsN)] do
mat[i] := ExponentsOfPcElement(pcgsN, pcgsN[i]^g)*one;
od;
Add(mats, ImmutableMatrix(F, mat));
od;
if not MTX.IsIrreducible(GModuleByMats(mats, F)) then
Error("G must be primitive"); fi;
H := Group(mats);
# the recognition part works best if the source of the representation isomorphism is a pc group
if IsPcGroup(C) then
CC := C; else
CC := PcGroupWithPcgs(Pcgs(C)); fi;
imgs := []; for g in Pcgs(CC) do
Add(imgs, ImageElm(ext.embed, ImageElm(infomat.iso, g)));
od; for r in infomat.mat do
g := PcElementByExponents(ext.pcgsV, List(r, IntFFE));
Add(imgs, g);
od;
info.group := ext.E;
info.iso := GroupHomomorphismByImages(G, ext.E,
Concatenation(pcgsC, pcgsN), imgs); if info.iso = fail or not IsBijective(info.iso) then
Error("wrong group homomorphism"); fi;
return info; end);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.21Bemerkung:
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.