LoadPackage("format");;
G := SymmetricGroup(4);
SystemNormalizer(G);  CarterSubgroup(G);
sup := Formation("Supersolvable");
KnownAttributesOfObject(sup); KnownPropertiesOfObject(sup);
ScreenOfFormation(sup);
ScreenOfFormation(sup)(G,2); ScreenOfFormation(sup)(G,3);
ResidualWrtFormation(G, sup);
KnownAttributesOfObject(sup);
FNormalizerWrtFormation(G, sup);
CoveringSubgroupWrtFormation(G, sup);
KnownAttributesOfObject(G);
ComputedResidualWrtFormations(G);
ComputedFNormalizerWrtFormations(G);
ComputedCoveringSubgroup2s(G);
ComputedCoveringSubgroup1s(G);
s4 := SmallGroup(IdGroup(G));
SystemNormalizer(s4); CarterSubgroup(s4);
sl := SpecialLinearGroup(2,3);
h := SmallGroup(IdGroup(sl));
CarterSubgroup(sl); Size(last);
SystemNormalizer(h); CarterSubgroup(h);
ab := Formation("Abelian");
KnownPropertiesOfObject(ab); KnownAttributesOfObject(ab);
nil2 := Formation("PNilpotent",2);
KnownPropertiesOfObject(nil2); KnownAttributesOfObject(nil2);
form := ProductOfFormations(ab, nil2);
KnownAttributesOfObject(form);
form2 := ProductOfFormations(nil2, ab);
KnownAttributesOfObject(form2);
ResidualWrtFormation(G, form);  ResidualWrtFormation(G, form2);
KnownPropertiesOfObject(form2);
Integrated(form2);
FNormalizerWrtFormation(G, form2); CoveringSubgroupWrtFormation(G, form2);
KnownPropertiesOfObject(form2);
ComputedCoveringSubgroup1s(G);
ComputedResidualWrtFormations(G);
pig := Formation("PiGroups", [2,5]);
form := Intersection(pig, nil2);
KnownAttributesOfObject(form);
form3 := ChangedSupport(nil2, [2,5]);
SupportOfFormation(form3);
form = form3;
ProductOfFormations(Intersection(pig, nil2), sup);
Intersection(pig, ProductOfFormations(nil2, sup));
preform := rec( name := "MyOwn", 
  fScreen := function( G, p)
  return DerivedSubgroup( G );
  end);
form := Formation(preform);
KnownAttributesOfObject(form); KnownPropertiesOfObject(form);
SetIsIntegrated(form, true);
ResidualWrtFormation(G, form);
FNormalizerWrtFormation(G, form);
CoveringSubgroup1(G, form);
####
preform := rec( name := "ForComplement",
 fScreen := function( H, p )
 return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]});
 end);;
form := Formation(preform);
SetIsIntegrated(form, true);
comp := FNormalizerWrtFormation(s4, form); Size(comp);
