if Size( C ) = 1then return [Identity(C)]; fi;
U := Image( hom );
H := Source( hom );
# automorphisms of U induced by NU
CU := [];
gens := GeneratorsOfGroup( U );
oper := GeneratorsOfGroup( NU ); for g in oper do
imgs := List( gens, x -> x^g ); if imgs <> gens then
aut := GroupHomomorphismByImagesNC(U, U, gens, imgs);
SetIsBijective( aut, true );
Add( CU, aut ); fi;
od;
CU := SubgroupNC( C, CU );
# automorphisms of U induced by NL
CL := [];
gens := List(GeneratorsOfGroup(H), x -> Image(hom,x));
oper := GeneratorsOfGroup( NL ); for g in oper do
imgs := List( GeneratorsOfGroup( H ), x -> Image( g, x ) );
imgs := List( imgs, x -> Image( hom, x ) );
aut := GroupHomomorphismByImagesNC(U, U, gens, imgs);
SetIsBijective( aut, true );
Add( CL, aut );
od;
CL := SubgroupNC( C, CL );
############################################################################# ## ## N is a center-free perfect group and H is soluble. ## classify extensions of N by H up to isomorphism ##
BindGlobal( "ExtensionsByGroupNoCentre", function( N, H )
local A, I, hom, O, clU, B, clL, f, D, gensN, oper, pairs, U, L, nat,
F, iso, res, NU, NL, C, reps, r, new, gens, G, pair, g, h;
# the automorphism group of N
Info( InfoGrpCon, 2, " compute Aut N ");
A := AutomorphismGroup(N);
I := InnerAutomorphismsAutomorphismGroup(A);
hom := NaturalHomomorphismByNormalSubgroupNC( A, I );
O := Image(hom);
# possible projections in O
Info( InfoGrpCon, 2, " compute subgroups of Out N ");
clU := ConjugacyClassesSubgroups( O );
clU := List( clU, Representative );
# the automorphism group of H
Info( InfoGrpCon, 2, " compute Aut H ");
B := AutomorphismGroup( H );
IsomorphismPermGroup(B);
# possible kernels in H
Info( InfoGrpCon, 2, " compute possible centralizers in H ");
clL := NormalSubgroups( H );
clL := Filtered( clL, x -> Index(H, x) <= Size(O) );
f := function( pt, aut ) return Image( aut, pt ); end;
clL := Orbits( B, clL, f );
clL := List( clL, x -> x[1] );
# compute direct product
Info( InfoGrpCon, 2, " compute direct product and projections ");
D := DirectProduct( A, H );
gensN := List( GeneratorsOfGroup( I ), x -> DirectProductElement( [x, Identity(H)] ) );
# compute perm reps
Info( InfoGrpCon, 2, " compute perm rep of D ");
oper := PermRepDP( D );
# compute pairs
Info( InfoGrpCon, 2, " computing pairs ");
pairs := []; for U in clU do for L in clL do
nat := NaturalHomomorphismByNormalSubgroupNC( H, L );
F := Image( nat ); if Size(U) = Size( F ) then if IdGroup( U ) = IdGroup( F ) then
iso := IsomorphismGroups( F, U );
iso := nat * iso;
SetIsSurjective( iso, true );
SetKernelOfMultiplicativeGeneralMapping( iso, L );
Add( pairs, iso ); fi; fi;
od;
od;
# classify subdirect products
Info( InfoGrpCon, 2, " start to loop over ", Length(pairs), " pairs ");
res := []; for pair in pairs do
Info( InfoGrpCon, 3, " start factors of id ", IdGroup(U),"");
U := Image( pair );
L := Kernel( pair );
# operating groups
Info( InfoGrpCon, 3, " computing normalizer ");
NU := Normalizer( O, U );
Info( InfoGrpCon, 3, " computing stabilizer ");
NL := Stabilizer( B, L, f );
Info( InfoGrpCon, 3, " computing automorphism group ");
C := AutomorphismGroup( U );
# for each double coset rep create a group
Info( InfoGrpCon, 3, " loop over ", Length(reps), " coset reps "); for r in reps do
new := pair * r;
Info( InfoGrpCon, 4, " compute generators of subdirect product ");
gens := []; for g in GeneratorsOfGroup( H ) do
h := Image( new, g );
h := PreImagesRepresentative( hom, h );
h := DirectProductElement( [h, g ] );
Add( gens, h );
od;
Append( gens, gensN );
############################################################################# ## #F UpwardsExtensionsNoCentre( N, stepsize ) ##
BindGlobal( "UpwardsExtensionsNoCentre", function( N, stepsize )
local all, res, G, tmp; if stepsize = 1then
return [N]; fi; all := AllSmallGroups( stepsize, IsSolvableGroup, true );
res := []; for G in alldo
IsPGroup( G );
Info( InfoGrpCon, 1, "start extending by group with id ",IdGroup(G) );
tmp := ExtensionsByGroupNoCentre( N, G );
Append( res, tmp );
od;
return res; end );
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-10-11)
¤
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.