%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%W  others.tex            FORMAT documentation  B. Eick and C.R.B. Wright
%%
%% 10-31-11

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Other Applications}

%\index{Other Applications}

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 \cite{CH} contains an account of a generalized normalizer theory built from them, and Wright (\cite{WA} and \cite{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~\cite{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'.
\beginexample
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);
\endexample
Now we may use  `FNormalizerWrtFormation'  with `s4' to
get the complement, an $S_3$. (Recall that unless `form' already
thinks it's integrated, `FNormalizerWrtFormation' will automatically
integrate `form' before running its computations, which may not be
the desired behavior.)
\beginexample
gap> comp := FNormalizerWrtFormation(s4, form); Size(comp);
Group([ f1, f2 ])
6
\endexample

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. 

