############################################################################# ## #M IsMemberOp(<grp>, <fit>) ##
InstallMethod(IsMemberOp, "if radical is known", true,
[IsGroup, IsFittingClass and HasRadicalFunction], 1, # radical function is usually faster than injector function(G, C) if HasMemberFunction(C) then
TryNextMethod(); else
return IsSubgroup(RadicalFunction(C)(G), G); fi; end);
############################################################################# ## #M IsMemberOp(<grp>, <fit>) ##
InstallMethod(IsMemberOp, "if injector is known", true,
[IsGroup, IsFittingClass and HasInjectorFunction], 0, function(G, C) if HasMemberFunction(C) then
TryNextMethod(); else
return IsSubgroup(InjectorFunction(C)(G), G); fi; end);
############################################################################# ## #R IsFittingProductRep(<cl>) ## ## classes which are defined as Fitting product ##
DeclareRepresentation("IsFittingProductRep",
IsClass and IsGroupClass and IsFittingClass and
IsComponentObjectRep and IsAttributeStoringRep,
["classId", "bot", "top"]);
############################################################################# ## #M IsMemberOp(<grp>, <fitset>) ##
InstallMethod(IsMemberOp, "if radical is known", function(G, C) return IsIdenticalObj(CollectionsFamily(G), C); end,
[IsGroup, IsFittingSetRep and HasRadicalFunction], 1, # radical function is usually faster than injector function(G, C) if HasMemberFunction(C) then
TryNextMethod(); else
return IsSubgroup(RadicalFunction(C)(G), G); fi; end);
############################################################################# ## #M IsMemberOp(<grp>, <fitset>) ##
InstallMethod(IsMemberOp, "for FittingSetRep with inj function", function(G, C) return IsIdenticalObj(CollectionsFamily(G), C); end,
[IsGroup, IsFittingSetRep and HasInjectorFunction], 0, function(G, C) if HasMemberFunction(C) then
TryNextMethod(); else
return IsSubgroup(InjectorFunction(C)(G), G); fi; end);
############################################################################# ## #M Intersection2(<fitset>, <fit>) ##
InstallMethod(Intersection2, "for Fitting set and Fitting class", true,
[IsFittingSetRep, IsFittingClass], 0, function(F1, F2)
local F;
F := FittingSet(F1!.group,
rec(\in := x -> x in F1 and x in F2,
rad := G -> Radical(Radical(G, F2), F1)));
return F; end);
############################################################################# ## #M Intersection2(<fitset1>, <fitset2>) ##
InstallMethod(Intersection2, "for Fitting sets", IsIdenticalObj,
[IsFittingSetRep, IsFittingSetRep], 0, function(F1, F2)
local F;
F := FittingSet(Intersection(F1!.group, F2!.group),
rec(\in := x -> x in F1 and x in F2,
rad := G -> Radical(Radical(G, F2), F1)));
return F; end);
if not IsFittingSet(ImagesSource(alpha), F) then
Error("F must be a Fitting set of the image of alpha"); else
return FittingSet(Source(alpha), rec(
inj := G ->PreImagesSet(alpha,
Injector(ImagesSet(alpha, G), F)))); fi; end);
############################################################################# ## #M PreImageFittingSet(<alpha>, <fitset>) ## ## return Fitting set of preimage of an isomorphism ##
InstallMethod(PreImageFittingSet, "for Fitting set - injective case", function(famalpha, famF)
return IsIdenticalObj(FamilyRange(famalpha),
ElementsFamily(ElementsFamily(famF))); end,
[IsGroupHomomorphism and IsInjective, IsFittingSetRep], 0, function(alpha, F)
if not IsFittingSet(ImagesSource(alpha), F) then
Error("F must be a Fitting set of the image of alpha"); else
return FittingSet(Source(alpha), rec(
\in := G ->ImagesSet(alpha, G) in F,
rad := G ->PreImagesSet(alpha,
Radical(ImagesSet(alpha, G), F)),
inj := G ->PreImagesSet(alpha,
Injector(ImagesSet(alpha, G), F)))); fi; end);
if not IsFittingSet(Source(alpha), F) then
Error("F must be a Fitting set of the preimage of alpha"); else
return FittingSet(ImagesSource(alpha), rec(
inj := G ->ImagesSet(alpha,
Injector(PreImagesSet(alpha, G), F)))); fi; end);
############################################################################# ## #M ImageFittingSet(<alpha>, <fitset>) ## ## return Fitting set of image when alpha is injective ##
InstallMethod(ImageFittingSet, "for Fitting set - injective case", function(famalpha, famF)
return IsIdenticalObj(FamilySource(famalpha),
ElementsFamily(ElementsFamily(famF))); end,
[IsGroupHomomorphism and IsInjective, IsFittingSetRep], 0, function(alpha, F)
if not IsFittingSet(Source(alpha), F) then
Error("F must be a Fitting set of the preimage of alpha"); else
return FittingSet(ImagesSet(alpha), rec(
\in := G ->PreImagesSet(alpha, G) in F,
rad := G ->ImagesSet(alpha,
Radical(PreImagesSet(alpha, G), F)),
inj := G ->ImagesSet(alpha,
Injector(PreImagesSet(alpha, G), F)))); fi; end);
############################################################################# ## #M PreImageFittingSet(<alpha>, <fit>) ## ## return Fitting set of preimage of an isomorphism ##
InstallMethod(PreImageFittingSet, "for Fitting class - injective case", true,
[IsGroupHomomorphism and IsInjective, IsFittingClass], 0, function(alpha, F)
return FittingSet(Source(alpha), rec(
\in := G ->ImagesSet(alpha, G) in F,
rad := G ->PreImagesSet(alpha,
Radical(ImagesSet(alpha, G), F)),
inj := G ->PreImagesSet(alpha,
Injector(ImagesSet(alpha, G), F)))); end);
############################################################################# ## #M ImageFittingSet(<alpha>, <fitset>) ## ## return Fitting set of image when alpha is injective ##
InstallMethod(ImageFittingSet, "for Fitting class - injective case", true,
[IsGroupHomomorphism and IsInjective, IsFittingClass], 0, function(alpha, F)
return FittingSet(Image(alpha), rec(
\in := G ->PreImagesSet(alpha, G) in F,
rad := G ->ImagesSet(alpha,
Radical(PreImagesSet(alpha, G), F)),
inj := G ->ImagesSet(alpha,
Injector(PreImagesSet(alpha, G), F)))); 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.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.