<Chapter><Heading> Commutator and nonabelian tensor computations</Heading>

<Table Align="|l|" >

<Row>
<Item>
<Index> BaerInvariant</Index>
<C> 
BaerInvariant(G,c)
</C>
<P/>

Inputs a nilpotent group <M>G</M> and integer <M>c</M>&tgt;<M>0</M>. 
It returns the Baer invariant <M>M^(c)(G)</M> defined as follows.

For an arbitrary group <M>G</M> let <M>L^*_{c+1}(G)</M> be the 
<M>(c+1)</M>-st term of the upper central series of the group 
<M>U=F/[[[R,F],F]...]</M> (with <M>c</M> copies of <M>F</M> in the 
denominator) where <M>F/R</M> is any free presentation of <M>G</M>. 
This is an invariant of <M>G</M> and we define <M>M^{(c)}(G)</M> 
to be the kernel of the canonical homomorphism 
<M>M^{(c)}(G) \longrightarrow G</M>. For <M>c=1</M> 
the Baer invariant <M>M^(1)(G)</M> is isomorphic to the second 
integral homology <M>H_2(G,Z)</M>.
<P/>
This function requires the NQ package.
</Item>
</Row>

<Row>
<Item>
<Index> Coclass</Index>
<C>
Coclass(G)
</C>
<P/>

Inputs a group <M>G</M> of prime-power order <M>p^n</M> and nilpotency 
class <M>c</M> say. It returns the integer <M>r=n-c</M> .
</Item>
</Row>

<Row>
<Item>
<Index> EpiCentre</Index>
<C>
EpiCentre(G,N)
</C>
<Br/>
<C>
EpiCentre(G)</C>
<P/>

Inputs a finite group <M>G</M> and normal subgroup <M>N</M> and returns 
a subgroup <M>Z^\ast(G,N)</M> of the centre of <M>N</M>. The group 
<M>Z^\ast(G,N)</M> is trivial if and only if there is a crossed module 
<M>d:E \longrightarrow G</M> with <M>N=Image(d)</M> and with <M>Ker(d)</M>
equal to the subgroup of <M>E</M> consisting of those elements on which 
<M>G</M> acts trivially.
<P/>
If no value for <M>N</M> is entered then it is assumed that <M>N=G</M>. 
In this case the group <M>Z^\ast(G,G)</M> is trivial if and only if 
<M>G</M> is isomorphic to a quotient <M>G=E/Z(E)</M> of some group 
<M>E</M> by the centre of <M>E</M>.  
(See also the command <M>UpperEpicentralSeries(G,c)</M>. )
</Item>
</Row>

<Row>
<Item>
<Index> NonabelianExteriorProduct</Index>
<C>
NonabelianExteriorProduct(G,N)
</C>
<P/>

Inputs a finite group <M>G</M> and normal subgroup <M>N</M>. 
It returns a record <M>E</M> with the following components.
<List>
<Item>
<M>E.homomorphism</M> is a group homomorphism <M>µ : (G \wedge N) \longrightarrow G</M> from the nonabelian exterior product <M>(G \wedge N)</M> to <M>G</M>. 
The kernel of <M>µ</M> is the relative Schur multiplier.
</Item>
<Item>
<M>E.pairing(x,y)</M> is a function which inputs an element <M>x</M> in <M>G</M> and an element <M>y</M> in <M>N</M> and returns  <M>(x \wedge y)</M>
in the exterior product <M>(G \wedge N)</M> .
</Item>
</List>

	This function should work for reasonably small nilpotent groups or extremely small non-nilpotent groups.
</Item>
</Row>

<Row>
<Item>
<Index> NonabelianSymmetricKernel</Index>
<C>
NonabelianSymmetricKernel(G)
</C>
<Br/>
<C>
NonabelianSymmetricKernel(G,m)
</C>
<P/>

