<Chapter><Heading> Commutator and nonabelian tensor computations</Heading> <Section><Heading> &nbsp;</Heading> 
<ManSection> <Func Name="BaerInvariant" Arg="G,c"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutSchurMultiplier.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="BogomolovMultiplier" Arg="G"/> <Func Name="BogomolovMultiplier" Arg="G, str"/> <Description> <P/> Inputs a finite group <M>G</M> and an optional string str="standard" or str="homology" or str="tensor". It returns the quotient <M>H_2(G,Z)/K(G)</M> of the second integral homology of <M>G</M> where <M>K(G)</M> is the subgroup of <M>H_2(G,Z)</M> generated by the images of all homomorphisms <M>H_2(A,Z) \rightarrow H_2(G,Z)</M> induced from abelian subgroups of <M>G</M>. <P/> Three slight variants of the implementation are available. The default "standard" implementation seems to work best on average. But for some groups the "homology" implementation or the "tensor" implementation will be faster. The variants are called by including the appropriate string as the second argument. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutBogomolov.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Bogomology" Arg="G,n"/> <Description> <P/> Inputs a finite group <M>G</M> and positive integer <M>n</M>, and returns the quotient <M>H_n(G,Z)/K(G)</M> of the degree <M>n</M> integral homology of <M>G</M> where <M>K(G)</M> is the subgroup of <M>H_n(G,Z)</M> generated by the images of all homomorphisms <M>H_n(A,Z) \rightarrow H_n(G,Z)</M> induced from abelian subgroups of <M>G</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutBogomolov.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="Coclass"/> <Description> <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> . <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="EpiCentre" Arg="G,N"/> <Func Name="EpiCentre" Arg="G"/> <Description> <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>. ) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutSchurMultiplier.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="NonabelianExteriorProduct" Arg="G,N"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutNonabelian.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="NonabelianSymmetricKernel" Arg="G"/> <Func Name="NonabelianSymmetricKernel" Arg="G,m"/> <Description> <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). <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="NonabelianSymmetricSquare" Arg="G"/> <Func Name="NonabelianSymmetricSquare" Arg="G,m"/> <Description> <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. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="NonabelianTensorProduct" Arg="G,N"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutNonabelian.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="NonabelianTensorSquare" Arg="G"/> <Func Name="NonabelianTensorSquare" Arg="G,m"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RelativeSchurMultiplier" Arg="G,N"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutSchurMultiplier.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TensorCentre" Arg="G"/> <Description> <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. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ThirdHomotopyGroupOfSuspensionB" Arg="G"/> <Func Name="ThirdHomotopyGroupOfSuspensionB" Arg="G,m"/> <Description> <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). <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="UpperEpicentralSeries" Arg="G,c"/> <Description> <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. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutSchurMultiplier.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> </Chapter>