<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> 
</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> 
</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>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>4</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>5</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutDavisComplex.html</Link><LinkText>6</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>7</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>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>3</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/chap10.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap11.html</Link><LinkText>4</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>5</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>6</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>7</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutPeriodic.html</Link><LinkText>8</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>9</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>10</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>11</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>12</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>13</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>14</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>15</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>16</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>17</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>18</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>19</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/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutArithmetic.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="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/chap11.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/aboutRosenbergerMonster.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>4</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 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.)
<P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>4</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>

