<Chapter><Heading>Resolutions of the ground ring</Heading> <Table Align="|l|" > <Row> <Item> <Index>ResolutionAbelianGroup</Index> <C> ResolutionAbelianGroup(L,n)</C> <C> ResolutionAbelianGroup(G,n)</C> <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>ZG</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. </Item> </Row> <Row> <Item> <Index>ResolutionAlmostCrystalGroup</Index> <C> ResolutionAlmostCrystalGroup(G,n)</C> <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.) </Item> </Row> <Row> <Item> <Index>ResolutionAlmostCrystalQuotient</Index> <C> ResolutionAlmostCrystalQuotient(G,n,c)</C> <C> ResolutionAlmostCrystalQuotient(G,n,c,false)</C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionArtinGroup</Index> <C> ResolutionArtinGroup(D,n)</C> <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">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). </Item> </Row> <Row> <Item> <Index> ResolutionAsphericalPresentation</Index> <C> ResolutionAsphericalPresentation(F,R,n)</C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionBieberbachGroup (HAPcryst)</Index> <C> ResolutionBieberbachGroup( G ) </C> <Br/> <C> ResolutionBieberbachGroup( G, v ) </C> <P/> Inputs a Bieberbach group <M>G</M> (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 is a HAPcryst function and is thus only available if HAPcryst is loaded. <P/> The function requires the use of Polymake software. </Item> </Row> <Row> <Item> <Index>ResolutionDirectProduct </Index> <C> ResolutionDirectProduct(R,S) </C> <C> ResolutionDirectProduct(R,S,"internal")</C> <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 "internal" can be used. This will force <M>D</M> to be the subgroup <M>GH</M> in <M>K</M>. </Item> </Row> <Row> <Item> <Index>ResolutionExtension </Index> <C> ResolutionExtension(g,R,S) </C> <C> ResolutionExtension(g,R, S,"TestFiniteness")</C> <C> ResolutionExtension(g,R,S,"NoTest",GmapE)</C> <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 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/> 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! </Item> </Row> <Row> <Item> <Index>ResolutionFiniteDirectProduct</Index> <C> ResolutionFiniteDirectProduct(R,S) </C> <C> ResolutionFiniteDirectProduct(R,S, "internal")</C> <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 "internal" can be used. This will force <M>D</M> to be the subgroup <M>GH</M> in <M>K</M>. </Item> </Row> <Row> <Item> <Index>ResolutionFiniteExtension</Index> <C> ResolutionFiniteExtension(gensE,gensG,R,n)</C> <C> ResolutionFiniteExtension(gensE,gensG,R,n,true) </C> <C> ResolutionFiniteExtension(gensE,gensG,R,n,false,S) </C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionFiniteGroup</Index> <C> ResolutionFiniteGroup(gens,n)</C> <C> ResolutionFiniteGroup(gens,n,true)</C> <C> ResolutionFiniteGroup(gens,n,false,p) </C><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/> </Item></Row> <Row> <Item> <Index> ResolutionFiniteSubgroup</Index> <C> ResolutionFiniteSubgroup(R,K)</C> <C> ResolutionFiniteSubgroup(R,gensG,gensK)</C> <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>. </Item> </Row> <Row> <Item> <Index>ResolutionGraphOfGroups </Index> <C> ResolutionGraphOfGroups(D,n) </C> <C> ResolutionGraphOfGroups(D,n,L) </C> <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). </Item> </Row> <Row> <Item> <Index>ResolutionNilpotentGroup </Index> <C> ResolutionNilpotentGroup(G,n) </C> <C> ResolutionNilpotentGroup(G,n,"TestFiniteness")</C> <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 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. </Item> </Row> <Row> <Item> <Index> ResolutionNormalSeries </Index> <C> ResolutionNormalSeries(L,n) </C> <C> ResolutionNormalSeries(L,n,true)</C> <C> ResolutionNormalSeries(L,n,false,p)</C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionPrimePowerGroup </Index> <C> ResolutionPrimePowerGroup(P,n) </C> <C> ResolutionPrimePowerGroup(G,n,p)</C> <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 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 case the algorithm is naive and not very good.) </Item> </Row> <Row> <Item> <Index>ResolutionSmallFpGroup </Index> <C> ResolutionSmallFpGroup(G,n) </C> <C> ResolutionSmallFpGroup(G,n,p) </C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionSubgroup</Index> <C> ResolutionSubgroup(R,K)</C> <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. </Item> </Row> <Row> <Item> <Index>ResolutionSubnormalSeries </Index> <C> ResolutionSubnormalSeries(L,n) </C> <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. </Item> </Row> <Row> <Item> <Index> TwistedTensorProduct</Index> <C> TwistedTensorProduct(R,S,EhomG,GmapE,NhomE,NEhomN,EltsE,Mult,InvE)</C> <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>. </Item> </Row> </Table> </Chapter>