<Chapter><Heading>Basic functionality for <M>\mathbb ZG</M>-resolutions and group cohomology</Heading> This page covers the functions used in chapter 3 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> Resolutions</Heading> 
<ManSection> <Func Name="EquivariantChainMap" Arg="R,S,f"/> <Description> <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of <M>\mathbb Z</M>, a free <M>\mathbb ZQ</M>-resolution <M>S</M> of <M>\mathbb Z</M>, and a group homomorphism <M>f\colon G \rightarrow Q</M>. It returns the induced <M>f</M>-equivariant chain map <M>F\colon R \rightarrow S</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="FreeGResolution" Arg="P,n"/> <Description><P/> Inputs a non-free <M>\mathbb ZG</M>-resolution <M>P_\ast</M> and a positive integer <M>n</M>. It attempts to return <M>n</M> terms of a free <M>\mathbb ZG</M>-resolution of <M>\mathbb Z</M>. However, the stabilizer groups in the non-free resolution must be such that HAP can construct free resolutions with contracting homotopies for them. <P/> The contracting homotopy on the resolution was implemented by Bui Anh Tuan. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDavisComplex.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionBieberbachGroup" Arg="G"/> <Func Name="ResolutionBieberbachGroup" Arg="G,v"/> <Description><P/> <P/> Inputs a torsion free crystallographic group <M>G</M>, also known as a Bieberbach group, represented using <B>AffineCrystGroupOnRight</B> as in the GAP package Cryst. It also optionally inputs a choice of vector <M>v</M> in the Euclidean space <M>\mathbb R^n</M> on which <M>G</M> acts freely. The function returns <M>n+1</M> terms of the free ZG-resolution of <M>\mathbb Z</M> arising as the cellular chain complex of the tessellation of <M>\mathbb R^n</M> by the Dirichlet-Voronoi fundamental domain determined by <M>v</M>. No contracting homotopy is returned with the resolution. <P/> This function is part of the HAPcryst package written by Marc Roeder and thus requires the HAPcryst package to be loaded. <P/> The function requires the use of Polymake software. <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionCubicalCrystGroup" Arg="G,k"/> <Description> <P/> Inputs a crystallographic group <M>G</M> represented using <B>AffineCrystGroupOnRight</B> as in the GAP package <M>Cryst</M> together with an integer <M>k \ge 1</M>. The function tries to find a cubical fundamental domain in the Euclidean space <M>\mathbb R^n</M> on which <M>G</M> acts. If it succeeds it uses this domain to return <M>k+1</M> terms of a free ZG-resolution of <M>\mathbb Z</M>. <P/> This function was written by Bui Anh Tuan. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionFiniteGroup" Arg="G,k"/> <Description><P/> <P/> Inputs a finite group <M>G</M> and an integer <M>k \ge 1</M>. It returns <M>k+1</M> terms of a free ZG-resolution of <M>\mathbb Z</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>../tutorial/chap8.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeriodic.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>20</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionNilpotentGroup" Arg="G,k"/> <Description><P/> <P/> Inputs a nilpotent group <M>G</M> (which can be infinite) and an integer <M>k \ge 1</M>. It returns <M>k+1</M> terms of a free <M>\mathbb ZG</M>-resolution of <M>\mathbb Z</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionNormalSeries" Arg="L,k"/> <Description><P/> <P/> Inputs a a list <M>L</M> consisting of a chain $<M>1=N_1 \le N_2 \le \cdots \le N_n =G</M> of normal subgroups of <M>G</M>, together with an integer <M>k \ge 1</M>. It returns <M>k+1</M> terms of a free ZG-resolution of <M>\mathbb Z</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>7</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionPrimePowerGroup" Arg="G,k"/> <Description><P/> <P/> Inputs a finite <M>p</M>-group <M>G</M> and an integer <M>k \ge 1</M>. It returns <M>k+1</M> terms of a minimal free <M>\mathbb FG</M>-resolution of the field <M>\mathbb F</M> of <M>p</M> elements. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>6</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionSL2Z" Arg="m,k"/> <Description> Inputs positive integers <M>m, n</M> and returns <M>n</M> terms of a free <M>\mathbb ZG</M>-resolution of <M>\mathbb Z</M> for the group <M>G=SL_2(\mathbb Z[1/m])</M>. <P/> This function is joint work with Bui Anh Tuan. <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionSmallGroup" Arg="G,k"/> <Func Name="ResolutionSmallGroup" Arg="G,k"/> <Description> <P/> Inputs a small group <M>G</M> and an integer <M>k \ge 1</M>. It returns <M>k+1</M> terms of a free ZG-resolution of <M>\mathbb Z</M>. <P/> If <M>G</M> is a finitely presented group then up to degree <M>2</M> the resolution coincides with cellular chain complex of the universal cover of the <M>2</M> complex associated to the presentation of <M>G</M>. Thus the boundaries of the generators in degree <M>3</M> provide a generating set for the module of identities of the presentation. <P/> This function was written by Irina Kholodna. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionSubgroup" Arg="R,H"/> <Description><P/> <P/> Inputs a free ZG-resolution of <M>\mathbb Z</M> and a finite index subgroup <M>H \le G</M>. It returns a free ZH-resolution of <M>\mathbb Z</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Algebras <M>\longrightarrow </M> (Co)chain Complexes</Heading> 
<ManSection> <Func Name="LeibnizComplex" Arg="g,n"/> <Description> <P/> Inputs a Leibniz algebra, or Lie algebra, <M>\mathfrak{g}</M> over a ring <M>\mathbb K</M> together with an integer <M>n\ge 0</M>. It returns the first <M>n</M> terms of the Leibniz chain complex over <M>\mathbb K</M>. The complex was implemented by Pablo Fernandez Ascariz. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> <Section><Heading> Resolutions <M>\longrightarrow </M> (Co)chain Complexes</Heading> 
<ManSection> <Func Name="HomToIntegers" Arg="C"/> <Func Name="HomToIntegers" Arg="R"/> <Func Name="HomToIntegers" Arg="F"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> of free abelian groups and returns the cochain complex <M>Hom_{\mathbb Z}(C,\mathbb Z)</M>. <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> in characteristic <M>0</M> and returns the cochain complex <M>Hom_{\mathbb ZG}(R,\mathbb Z)</M>. <P/> Inputs an equivariant chain map <M>F\colon R\rightarrow S</M> of resolutions and returns the induced cochain map <M>Hom_{\mathbb ZG}(S,\mathbb Z) \longrightarrow Hom_{\mathbb ZG}(R,\mathbb Z)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HomToIntegralModule" Arg="R,A"/> <Description><P/> <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> in characteristic <M>0</M> and a group homomorphism <M>A\colon G \rightarrow {\rm GL}_n(\mathbb Z)</M>. The homomorphism <M>A</M> can be viewed as the <M>\mathbb ZG</M>-module with underlying abelian group <M>\mathbb Z^n</M> on which <M>G</M> acts via the homomorphism <M>A</M>. It returns the cochain complex <M>Hom_{\mathbb ZG}(R,A)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TensorWithIntegers" Arg="R"/> <Func Name="TensorWithIntegers" Arg="F"/> <Description><P/> <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of characteristic <M>0</M> and returns the chain complex <M>R \otimes_{\mathbb ZG} {\mathbb Z}</M>. <P/> Inputs an equivariant chain map <M>F\colon R \rightarrow S</M> in characteristic <M>0</M> and returns the induced chain map <M>F\otimes_{\mathbb ZG}\mathbb Z \colon R \otimes_{\mathbb ZG} {\mathbb Z} \longrightarrow S \otimes_{\mathbb ZG} {\mathbb Z}</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAspherical.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoxeter.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDavisComplex.html</Link><LinkText>20</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>21</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>22</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>23</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>24</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>25</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGraphsOfGroups.html</Link><LinkText>26</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>27</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>28</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TensorWithIntegersModP" Arg="C,p"/> <Func Name="TensorWithIntegersModP" Arg="R,p"/> <Func Name="TensorWithIntegersModP" Arg="F,p"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> of characteristic <M>0</M> and a prime integer <M>p</M>. It returns the chain complex <M>C \otimes_{\mathbb Z} {\mathbb Z}_p</M> of characteristic <M>p</M>. <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of characteristic <M>0</M> and a prime integer <M>p</M>. It returns the chain complex <M>R \otimes_{\mathbb ZG} {\mathbb Z}_p</M> of characteristic <M>p</M>. <P/> Inputs an equivariant chain map <M>F\colon R \rightarrow S</M> in characteristic <M>0</M> a prime integer <M>p</M>. It returns the induced chain map <M>F\otimes_{\mathbb ZG}\mathbb Z_p \colon R \otimes_{\mathbb ZG} {\mathbb Z}_p \longrightarrow S \otimes_{\mathbb ZG} {\mathbb Z}_p</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Cohomology rings</Heading> 
<ManSection> <Func Name="AreIsomorphicGradedAlgebras" Arg="A,B"/> <Description><P/> Inputs two freely presented graded algebras <M>A=\mathbb F[x_1, \ldots, x_m]/I</M> and <M>B=\mathbb F[y_1, \ldots, y_n]/J</M> and returns <B>true</B> if they are isomorphic, and <B>false</B> otherwise. This function was implemented by Paul Smith. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="HAPDerivation" Arg="R,I,L"/> <Description><P/> Inputs a polynomial ring <M>R=\mathbb F[x_1,\ldots,x_m]</M> over a field <M>\mathbb F</M> together with a list <M>I</M> of generators for an ideal in <M>R</M> and a list <M>L=[y_1,\ldots,y_m]\subset R</M>. It returns the derivation <M>d\colon E \rightarrow E</M> for <M>E=R/I</M> defined by <M>d(x_i)=y_i</M>. This function was written by Paul Smith. It uses the Singular commutative algebra package. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="HilbertPoincareSeries" Arg="E"/> <Description> Inputs a presentation <M>E=\mathbb F[x_1,\ldots,x_m]/I</M> of a graded algebra and returns its Hilbert–Poincaré series. This function was written by Paul Smith and uses the Singular commutative algebra package. It is essentially a wrapper for Singular's Hilbert–Poincaré series. <P/><B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HomologyOfDerivation" Arg="d"/> <Description><P/> Inputs a derivation <M>d\colon E \rightarrow E</M> on a quotient <M>E=R/I</M> of a polynomial ring <M>R=\mathbb F[x_1,\ldots,x_m]</M> over a field <M>\mathbb F</M>. It returns a list <M>[S,J,h]</M> where <M>S</M> is a polynomial ring and <M>J</M> is a list of generators for an ideal in <M>S</M> such that there is an isomorphism <M>\alpha\colon S/J \rightarrow \ker d/{\rm im~} d</M>. This isomorphism lifts to the ring homomorphism <M>h\colon S \rightarrow \ker d</M>. This function was written by Paul Smith. It uses the Singular commutative algebra package. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="IntegralCohomologyGenerators" Arg="R,n"/> <Description><P/> Inputs at least <M>n+1</M> terms of a free <M>\mathbb ZG</M>-resolution of <M>\mathbb Z</M> and the integer <M> n \ge 1</M>. It returns a minimal list of cohomology classes in <M>H^n(G,\mathbb Z)</M> which, together with all cup products of lower degree classes, generate the group <M>H^n(G,\mathbb Z)</M> . (Let <M>a_i</M> be the <M>i</M>-th canonical generator of the <M>d</M>-generator abelian group <M>H^n(G,Z)</M>. The cohomology class <M>n_1a_1 + ... +n_da_d</M> is represented by the integer vector <M>u=(n_1, ..., n_d)</M>. ) <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="LHSSpectralSequence" Arg="G,N,r"/> <Description><P/> Inputs a finite <M>2</M>-group <M>G</M>, and normal subgroup <M>N</M> and an integer <M>r</M>. It returns a list of length <M>r</M> whose <M>i</M>-th term is a presentation for the <M>i</M>-th page of the Lyndon-Hochschild-Serre spectral sequence. This function was written by Paul Smith. It uses the Singular commutative algebra package. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="LHSSpectralSequenceLastSheet" Arg="G,N"/> <Description><P/> Inputs a finite <M>2</M>-group <M>G</M> and normal subgroup <M>N</M>. It returns presentation for the <M>E_\infty</M> page of the Lyndon-Hochschild-Serre spectral sequence. This function was written by Paul Smith. It uses the Singular commutative algebra package. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ModPCohomologyGenerators" Arg="G,n"/> <Func Name="ModPCohomologyGenerators" Arg="R"/> <Description><P/> Inputs either a <M>p</M>-group <M>G</M> and positive integer <M>n</M>, or else <M>n+1</M> terms of a minimal <M>\mathbb FG</M>-resolution <M>R</M> of the field <M>\mathbb F</M> of <M>p</M> elements. It returns a pair whose first entry is a minimal list of homogeneous generators for the cohomology ring <M>A=H^\ast(G,\mathbb F)</M> modulo all elements in degree greater than <M>n</M>. The second entry of the pair is a function <B>deg</B> which, when applied to a minimal generator, yields its degree. WARNING: the following rule must be applied when multiplying generators <M>x_i</M> together. Only products of the form <M>x_1*(x_2*(x_3*(x_4*...)))</M> with <M>deg(x_i) \le deg(x_{i+1})</M> should be computed (since the <M>x_i</M> belong to a structure constant algebra with only a partially defined structure constants table). <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ModPCohomologyRing" Arg="R"/> <Func Name="ModPCohomologyRing" Arg="R,level"/> <Func Name="ModPCohomologyRing" Arg="G,n"/> <Func Name="ModPCohomologyRing" Arg="G,n,level"/> <Description><P/> Inputs either a <M>p</M>-group <M>G</M> and positive integer <M>n</M>, or else <M>n</M> terms of a minimal <M>\mathbb FG</M>-resolution <M>R</M> of the field <M>\mathbb F</M> of <M>p</M> elements. It returns the cohomology ring <M>A=H^\ast(G,\mathbb F)</M> modulo all elements in degree greater than <M>n</M>. The ring is returned as a structure constant algebra <M>A</M>. The ring <M>A</M> is graded. It has a component <B>A!.degree(x)</B> which is a function returning the degree of each (homogeneous) element <M>x</M> in <B>GeneratorsOfAlgebra(A)</B>. An optional input variable <M>"level"</M> can be set to one of the strings <M>"medium"</M> or <M>"high"</M>. These settings determine parameters in the algorithm. The default setting is <M>"medium"</M>. When <M>"level"</M> is set to <M>"high"</M> the ring <M>A</M> is returned with a component <B>A!.niceBasis</B>. This component is a pair <M>[Coeff,Bas]</M>. Here <M>Bas</M> is a list of integer lists; a "nice" basis for the vector space <M>A</M> can be constructed using the command <B>List(Bas,x->Product(List(x,i->Basis(A)[i]))</B>. The coefficients of the canonical basis element <B>Basis(A)[i]</B> are stored as <B>Coeff[i]</B>. If the ring <M>A</M> is computed using the setting <M>"level"="medium"</M> then the component <B>A!.niceBasis</B> can be added to <M>A</M> using the command <B>A:=ModPCohomologyRing_part_2(A)</B>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Mod2CohomologyRingPresentation" Arg="G"/> <Func Name="Mod2CohomologyRingPresentation" Arg="G,n"/> <Func Name="Mod2CohomologyRingPresentation" Arg="A"/> <Func Name="Mod2CohomologyRingPresentation" Arg="R"/> <Description><P/> When applied to a finite <M>2</M>-group <M>G</M> this function returns a presentation for the mod-<M>2</M> cohomology ring <M>H^\ast(G,\mathbb F)</M>. The Lyndon-Hochschild-Serre spectral sequence is used to prove that the presentation is complete. When the function is applied to a <M>2</M>-group G and positive integer <M>n</M> the function first constructs <M>n+1</M> terms of a free <M>\mathbb FG</M>-resolution <M>R</M>, then constructs the finite-dimensional graded algebra <M>A=H^{(\ast \le n)}(G,\mathbb F)</M>, and finally uses <M>A</M> to approximate a presentation for <M>H^*(G,\mathbb F)</M>. For "sufficiently large" <M>n</M> the approximation will be a correct presentation for <M>H^\ast(G,\mathbb F)</M>. Alternatively, the function can be applied directly to either the resolution <M>R</M> or graded algebra <M>A</M>. This function was written by Paul Smith. It uses the Singular commutative algebra package to handle the Lyndon-Hochschild-Serre spectral sequence. <P/><B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Group Invariants</Heading> 
<ManSection> <Func Name="GroupCohomology" Arg="G,k"/> <Func Name="GroupCohomology" Arg="G,k,p"/> <Description><P/> <P/> Inputs a group <M>G</M> and integer <M>k \ge 0</M>. The group <M>G</M> should either be finite or else lie in one of a range of classes of infinite groups (such as nilpotent, crystallographic, Artin etc.). The function returns the list of abelian invariants of <M>H^k(G,\mathbb Z)</M>. <P/> If a prime <M>p</M> is given as an optional third input variable then the function returns the list of abelian invariants of <M>H^k(G,\mathbb Z_p)</M>. In this case each abelian invariant will be equal to <M>p</M> and the length of the list will be the dimension of the vector space <M>H^k(G,\mathbb Z_p)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="GroupHomology" Arg="G,k"/> <Func Name="GroupHomology" Arg="G,k,p"/> <Description><P/> <P/> Inputs a group <M>G</M> and integer <M>k \ge 0</M>. The group <M>G</M> should either be finite or else lie in one of a range of classes of infinite groups (such as nilpotent, crystallographic, Artin etc.). The function returns the list of abelian invariants of <M>H_k(G,\mathbb Z)</M>. <P/> If a prime <M>p</M> is given as an optional third input variable then the function returns the list of abelian invariants of <M>H_k(G,\mathbb Z_p)</M>. In this case each abelian invariant will be equal to <M>p</M> and the length of the list will be the dimension of the vector space <M>H_k(G,\mathbb Z_p)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLie.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PrimePartDerivedFunctor" Arg="G,R,A,k"/> <Description><P/> <P/> Inputs a group <M>G</M>, an integer <M>k \ge 0</M>, at least <M>k+1</M> terms of a free <M>\mathbb ZP</M>-resolution of <M>\mathbb Z</M> for <M>P</M> a Sylow <M>p</M>-subgroup of <M>G</M>. A function such as <B>A=TensorWithIntegers</B> is also entered. The abelian invariants of the <M>p</M>-primary part <M>H_k(G,A)_{(p)}</M> of the homology with coefficients in <M>A</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PoincareSeries" Arg="G,n"/> <Func Name="PoincareSeries" Arg="G"/> <Func Name="PoincareSeries" Arg="R,n"/> <Func Name="PoincareSeries" Arg="L,n"/> <Description><P/> <P/> Inputs a finite <M>p</M>-group <M>G</M> and a positive integer <M>n</M>. It returns a quotient of polynomials <M>f(x)=P(x)/Q(x)</M> whose expansion has coefficient of <M>x^k</M> equal to the rank of the vector space <M>H_k(G,\mathbb F_p)</M> for all <M>k</M> in the range <M>1 \le k \le n</M>. (The second input variable can be omitted, in which case the function tries to choose a `reasonable' value for <M>n</M>. For 2-groups the function <B>PoincareSeriesLHS(G)</B> can be used to produce an <M>f(x)</M> that is correct in all degrees.) In place of the group <M>G</M> the function can also input (at least <M>n</M> terms of) a minimal mod-<M>p</M> resolution <M>R</M> for <M>G</M>. Alternatively, the first input variable can be a list <M>L</M> of integers. In this case the coefficient of <M>x^k</M> in <M>f(x)</M> is equal to the <M>(k+1)</M>st term in the list. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeriesII.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PoincareSeries" Arg="G,n"/> <Func Name="PoincareSeries" Arg="G"/> <Func Name="PoincareSeries" Arg="R,n"/> <Func Name="PoincareSeries" Arg="L,n"/> <Description><P/> <P/> Inputs a finite <M>p</M>-group <M>G</M> and a positive integer <M>n</M>. It returns a quotient of polynomials <M>f(x)=P(x)/Q(x)</M> whose expansion has coefficient of <M>x^k</M> equal to the rank of the vector space <M>H_k(G,\mathbb F_p)</M> for all <M>k</M> in the range <M>1 \le k \le n</M>. (The second input variable can be omitted, in which case the function tries to choose a `reasonable' value for <M>n</M>. For 2-groups the function <B>PoincareSeriesLHS(G)</B> can be used to produce an <M>f(x)</M> that is correct in all degrees.) In place of the group <M>G</M> the function can also input (at least <M>n</M> terms of) a minimal mod-<M>p</M> resolution <M>R</M> for <M>G</M>. Alternatively, the first input variable can be a list <M>L</M> of integers. In this case the coefficient of <M>x^k</M> in <M>f(x)</M> is equal to the <M>(k+1)</M>st term in the list. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeriesII.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RankHomologyPGroup" Arg="G,P,n"/> <Description><P/> Inputs a <M>p</M>-group <M>G</M>, a rational function <M>P</M> representing the Poincaré series of the mod-<M>p</M> cohomology of <M>G</M> and a positive integer <M>n</M>. It returns the minimum number of generators for the finite abelian <M>p</M>-group <M>H_n(G,\mathbb Z)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> <M>\mathbb F_p</M>-modules</Heading> 
<ManSection> <Func Name="GroupAlgebraAsFpGModule" Arg="G"/> <Description><P/> <P/> Inputs a finite <M>p</M>-group <M>G</M> and returns the modular group algebra <M>\mathbb F_pG</M> in the form of an <M>\mathbb F_pG</M>-module. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="Radical" Arg="M"/> <Description><P/> <P/> Inputs an <M>\mathbb F_pG</M>-module and returns its radical. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="RadicalSeries" Arg="M"/> <Func Name="RadicalSeries" Arg="R"/> <Description><P/> <P/> Inputs an <M>\mathbb F_pG</M>-module <M>M</M> and returns its radical series as a list of <M>\mathbb F_pG</M>-modules. <P/> Inputs a free <M>\mathbb F_pG</M>-resolution R and returns the filtered chain complex <M>\cdots Rad_2(\mathbb F_pG)R \le Rad_1(\mathbb F_pG)R \le R</M>. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> </Chapter>