%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%W  schumu.tex		NQL Doc				René Hartung
%%
%H  $Id: schumu.tex,v 1.1 2009/07/02 12:26:03 gap Exp $
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Approximating the Schur multiplier}

The algorithm in~\cite{Har09} approximates the Schur multiplier of
an invariantly finitely $L$-presented group by the quotients in its
Dwyer-filtration. This is implemented in the \NQL-package and the
following methods are available:

\> GeneratingSetOfMultiplier( <LpGroup> ) A

uses Tietze transformations for computing an equivalent set of relators
for <LpGroup> so that a generating set for its Schur multiplier can be
read off easily.

\> FiniteRankSchurMultiplier( <LpGroup>, <c> ) O

computes a finitely generated quotient of the Schur multiplier of
<LpGroup>. The method computes the image of the Schur multiplier of
<LpGroup> in the Schur multiplier of its class-<c> quotient.

\> EndomorphismsOfFRSchurMultiplier ( <LpGroup>, <c> )  O

computes a list of endomorphisms of the `FiniteRankSchurMultiplier' of
<LpGroup>. These are the endomorphisms of the invariant $L$-presentation
induced to `FiniteRankSchurMultiplier'.

\> EpimorphismCoveringGroups( <LpGroup>, <d>, <c> ) O

computes an epimorphism of the covering group of the class-<d> quotient
onto the covering group of the class-<c> quotient.

\> EpimorphismFiniteRankSchurMultiplier( <LpGroup>, <d>, <c> ) O

computes an epimorphism of the $d$-th `FiniteRankSchurMultiplier' of
the invariant <LpGroup> onto the $c$-th `FiniteRankSchurMultiplier'.
Its restricts the epimorphism `EpimorphismCoveringGroups' to the
corresponding finite rank multipliers.

\> ImageInFiniteRankSchurMultiplier( <LpGroup>, <c>, <elm> ) F

computes the image of the free group element <elm> in the <c>-th
`FiniteRankSchurMultiplier'. Note that <elm> must be a relator contained
in the Schur multiplier of <LpGroup>; otherwise, the function fails in
computing the image.

\vskip 3ex

The following example tackels the Schur multiplier of the Grigorchuk 
group.
\beginexample
gap> G := ExamplesOfLPresentations( 1 );;
gap> gens := GeneratingSetOfMultiplier( G );
rec( FixedGens := [ b^-2*c^-2*d^-2*b*c*d*b*c*d ],
  IteratedGens := [ d^-1*a^-1*d^-1*a*d*a^-1*d*a,
      d^-1*a^-1*c^-1*a^-1*c^-1*a^-1*d^-1*a*c*a*c*a*d*a^-1*c^-1*a^-1*c^-1*a^
        -1*d*a*c*a*c*a ],
  BasisGens := [ a^2, b*c*d, b^-2*d^-2*b*c*d*b*c*d, b^-2*c^-2*b*c*d*b*c*d ],
  Endomorphisms := [ [ a, b, c, d ] -> [ a^-1*c*a, d, b, c ] ] )
gap> H := FiniteRankSchurMultiplier( G, 5 );
Pcp-group with orders [ 2, 2, 2 ] 
gap> GeneratorsOfGroup( H );
[ g15, g17, g16 ]
gap> EndomorphismsOfFRSchurMultiplier( G, 5 );
[ [ g15, g16, g17 ] -> [ g15, id, g16 ] ]
gap> Kernel( last[1] );
Pcp-group with orders [ 2 ]
gap> GeneratorsOfGroup( last );
[ g16 ]
gap> EpimorphismFiniteRankSchurMultipliers( G, 5, 2 );
[ g15, g16, g17 ] -> [ g10, id, g13 ]
gap> Range( last ) = FiniteRankSchurMultiplier( G, 2 );
true
gap> Kernel( EpimorphismFiniteRankSchurMultipliers( G, 5, 2 ) );
Pcp-group with orders [ 2 ]
gap> GeneratorsOfGroup( last );
[ g16 ]
gap> Kernel( EpimorphismFiniteRankSchurMultipliers( G, 5, 2 ) ) =
> Kernel( EndomorphismsOfFRSchurMultiplier( G, 5 )[1] );
true
gap> ImageInFiniteRankSchurMultiplier( G, 5, gens.FixedGens[1] );
g15
gap> ImageInFiniteRankSchurMultiplier(G,5,Image(gens.Endomorphisms[1],
> gens.IteratedGens[1] ) );
g16
gap> ImageInFiniteRankSchurMultiplier(G,5,gens.IteratedGens[1] );
g17
\endexample
