Up to this point our screens, i.e., normal subgroup functions, have yielded local formation residual subgroups, but there is no requirement that they do so. Screens for which the selected normal subgroups can be arbitrary have applications beyond formation theory. Chapter V of CH contains an account of a generalized normalizer theory built from them, and Wright (WA and WB) uses them to construct internal versions of formations that are conceptually related to ordinary formations much as Fitting sets are related to Fitting classes.

A major application of the generalized normalizers is to speed up computation of complements to normal factors (see EW).
Suppose that *G* is a finite solvable group with an elementary abelian
normal subgroup *A* for which there exists a normal subgroup *N* of *G*
containing *A* such that *N*/*A* is nilpotent and [*N*,*A*] = *A*. Then *A* has a complement in *G*, and all complements
are conjugate---indeed, they can be viewed as generalized
**F**-normalizers. We will show the idea, which of course is most useful with very large groups, by using `FNormalizerWrtFormation`

to find a complement to an
elementary abelian normal subgroup, in this case to *K* in *S*_{4} with *N* = *A*_{4}.

We need to define a formation `F`

in GAP (not a real formation,
of course, just a local version) such that `ScreenOfFormation( F )(s4,p)`

returns *A*_{4} for
every call. In order to call `FNormalizerWrtFormation`

we must also set the property
`IsIntegrated`

to `true`

.

gap> preform := rec( name := "ForComplement", > fScreen := function( H, p ) > return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]}); > end);; gap> form := Formation(preform); formation of ForComplement groups gap> SetIsIntegrated(form, true);Now we may use

`FNormalizerWrtFormation`

with `s4`

to
get the complement, an `form`

already
thinks it's integrated, `FNormalizerWrtFormation`

will automatically
integrate `form`

before running its computations, which may not be
the desired behavior.)
gap> comp := FNormalizerWrtFormation(s4, form); Size(comp); Group([ f1, f2 ]) 6

A user who wanted to employ the **F**-normalizer technique to compute very
many complements in this way would probably wish to create a new GAP
function by extracting portions of the code that computes
**F**-systems.

FORMAT manual

March 2018