############################################################################# ## #M NilpotentProjector(<grp>) ##
CRISP_RedispatchOnCondition(NilpotentProjector, "redispatch if group is finite or soluble",
true,
[IsGroup],
[IsFinite and IsSolvableGroup], 0);
############################################################################# ## #V SupersolubleGroups ##
BindGlobal("SupersolubleGroups", SaturatedFormation( rec(
res := SupersolvableResiduum,
proj := SupersolubleProjector,
locdef := function(G, p)
local gens, res, i, j;
gens := GeneratorsOfGroup(G);
res := List(gens, x -> x^(p-1)); for i in [1..Length(gens)] do for j in [i+1..Length(gens)] do
Add(res, Comm(gens[i], gens[j]));
od;
od;
return res; end,
char := AllPrimes,
bound := G -> not IsPrime(Size(Socle(G)))
)));
SetIsSubgroupClosed(SupersolubleGroups, true);
SetName(SupersolubleGroups, "<class of all supersoluble groups>");
############################################################################# ## #M SupersolubleProjector(<grp>) ##
CRISP_RedispatchOnCondition(SupersolubleProjector, "redispatch if group is finite or soluble",
true,
[IsGroup],
[IsFinite and IsSolvableGroup], 0);
############################################################################# ## #V AbelianGroups ##
BindGlobal("AbelianGroups", OrdinaryFormation( rec(
res := DerivedSubgroup,
char := AllPrimes
)));
SetIsSubgroupClosed(AbelianGroups, true);
SetName(AbelianGroups, "<class of all abelian groups>");
############################################################################# ## #F AbelianGroupsOfExponent(<exp>) ##
InstallGlobalFunction("AbelianGroupsOfExponent", function(exp)
local form; if not IsPosInt(exp) then
Error("<exp> must be a positive integer"); fi;
form := OrdinaryFormation( rec(
res := G -> ClosureGroup(DerivedSubgroup(G),
List(GeneratorsOfGroup(G), x -> x^exp)),
char := PrimeDivisors(exp)
));
SetIsSubgroupClosed(form, true);
SetName(form, Concatenation( "<class of all abelian groups of exponent dividing ",
String(exp), ">"));
return form; end);
############################################################################# ## #F PiGroups(<list>) ##
InstallGlobalFunction("PiGroups", function(pi)
local class; if not IsListOrCollection(pi) then
Error("<pi> must be a list or collection or class"); fi; if HasIsEmpty(pi) and IsEmpty(pi) then
return TrivialGroups; # this also avoids a problem with String # which returns "" for an empty list fi;
class := SaturatedFittingFormation( rec(
\in := G -> ForAll(PrimeDivisors(Size(G)), p -> p in pi),
proj := G -> HallSubgroup(G, Filtered(PrimeDivisors(Size(G)), p -> p in pi)),
inj := G -> HallSubgroup(G, Filtered(PrimeDivisors(Size(G)), p -> p in pi)),
locdef := function(G, p) if p in pi then
return []; else
return fail; fi; end,
char := pi,
bound := G -> not SmallestRootInt(Size(Socle(G))) in pi
));
SetIsSubgroupClosed(class, true);
# the following may cause trouble if there is no String method for pi
SetName(class, Concatenation( "<class of all ",String(pi), "-groups>"));
return class; end);
############################################################################# ## #F PGroups(<p>) ##
InstallGlobalFunction("PGroups", function(p)
local class; if not IsInt(p) or not IsPrimeInt(p) then
Error("<p> must be a prime integer"); fi;
class := SaturatedFittingFormation( rec(
\in := G -> IsTrivial(G)
or SmallestRootInt(Size(G)) = p,
proj := G -> SylowSubgroup(G, p),
inj := G -> SylowSubgroup(G, p),
locdef := function(G, q) if p = q then
return []; else
return fail; fi; end,
char := [p],
bound := G -> Factors(Size(Socle(G)))[1] <> p
));
SetIsSubgroupClosed(class, true);
SetName(class, Concatenation( "<class of all ",String(p), "-groups"));
return class; end);
############################################################################ ## #M HallSubgroupOp(<grp>, <pi>) ## ## make sure that HallSubgroupOp works for arbitrary soluble groups ##
CRISP_RedispatchOnCondition(HallSubgroupOp, "redispatch if group is finite or soluble",
true,
[IsGroup,IsList],
[IsSolvableGroup and IsFinite,], 1);
############################################################################ ## #M SylowComplementOp(<grp>, <p>) ##
CRISP_RedispatchOnCondition(SylowComplementOp, "redispatch if group is finite or soluble",
true,
[IsGroup,IsPosInt],
[IsSolvableGroup and IsFinite,
IsPosInt], 1);
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.