Inputs a finite or nilpotent infinite group <M>G</M>
and returns the abelian invariants of the 
Fourth homotopy group <M>SG</M>
of the double suspension <M>SSK(G,1)</M> of the Eilenberg-Mac Lane space  <M>K(G,1)</M>.
<P/>
For non-nilpotent groups the implementation of the function
<M>NonabelianSymmetricKernel(G)</M> is far from optimal and will
soon be improved. As a temporary solution to this problem, an optional
second variable <M>m</M> can be set equal to <M>0</M>, and then the
function efficiently returns the abelian invariants of groups <M>A</M> and
<M>B</M> such that there is an exact sequence <M>0 \longrightarrow B \longrightarrow SG \longrightarrow A \longrightarrow 0</M>.
<P/>
Alternatively, the optional second varible <M>m</M> can be set equal to a
positive multiple of the order of the symmetric square <M>(G \tilde\otimes G)</M>.
In this case the function returns the abelian invariants of <M>SG</M>.
This might help when <M>G</M> is solvable but not nilpotent
(especially if the estimated upper bound <M>m</M> is reasonable accurate).
</Item>
</Row>

<Row>
<Item>
<Index> NonabelianSymmetricSquare</Index>
<C>
NonabelianSymmetricSquare(G)
</C>
<Br/>
<C>
NonabelianSymmetricSquare(G,m)
</C>
<P/>

Inputs a finite or nilpotent infinite group <M>G</M>
and returns a record <M>T</M> with the following components.
<List>
<Item>
   <M>T.homomorphism</M> is a group homomorphism
   <M>µ : (G \tilde\otimes G) \longrightarrow G</M>
   from the nonabelian symmetric square of <M>G</M> to <M>G</M>.
   The kernel of <M>µ</M> is isomorphic to the fourth homotopy group of
   the double suspension <M>SSK(G,1)</M> of  an Eilenberg-Mac Lane space.
</Item>
<Item>
<M>T.pairing(x,y)</M> is a function which inputs two elements <M>x, y</M> in
<M>G</M> and returns the tensor <M>(x \otimes y)</M> in the symmetric square
<M>(G \otimes G)</M> .
</Item>
</List>
An optional second varible <M>m</M> can be set equal to a
multiple of the order of the symmetric square <M>(G \tilde\otimes G)</M>.
This might help when <M>G</M> is solvable but not nilpotent
(especially if the estimated upper bound <M>m</M> is reasonable accurate)
as the bound is used in the solvable quotient algorithm.
<P/>
The optional second variable <M>m</M> can also be set equal to <M>0</M>.
In this case the Todd-Coxeter procedure will be used to enumerate the
symmetric square even when <M>G</M> is solvable.
<P/>
This function should work for reasonably small solvable groups or extremely small non-solvable groups.
</Item>
</Row>


<Row>
<Item>
<Index> NonabelianTensorProduct</Index>
<C>
NonabelianTensorProduct(G,N)
</C>
<P/>

Inputs a finite group <M>G</M> and normal subgroup <M>N</M>. 
It returns a record <M>E</M> with the following components.
<List>
<Item>
<M>E.homomorphism</M> is a group homomorphism <M>µ : (G \otimes N ) \longrightarrow G</M> from the nonabelian exterior product <M>(G \otimes N)</M> to <M>G</M>.
</Item>
<Item>
<M>E.pairing(x,y)</M> is a function which inputs an element <M>x</M> in 
<M>G</M> and an element <M>y</M> in <M>N</M> and returns  <M>(x \otimes y)</M>
in the tensor product <M>(G \otimes N)</M> .
</Item>
</List>

	This function should work for reasonably small nilpotent groups or extremely small non-nilpotent groups.
</Item>
</Row>

<Row>
<Item>
<Index> NonabelianTensorSquare</Index>
<C>
NonabelianTensorSquare(G)
</C>
<Br/>
<C>
NonabelianTensorSquare(G,m)
</C>
<P/>

Inputs a finite or nilpotent infinite group <M>G</M> 
and returns a record <M>T</M> with the following components.
<List>
<Item>
   <M>T.homomorphism</M> is a group homomorphism 
   <M>µ : (G \otimes G) \longrightarrow G</M>
   from the nonabelian tensor square of <M>G</M> to <M>G</M>. 
   The kernel of <M>µ</M> is isomorphic to the third homotopy group of 
   the suspension <M>SK(G,1)</M> of  an Eilenberg-Mac Lane space.
