# nilpotent groups come from the SmallGroups library
grps := [PcGroupCode( 0,1 )];
size := 1; for p in Set( pr ) do
n := Length( Filtered( pr, x -> x = p ) ); if (p^n <> 512 and p^n <= 1000) or n <= 7then
new := AllSmallGroups( p^n, IsNilpotent, true ); else
Print("sorry - prime powers in order are too large\n");
return fail; fi;
tmp := []; for G in grps do if IsInt(G) then
G := PcGroupCode( G, size ); fi; for H in new do
D := DirectProduct( G, H ); if uncoded then
Add( tmp, D ); else
Add( tmp, CodePcGroup( D ) ); fi;
od;
od;
size := size * p^n;
grps := tmp;
od;
# if size is of type p^n * q
cl := Collected( pr ); if Length( cl ) = 2 and cl[1][2] = 1then
new := CyclicSplitExtensionMethod(cl[2][1],cl[2][2],cl[1][1],uncoded);
Append( grps, new.up );
Append( grps, new.down );
flags := rec( nonpnorm := Set( pr ) ); elif Length( cl ) = 2 and cl[2][2] = 1then
new := CyclicSplitExtensionMethod(cl[1][1],cl[1][2],cl[2][1],uncoded);
Append( grps, new.up );
Append( grps, new.down );
flags := rec( nonpnorm := Set( pr ) ); else
flags := rec( nonnilpot := true ); # Use Sylow theorem to find primes p such that any group of # the given size must have a normal Sylow $p$-subgroup
tmp := Filtered( cl, pk -> [1] = Filtered(
DivisorsInt( size / pk[1]^pk[2] ), n -> (n mod pk[1]) = 1) ); if Length( tmp ) > 0then
flags.pnormal := List( tmp, pk -> pk[1] ); if flags.pnormal = Set( pr ) then # all Sylow subgroups are normal -> all groups are # nilpotent.
return [ ]; fi; fi; fi;
# remaining soluble groups
new := FrattiniExtensionMethod( size, flags, uncoded );
Append( grps, new ); if not uncoded then for i in [1..Length(grps)] do if IsList(grps[i]) then
Assert(0, ForAll(grps[i], g -> g.order = size));
grps[i] := List(grps[i], g -> g.code); else
Assert(0, IsRecord(grps[i]));
Assert(0, grps[i].order = size);
grps[i] := grps[i].code; fi;
od; fi;
tmp := []; for d in DivisorsInt( size ) do
new := AllNonSolublePerfectGroups( d ); if IsBool( new ) then
Print("sorry - perfect groups are not available \n");
return fail; fi;
Append( tmp, new );
od;
grps := []; for G in tmp do if Size(Centre(G)) = 1then
new := UpwardsExtensionsNoCentre( G, size/Size(G) ); else
new := UpwardsExtensions( G, size / Size(G) );
new := new[Length(new)]; fi;
Append( grps, new );
od;
return grps; end );
############################################################################# ## #F ConstructAllGroups( size ) . . . . . . construct all groups of given size ##
InstallGlobalFunction( ConstructAllGroups, function( size )
local pr, grps;
# trivial case
pr := Factors( size ); if Length( pr ) <= 3then return AllSmallGroups( size ); fi;
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.