(C) E in X, and EV = U whenever E le U le G with U/V in X.
It follows from the definition that an X-covering subgroup E of G is also X-covering in every subgroup U of G that contains E, and an easy argument shows that E is an X-projector of every such U, i.e., E satisfies
(P) EK/K is an X-maximal subgroup of U/K whenever K is normal in U.
Gaschütz showed that if F is a locally defined formation, then every finite solvable group has an F-covering subgroup. Indeed, locally defined formations are the only formations with this property. For such formations the F-projectors and F-covering subgroups of a solvable group coincide and form a single conjugacy class of subgroups. (See DH for details.)
If F is a locally defined integrated formation in GAP
and if G is a finite solvable group, then the command CoveringSubgroup1(
G, F ) returns an F-covering
subgroup of G. The function CoveringSubgroup2 uses a different
algorithm to compute
F-covering
subgroups. The user may choose either function. Experiments with large
groups suggest that CoveringSubgroup1 is somewhat faster.
CoveringSubgroupWrtFormation
checks first to see if either of these two functions has already computed
an F-covering subgroup of G, and if not, then it calls FCoveringGroup1
to compute one.
Nilpotent-covering subgroups are also called Carter subgroups.
The command CarterSubgroup( G ) is equivalent
to CoveringSubgroupWrtFormation( G, Formation( "Nilpotent"
) ).
All of these functions call upon F-normalizer algorithms as subroutines.