<Chapter><Heading>Resolutions of the ground ring</Heading> <Section><Heading> &nbsp;</Heading> 
<ManSection> <Func Name="TietzeReducedResolution" Arg="R"/> <Description> <P/> Inputs a <M>\mathbb ZG</M>-resolution <M>R</M> and returns a <M>\mathbb ZG</M>-resolution <M>S</M> which is obtained from <M>R</M> by applying "Tietze like operations" in each dimension. The hope is that <M>S</M> has fewer free generators than <M>R</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap13.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionArithmeticGroup" Arg="P,n"/> <Description> <P/> Inputs a positive integer <M>n</M> and a string <M>P</M> equal to one of the following: <Br/><Br/> "SL(2,Z)" , "SL(3,Z)" , "PGL(3,Z[i])" , "PGL(3,Eisenstein_Integers)" , "PSL(4,Z)" , "PSL(4,Z)_b" , "PSL(4,Z)_c" , "PSL(4,Z)_d" , "Sp(4,Z)" <Br/><Br/> or the string <Br/><Br/> "GL(2,O(-d))" <Br/><Br/> for d=1, 2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 26, 43 <Br/><Br/> or the string <Br/><Br/> "SL(2,O(-d))" <Br/><Br/> for d=2, 3, 5, 7, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 26, 43, 67, 163 <Br/><Br/> or the string <Br/><Br/> "SL(2,O(-d))_a" <Br/><Br/> for d=2, 7, 11, 19. <Br/><Br/> It returns <M>n</M> terms of a free ZG-resolution for the group <M>G</M> described by the string. Here O(-d) denotes the ring of integers of Q(sqrt(-d)) and subscripts _a, _b , _c , _d denote alternative non-free ZG-resolutions for a given group G.<Br/><Br/> Data for the first list of resolutions was provided provided by <B>Mathieu Dutour</B>. Data for GL(2,O(-d)) was provided by <B>Sebastian Schoenennbeck</B>. Data for SL(2,O(-d)) was provided by<B>Sebastian Schoennenbeck</B> for d &lt;= 26 and by <B>Alexander Rahm</B> for d>26 and for the alternative complexes. <P/><B>Examples:</B> <URL><Link>../tutorial/chap13.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="FreeGResolution" Arg="P,n"/> <Func Name="FreeGResolution" Arg="P,n,p"/> <Description> <P/> Inputs a non-free <M>ZG</M>-resolution <M>P</M> with finite stabilizer groups, and a positive integer <M>n</M>. It returns a free <M>ZG</M>-resolution of length equal to the minimum of n and the length of <M>P</M>. If one requires only a mod <M>p</M> resolution then the prime <M>p</M> can be entered as an optional third argument. <P/> The free resolution is returned without a contracting homotopy. <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="ResolutionGTree" Arg="P,n"/> <Description> <P/> Inputs a non-free <M>ZG</M>-resolution <M>P</M> of dimension 1 (i.e. a G-tree) with finite stabilizer groups, and a positive integer <M>n</M>. It returns a free <M>ZG</M>-resolution of length equal to n. <P/> If <M>P</M> has a contracting homotopy then the free resolution is returned with a contracting homotopy. <P/> This function was written by <B> Bui Anh Tuan</B>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionSL2Z" Arg="p,n"/> <Description> <P/> Inputs positive integers <M>m, n</M> and returns <M>n</M> terms of a <M>ZG</M>-resolution for the group <M>G=SL(2,Z[1/m])</M> . <P/> <P/> This function is joint work with <B>Bui Anh Tuan</B>. <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="ResolutionAbelianGroup" Arg="L,n"/> <Func Name="ResolutionAbelianGroup" Arg="G,n"/> <Description> <P/> Inputs a list <M>L:=[m_1,m_2, ..., m_d]</M> of nonnegative integers, and a positive integer <M>n</M>. It returns <M>n</M> terms of a <M>{\mathbb Z}G</M>-resolution for the abelian group <M>G=Z_{L[1]}+Z_{L[2]}+···+{Z_L[d]}</M> . <P/> If <M>G</M> is finite then the first argument can also be the abelian group <M>G</M> itself. <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionAlmostCrystalGroup" Arg="G,n"/> <Description> <P/> Inputs a positive integer <M>n</M> and an almost crystallographic pcp group <M>G</M>. It returns <M>n</M> terms of a free <M>ZG</M>-resolution. (A group is almost crystallographic if it is nilpotent-by-finite and has no non-trivial finite normal subgroup. Such groups can be constructed using the ACLIB package.) <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionAlmostCrystalQuotient" Arg="G,n,c"/> <Func Name="ResolutionAlmostCrystalQuotient" Arg="G,n,c,false"/> <Description> <P/> An almost crystallographic group <M>G</M> is an extension of a finite group <M>P</M> by a nilpotent group <M>T</M>, and has no non-trivial finite normal subgroup. We define the relative lower central series by setting <M>T_1=T</M> and <M>T_{i+1}=[T_i,G]</M>.<P/> This function inputs an almost crystallographic group <M>G</M> together with positive integers <M>n</M> and <M>c</M>. It returns <M>n</M> terms of a free <M>ZQ</M>-resolution <M>R</M> for the group <M>Q=G/T_c</M> .<P/> In addition to the usual components, the resolution <M>R</M> has the component <M>R.quotientHomomorphism</M> which gives the quotient homomorphism <M>G \longrightarrow Q </M>.<P/> If a fourth optional variable is set equal to "false" then the function omits to test whether <M>Q</M> is finite and a "more canonical" resolution is constructed. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionArtinGroup" Arg="D,n"/> <Description> <P/> Inputs a Coxeter diagram <M>D</M> and an integer <M>n>1</M>. It returns <M>n</M> terms of a free <M>ZG</M>-resolution <M>R</M> where <M>G</M> is the Artin monoid associated to <M>D</M>. It is conjectured that <M>R</M> is also a free resolution for the Artin group <M>G</M>. The conjecture is known to hold in <URL Text="certain cases">../www/SideLinks/About/aboutArtinGroups.html</URL>.<P/> <M>G=R.group</M> is infinite and returned as a finitely presented group. The list <M>R.elts</M> is a partial listing of the elements of <M>G</M> which grows as <M>R</M> is used. Initially <M>R.elts</M> is empty and then, any time the boundary of a resolution generator is called, <M>R.elts</M> is updated to include elements of <M>G</M> involved in the boundary.<P/> The contracting homotopy on <M>R</M> has not yet been implemented! Furthermore, the group <M>G</M> is currently returned only as a finitely presented group (without any method for solving the word problem). <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;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionAsphericalPresentation" Arg="F,R,n"/> <Description> <P/> Inputs a free group <M>F</M>, a set <M>R</M> of words in <M>F</M> which constitute an aspherical presentation for a group <M>G</M>, and a positive integer <M>n</M>. (Asphericity can be a difficult property to verify. The function <M>IsAspherical(F,R)</M> could be of help.)<P/> The function returns n terms of a free <M>ZG</M>-resolution <M>R</M> which has generators in dimensions &tlt; 3 only. No contracting homotopy on <M>R</M> will be returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap3.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAspherical.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionBieberbachGroup" Arg=" G "/> <Func Name="ResolutionBieberbachGroup" Arg=" G, v "/> <Description> <P/> Inputs a torsion free crystallographic group <M>G</M>, also known as a Bieberbach group, represented using AffineCrystGroupOnRight as in the GAP package Cryst. It also optionally inputs a choice of vector <M>v</M> in the euclidean space <M>R^n</M> on which <M>G</M> acts freely. The function returns <M>n+1</M> terms of the free <M>ZG</M>-resolution of <M>Z</M> arising as the cellular chain complex of the tesselation of <M>R^n</M> by the Dirichlet-Voronoi fundamental domain determined by <M>v</M>. <P/> This function is part of the HAPcryst package written by <B>Marc Roeder</B> 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="ResolutionCoxeterGroup" Arg="D,n"/> <Description> <P/> Inputs a Coxeter diagram <M>D</M> and an integer <M>n>1</M>. It returns <M>k</M> terms of a free <M>ZG</M>-resolution <M>R</M> where <M>G</M> is the Coxeter group associated to <M>D</M>. Here <M>k</M> is the maximum of n and the number of vertices in the Coxeter diagram. At present the implementation is only for finite Coxeter groups and the group <M>G</M> is returned as a permutation group. The contracting homotopy on <M>R</M> has not yet been implemented! <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoxeter.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionDirectProduct" Arg="R,S"/> <Func Name="ResolutionDirectProduct" Arg="R,S,str"/> <Description> <P/> Inputs a <M>ZG</M>-resolution <M>R</M> and <M>ZH</M>-resolution <M>S</M>. It outputs a <M>ZD</M>-resolution for the direct product <M>D=G x H</M>.<P/> If <M>G</M> and <M>H</M> lie in a common group <M>K</M>, and if they commute and have trivial intersection, then an optional third variable <M>str</M>="internal" can be used. This will force <M>D</M> to be the subgroup <M>GH</M> in <M>K</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionExtension" Arg="g,R,S"/> <Func Name="ResolutionExtension" Arg="g,R, S, str"/> <Func Name="ResolutionExtension" Arg="g,R,S,str,GmapE"/> <Description> <P/> Inputs a surjective group homomorphism <M>g:E \longrightarrow G</M> with kernel <M>N</M>. It also inputs a <M>ZN</M>-resolution <M>R</M> and a <M>ZG</M>-resolution <M>S</M>. It returns a <M>ZE</M>-resolution. The groups <M>E</M> and <M>G</M> can be infinite.<P/> If an optional fourth argument <M>str</M>is set equal to "TestFiniteness" then the groups <M>N</M> and <M>G</M> will be tested to see if they are finite. If they are finite then some speed saving routines will be invoked. One can also set <M>str</M>="NoTest".<P/> If the homomorphism <M>g</M> is such that the GAP function <M>PreImagesElement(g,x)</M> doesn't work, then a function <M>GmapE()</M> should be included as a fifth input. For any <M>x</M> in <M>G</M> this function should return an element <M>GmapE(x)</M> in <M>E</M> which gets mapped onto <M>x</M> by <M>g</M>.<P/> The contracting homotopy on the <M>ZE</M>-resolution has not yet been fully implemented for infinite groups! <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionFiniteDirectProduct" Arg="R,S"/> <Func Name="ResolutionFiniteDirectProduct" Arg="R,S, str"/> <Description> <P/> Inputs a <M>ZG</M>-resolution <M>R</M> and <M>ZH</M>-resolution <M>S</M> where <M>G</M> and <M>H</M> are finite groups. It outputs a <M>ZD</M>-resolution for the direct product <M>D=G×H</M>.<P/> If <M>G</M> and <M>H</M> lie in a common group <M>K</M>, and if they commute and have trivial intersection, then an optional third variable <M>str</M>="internal" can be used. This will force <M>D</M> to be the subgroup <M>GH</M> in <M>K</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionFiniteExtension" Arg="gensE,gensG,R,n"/> <Func Name="ResolutionFiniteExtension" Arg="gensE,gensG,R,n,true"/> <Func Name="ResolutionFiniteExtension" Arg="gensE,gensG,R,n,false,S"/> <Description> <P/> Inputs: a set <M>gensE</M> of generators for a finite group <M>E</M>; a set <M>gensG</M> equal to the image of <M>gensE</M> in a quotient group <M>G</M> of <M>E</M>; a <M>ZG</M>-resolution <M>R</M> up to dimension at least <M>n</M>; a positive integer <M>n</M>. It uses the <M>TwistedTensorProduct()</M> construction to return <M>n</M> terms of a <M>ZE</M>-resolution.<P/> The function has an optional fourth argument which, when set equal to "true", invokes tietze reductions in the construction of a resolution for the kernel of <M>E \longrightarrow G</M>.<P/> If a <M>ZN</M>-resolution <M>S</M> is available, where <M>N</M> is the kernel of the quotient <M>E \longrightarrow G</M>, then this can be incorporated into the computations using an optional fifth argument. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionFiniteGroup" Arg="gens,n"/> <Func Name="ResolutionFiniteGroup" Arg="gens,n,true"/> <Func Name="ResolutionFiniteGroup" Arg="gens,n,false,p"/> <Func Name="ResolutionFiniteGroup" Arg="gens,n,false,0,str"/> <Description> <P/> Inputs a set <M>gens</M> of generators for a finite group <M>G</M> and a positive integer <M>n</M>. It outputs <M>n</M> terms of a <M>ZG</M>-resolution.<P/> The function has an optional third argument which, when set equal to <M>true</M>, invokes tietze reductions in the construction of the resolution. <P/> The function has an optional fourth argument which, when set equal to a prime <M>p</M>, records the fact that the resolution will only be used for mod <M>p</M> calculations. This could speed up subsequent constructions. <P/> The function has an optional fifth argument <M>str</M> which, when set equal to "extendible", returns a resolution whose length can be increased using the command R!.extend() . <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="ResolutionFiniteSubgroup" Arg="R,K"/> <Func Name="ResolutionFiniteSubgroup" Arg="R,gensG,gensK"/> <Description> <P/> Inputs a <M>ZG</M>-resolution for a finite group <M>G</M> and a subgroup <M>K</M> of index <M>|G:K|</M>. It returns a free <M>ZK</M>-resolution whose <M>ZK</M>-rank is <M>|G:K|</M> times the <M>ZG</M>-rank in each dimension.<P/> Generating sets <M>gensG</M>, <M>gensK</M> for <M>G</M> and <M>K</M> can also be input to the function (though the method does not depend on a choice of generators).<P/> This <M>ZK</M>-resolution is not reduced. ie. it has more than one generator in dimension <M>0</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.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/aboutCoxeter.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionGraphOfGroups" Arg="D,n"/> <Func Name="ResolutionGraphOfGroups" Arg="D,n,L"/> <Description> <P/> Inputs a graph of groups <M>D</M> and a positive integer <M>n</M>. It returns <M>n</M> terms of a free <M>ZG</M>-resolution for the fundamental group <M>G</M> of <M>D</M>.<P/> An optional third argument <M>L=[R_1 , \ldots , R_t]</M> can be used to list (in any order) free resolutions for some/all of the vertex and edge groups in <M>D</M>. If for some vertex or edge group no resolution is listed in <M>L</M> then the function <M>ResolutionFiniteGroup()</M> will be used to try to construct the resolution. <P/> The <M>ZG</M>-resolution is usually not reduced. i.e. it has more than one generator in dimension 0.<P/> The contracting homotopy on the <M>ZG</M>-resolution has not yet been implemented! Furthermore, the group <M>G</M> is currently returned only as a finitely presented group (without any method for solving the word problem). <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;, <URL><Link>../www/SideLinks/About/aboutGraphsOfGroups.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionNilpotentGroup" Arg="G,n"/> <Func Name="ResolutionNilpotentGroup" Arg="G,n,str"/> <Description> <P/> Inputs a nilpotent group <M>G</M> and positive integer <M>n</M>. It returns <M>n</M> terms of a free <M>ZG</M>-resolution. The resolution is computed using a divide-and-conquer technique involving the lower central series.<P/> This function can be applied to infinite groups <M>G</M>. For finite groups the function <M>ResolutionNormalSeries()</M> probably gives better results.<P/> If an optional third argument <M>str</M> is set equal to "TestFiniteness" then the groups <M>N</M> and <M>G</M> will be tested to see if they are finite. If they are finite then some speed saving routines will be invoked.<P/> The contracting homotopy on the <M>ZE</M>-resolution has not yet been fully implemented for infinite groups. <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,n"/> <Func Name="ResolutionNormalSeries" Arg="L,n,true"/> <Func Name="ResolutionNormalSeries" Arg="L,n,false,p"/> <Description> <P/> Inputs a positive integer <M>n</M> and a list <M>L = [L_1 , ..., L_k]</M> of normal subgroups <M>L_i</M> of a finite group <M>G</M> satisfying <M>G = L_1</M> &tgt; <M>L2</M> &tgt;<M> \ldots </M> &tgt;<M> L_k</M>. Alternatively, <M>L = [gensL_1, ... gensL_k]</M> can be a list of generating sets for the <M>L_i</M> (and these particular generators will be used in the construction of resolutions). It returns a <M>ZG</M>-resolution by repeatedly using the function <M>ResolutionFiniteExtension()</M>.<P/> The function has an optional third argument which, if set equal to true, invokes tietze reductions in the construction of resolutions.<P/> The function has an optional fourth argument which, if set equal to p &tgt; 0, produces a resolution which is only valid for mod <M>p</M> calculations. <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="P,n"/> <Func Name="ResolutionPrimePowerGroup" Arg="G,n,p"/> <Description> <P/> Inputs a <M>p</M>-group <M>P</M> and integer <M>n</M>&tgt;<M>0</M>. It uses GAP's standard linear algebra functions over the field <M>F</M> of p elements to construct a free <M>FP</M>-resolution for mod <M>p</M> calculations only. The resolution is minimal - meaning that the number of generators of <M>R_n</M> equals the rank of <M>H_n(P,F)</M>. <P/> The function can also be used to obtain a free non-minimal <M>FG</M>-resolution of a small nilpotent group <M>G</M> of non-prime-power order. In this case the prime <M>p</M> must be entered as the third input variable. (In the non-prime-power nilpotent case the algorithm is naive and not very good.) <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="ResolutionSmallFpGroup" Arg="G,n"/> <Func Name="ResolutionSmallFpGroup" Arg="G,n,p"/> <Description> <P/> Inputs a small finitely presented group <M>G</M> and an integer <M>n</M>&tgt;<M>0</M>. It returns <M>n</M> terms of a <M>ZG</M>-resolution which, in dimensions 1 and 2, corresponds to the given presentation for <M>G</M>. The method returns no contracting homotopy for the resolution.<P/> The function has an optional fourth argument which, when set equal to a prime <M>p</M>, records the fact that the resolution will only be used for mod <M>p</M> calculations. This could speed up subsequent constructions. <P/> This function was written by Irina Kholodna. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutPeriodic.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ResolutionSubgroup" Arg="R,K"/> <Description> <P/> Inputs a <M>ZG</M>-resolution for an (infinite) group <M>G</M> and a subgroup <M>K</M> of finite index <M>|G:K|</M>. It returns a free <M>ZK</M>-resolution whose <M>ZK</M>-rank is <M>|G:K|</M> times the <M>ZG</M>-rank in each dimension.<P/> If <M>G</M> is finite then the function <M>ResolutionFiniteSubgroup(R,G,K)</M> will probably work better. In particular, resolutions from this function probably won't work with the function <M>EquivariantChainMap()</M>. This <M>ZK</M>-resolution is not reduced. i.e. it has more than one generator in dimension 0. <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> 
<ManSection> <Func Name="ResolutionSubnormalSeries" Arg="L,n"/> <Description> <P/> Inputs a positive integer n and a list <M>L = [L_1 , \ldots , L_k]</M> of subgroups <M>L_i</M> of a finite group <M>G=L_1</M> such that <M>L_1</M> &tgt; <M>L2 \ldots </M> &tgt; <M>L_k</M> is a subnormal series in <M>G</M> (meaning that each <M>L_{i+1}</M> must be normal in <M>L_i</M>). It returns a <M>ZG</M>-resolution by repeatedly using the function <M>ResolutionFiniteExtension()</M>.<P/> If <M>L</M> is a series of normal subgroups in <M>G</M> then the function <M>ResolutionNormalSeries(L,n)</M> will possibly work more efficiently. <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TwistedTensorProduct" Arg="R,S,EhomG,GmapE,NhomE,NEhomN,EltsE,Mult,InvE"/> <Description> <P/> Inputs a <M>ZG</M>-resolution <M>R</M>, a <M>ZN</M>-resolution <M>S</M>, and other data relating to a short exact sequence <M>1 \longrightarrow N \longrightarrow E \longrightarrow G \longrightarrow 1</M>. It uses a perturbation technique of CTC Wall to construct a <M>ZE</M>-resolution <M>F</M>. Both <M>G</M> and <M>N</M> could be infinite. The "length" of <M>F</M> is equal to the minimum of the "length"s of <M>R</M> and <M>S</M>. The resolution <M>R</M> needs no contracting homotopy if no such homotopy is requied for <M>F</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ConjugatedResolution" Arg="R,x"/> <Description> <P/> Inputs a ZG-resoluton <M>R</M> and an element <M>x</M> from some group containing <M>G</M>. It returns a <M>ZG^x</M>-resolution <M>S</M> where the group <M>G^x</M> is the conjugate of <M>G</M> by <M>x</M>. (The component <M>S!.elts</M> will be a pseudolist rather than a list.) <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="RecalculateIncidenceNumbers" Arg="R"/> <Description> <P/> Inputs a ZG-resoluton <M>R</M> which arises as the cellular chain complex of a regular CW-complex. (Thus the boundary of any cell is a list of distinct cells.) It recalculates the incidence numbers for <M>R</M>. If it is applied to a resolution that is not regular then a wrong answer may be returned. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> </Chapter>