</Item>
<Item>
<M>T.pairing(x,y)</M> is a function which inputs two elements <M>x, y</M> in 
<M>G</M> and returns the tensor <M>(x \otimes y)</M> in the tensor square 
<M>(G \otimes G)</M> .
</Item>
</List>
An optional second varible <M>m</M> can be set equal to a 
multiple of the order of the tensor square <M>(G \otimes G)</M>. 
This might help when <M>G</M> is solvable but not nilpotent 
(especially if the estimated upper bound <M>m</M> is reasonable accurate) 
as the bound is used in the solvable quotient algorithm.
<P/>
The optional second variable <M>m</M> can also be set equal to <M>0</M>. 
In this case the Todd-Coxeter procedure will be used to enumerate the 
tensor square even when <M>G</M> is solvable.
<P/>
This function should work for reasonably small solvable groups or extremely small non-solvable groups.
</Item>
</Row>

<Row>
<Item>
<Index> RelativeSchurMultiplier</Index>
<C>
RelativeSchurMultiplier(G,N)
</C>
<P/>

Inputs a finite group <M>G</M> and normal subgroup <M>N</M>. 
It returns the homology group <M>H_2(G,N,Z)</M> 
that fits into the exact sequence
<P/>
<M>\ldots\longrightarrow H_3(G,Z)
  \longrightarrow  H_3(G/N,Z)
  \longrightarrow  H_2(G,N,Z)
  \longrightarrow  H_3(G,Z)
  \longrightarrow  H_3(G/N,Z)
  \longrightarrow  \ldots.
</M>
<P/>
  This function should work for reasonably small nilpotent groups <M>G</M>
  or extremely small non-nilpotent groups.
</Item>
</Row>

<Row>
<Item>
<Index> TensorCentre</Index>
<C>
TensorCentre(G)
</C>
<P/>

Inputs a group <M>G</M> and returns the largest central subgroup <M>N</M>
such that the induced homomorphism of nonabelian tensor squares 
<M>(G \otimes G) \longrightarrow (G/N \otimes G/N)</M>
is an isomorphism. Equivalently, <M>N</M> is the largest central 
subgroup such that <M>\pi_3(SK(G,1)) \longrightarrow  \pi_3(SK(G/N,1))</M>
is injective.
</Item>
</Row>

<Row>
<Item>
<Index> ThirdHomotopyGroupOfSuspensionB</Index>
<C>
ThirdHomotopyGroupOfSuspensionB(G)
</C>
<Br/>
<C>
ThirdHomotopyGroupOfSuspensionB(G,m)
</C>
<P/>

Inputs a finite or nilpotent infinite group <M>G</M> 
and returns the abelian invariants of the third homotopy group <M>JG</M>
of the suspension <M>SK(G,1)</M> of the Eilenberg-Mac Lane space  <M>K(G,1)</M>.
<P/>
For non-nilpotent groups the implementation of the function 
<M>ThirdHomotopyGroupOfSuspensionB(G)</M> is far from optimal and will 
soon be improved. As a temporary solution to this problem, an optional 
second variable <M>m</M> can be set equal to <M>0</M>, and then the 
function efficiently returns the abelian invariants of groups <M>A</M> and 
<M>B</M> such that there is an exact sequence <M>0 \longrightarrow B \longrightarrow JG \longrightarrow A \longrightarrow 0</M>.
<P/>
Alternatively, the optional second varible <M>m</M> can be set equal to a 
positive multiple of the order of the tensor square <M>(G \otimes G)</M>. 
In this case the function returns the abelian invariants of <M>JG</M>. 
This might help when <M>G</M> is solvable but not nilpotent 
(especially if the estimated upper bound <M>m</M> is reasonable accurate).
</Item>
</Row>


<Row>
<Item>
<Index> UpperEpicentralSeries</Index>
<C> 
UpperEpicentralSeries(G,c)
</C>
<P/>

Inputs a nilpotent group <M>G</M> and an integer <M>c</M>. 
It returns the <M>c</M>-th term of the upper epicentral series 
<M>1</M> &tlt; <M> Z_1^\ast(G)</M> &tlt; <M >Z_2^\ast(G)</M> &tlt; <M> \ldots </M>.
<P/>
The upper epicentral series is defined for an arbitrary group <M>G</M>. 
The group <M>Z_c^\ast (G)</M> is the image in <M>G</M> of the <M>c</M>-th 
term <M>Z_c(U)</M> of the upper central series of the group 
<M>U=F/[[[R,F],F] \ldots ]</M> (with <M>c</M> copies of <M>F</M> in the 
denominator) where <M>F/R</M> is any free presentation of <M>G</M>.
<P/>
This functions requires the NQ package.
</Item>
</Row>
</Table>
</Chapter>


