<Chapter><Heading>Basic functionality for homological group theory</Heading> This page covers the functions used in chapter 4 of the book <URL><Link>https://global.oup.com/academic/product/an-invitation-to-computational-homotopy-9780198832980</Link><LinkText>An Invitation to Computational Homotopy</LinkText></URL>. <Section><Heading> Cocycles</Heading> 
<ManSection> <Func Name="CcGroup" Arg="N,f"/> <Description><P/> Inputs a <M>G</M>-outer group <M>N</M> with nonabelian cocycle describing some extension <M>N \rightarrowtail E \twoheadrightarrow G</M> together with standard 2-cocycle <M>f\colon G \times G \rightarrow A</M> where <M>A=Z(N)</M>. It returns the extension group determined by the cocycle <M>f</M>. The group is returned as a cocyclic group. <P/> This function is part of the HAPcocyclic package of functions implemented by Robert F. Morse. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CocycleCondition" Arg="R,n"/> <Description><P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of <M>\mathbb Z</M> and an integer <M>n \ge 1</M>. It returns an integer matrix <M>M</M> with the following property. Let <M>d</M> be the <M>\mathbb ZG</M>-rank of <M>R_n</M>. An integer vector <M>f=[f_1, ... , f_d]</M> then represents a <M>\mathbb ZG</M>-homomorphism <M>R_n \rightarrow \mathbb Z_q</M> which sends the <M>i</M>th generator of <M>R_n</M> to the integer <M>f_i</M> in the trivial <M>\mathbb ZG</M>-module <M>\mathbb Z_q=\mathbb Z/q{\mathbb Z}</M> (where possibly <M>q=0</M>). The homomorphism <M>f</M> is a cocycle if and only if <M>M^tf=0</M> mod <M>q</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="StandardCocycle" Arg="R,f,n"/> <Func Name="StandardCocycle" Arg="R,f,n,q"/> <Description><P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> (with contracting homotopy), a positive integer <M>n</M> and an integer vector <M>f</M> representing an <M>n</M>-cocycle <M>R_n \rightarrow \mathbb Z_q=\mathbb Z/q\mathbb Z</M> where <M>G</M> acts trivially on <M>\mathbb Z_q</M>. It is assumed <M>q=0</M> unless a value for <M>q</M> is entered. The command returns a function <M>F(g_1, ..., g_n)</M> which is the standard cocycle <M>G^n \rightarrow \mathbb Z_q</M> corresponding to <M>f</M>. At present the command is implemented only for <M>n=2</M> or <M>3</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> G-Outer Groups</Heading> 
<ManSection> <Func Name="ActedGroup" Arg="M"/> <Description><P/> <P/> Inputs a <M>G</M>-outer group <M>M</M> corresponding to a homomorphism <M>\alpha\colon G\rightarrow {\rm Out}(N)</M> and returns the group <M>N</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ActingGroup" Arg="M"/> <Description><P/> <P/> Inputs a <M>G</M>-outer group <M>M</M> corresponding to a homomorphism <M>\alpha\colon G\rightarrow {\rm Out}(N)</M> and returns the group <M>G</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Centre" Arg="M"/> <Description><P/> <P/> Inputs a <M>G</M>-outer group <M>M</M> and returns its group-theoretic centre as a <M>G</M>-outer group. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSchurMultiplier.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>6</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="GOuterGroup" Arg="E,N"/> <Func Name="GOuterGroup" Arg=""/> <Description><P/> <P/> Inputs a group <M>E</M> and normal subgroup <M>N</M>. It returns <M>N</M> as a <M>G</M>-outer group where <M>G=E/N</M>. A nonabelian cocycle <M>f\colon G\times G\rightarrow N</M> is attached as a component of the <M>G</M>-Outer group. <P/> The function can be used without an argument. In this case an empty outer group <M>C</M> is returned. The components must be set using <B>SetActingGroup(C,G)</B>, <B>SetActedGroup(C,N)</B> and <B>SetOuterAction(C,alpha)</B>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> <M>G</M>-cocomplexes</Heading> 
<ManSection> <Func Name="CohomologyModule" Arg="C,n"/> <Description><P/> <P/> Inputs a <M>G</M>-cocomplex <M>C</M> together with a non-negative integer <M>n</M>. It returns the cohomology <M>H^n(C)</M> as a <M>G</M>-outer group. If <M>C</M> was constructed from a <M>\mathbb ZG</M>-resolution <M>R</M> by homing to an abelian <M>G</M>-outer group <M>A</M> then, for each <M>x</M> in <M>H:=CohomologyModule(C,n)</M>, there is a function <M>f:=H!.representativeCocycle(x)</M> which is a standard <M>n</M>-cocycle corresponding to the cohomology class <M>x</M>. (At present this is implemented only for <M>n=1,2,3</M>.) <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HomToGModule" Arg="R,A"/> <Description><P/> <P/> Inputs a <M>\mathbb ZG</M>-resolution <M>R</M> and an abelian <M>G</M>-outer group <M>A</M>. It returns the <M>G</M>-cocomplex obtained by applying <M>HomZG( \_ , A)</M>. (At present this function does not handle equivariant chain maps.) <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> </Chapter>