<Chapter><Heading> Functors</Heading>

<Table Align="|l|" >

<Row>
<Item>
<Index>ExtendScalars</Index>
<C>ExtendScalars(R,G,EltsG)</C>
<P/>

Inputs  a <M>ZH</M>-resolution <M>R</M>,
a group <M>G</M> containing <M>H</M> as a subgroup, and a list <M>EltsG</M>
of elements of <M>G</M>. It returns the free <M>ZG</M>-resolution
 <M>(R  \otimes_{ZH} ZG)</M>. The returned resolution <M>S</M> has S!.elts:=EltsG. This is a resolution of the <M>ZG</M>-module
<M>(Z \otimes_{ZH} ZG)</M>. (Here <M>\otimes_{ZH}</M> means tensor over <M>ZH</M>.)
</Item>
</Row>

<Row>
<Item>
<Index>HomToIntegers</Index>
<C>HomToIntegers(X) </C>
<P/>

Inputs either a <M>ZG</M>-resolution <M>X=R</M>, 
or an equivariant chain map <M>X = (F:R
\longrightarrow 
S)</M>. 
It returns the cochain complex or cochain map obtained by applying 
<M>HomZG( _ , Z)</M> where <M>Z</M> is the 
trivial module of integers (characteristic 0).
</Item>
</Row>

<Row>
<Item>
<Index> HomToIntegersModP </Index>
<C>HomToIntegersModP(R) </C>
<P/>

Inputs a <M>ZG</M>-resolution <M>R</M> and 
returns the cochain complex obtained by applying 
<M>HomZG( _ , Z_p)</M> where <M>Z_p</M> is the trivial module of 
integers mod <M>p</M>. 
(At present this functor does not handle equivariant chain maps.)
</Item>
</Row>

<Row>
<Item>
<Index> HomToIntegralModule </Index>
<C>HomToIntegralModule(R,f) </C>
<P/>

Inputs a <M>ZG</M>-resolution <M>R</M> and a 
group homomorphism <M>f:G \longrightarrow
GL_n(Z)</M>  
to the group of <M>n×n</M> invertible integer matrices. Here 
<M>Z</M> must have characteristic 0. 
It returns the cochain complex obtained by applying 
<M>HomZG( _ , A)</M> where <M>A</M> is the <M>ZG</M>-module <M>Z^n</M> 
with <M>G</M> action via <M>f</M>. 
(At present this function does not handle equivariant chain maps.)
</Item>
</Row>

<Row>
<Item>
<Index> TensorWithIntegralModule </Index>
<C>TensorWithIntegralModule(R,f) </C>
<P/>

Inputs a <M>ZG</M>-resolution <M>R</M> and a
group homomorphism <M>f:G \longrightarrow
GL_n(Z)</M>
to the group of <M>n×n</M> invertible integer matrices. Here
<M>Z</M> must have characteristic 0.
It returns the chain complex obtained by tensoring over <M>ZG</M>  
with  the <M>ZG</M>-module <M>A=Z^n</M>
with <M>G</M> action via <M>f</M>.
(At present this function does not handle equivariant chain maps.)
</Item>
</Row>


<Row>
<Item>
<Index> HomToGModule </Index>
<C>HomToGModule(R,A) </C>
<P/>

Inputs a <M>ZG</M>-resolution <M>R</M> and an abelian
G-outer group A.
It returns the G-cocomplex obtained by applying
<M>HomZG( _ , A)</M>. 
(At present this function does not handle equivariant chain maps.)
</Item>
</Row>

<Row>
<Item>
<Index>InduceScalars </Index>
<C>InduceScalars(R,hom) </C>
<P/>

Inputs  a <M>ZQ</M>-resolution <M>R</M> and a surjective group homomorphism
<M>hom:G\rightarrow Q</M>.
 It returns the unduced non-free  <M>ZG</M>-resolution.
 
</Item>
</Row>

<Row>
<Item>
<Index>LowerCentralSeriesLieAlgebra</Index>
<C>LowerCentralSeriesLieAlgebra(G) </C>
<C>LowerCentralSeriesLieAlgebra(f) </C>
<P/>

Inputs a pcp group <M>G</M>. 
If each quotient <M>G_c/G_{c+1}</M> 
of the lower central series is free abelian or p-elementary abelian 
(for fixed prime p) then a Lie algebra  <M>L(G)</M> is returned. 
The abelian group underlying <M>L(G)</M> is the 
direct sum of the quotients <M>G_c/G_{c+1}</M> . 
The Lie bracket on <M>L(G)</M> is induced by the commutator in 
<M>G</M>. (Here <M>G_1=G</M>, <M>G_{c+1}=[G_c,G]</M> .)
<P/>


The function can also be applied to a group homomorphism <M>f: G
\longrightarrow
G'</M> . In this case the induced homomorphism of Lie algebras 
<M>L(f):L(G) \longrightarrow
L(G')</M> is returned.<P/>

If the quotients of the lower central series are not all free or p-elementary abelian then the function returns fail.<P/>

This function was written by Pablo Fernandez Ascariz
</Item>
</Row>
<Row>
<Item>
<Index> TensorWithIntegers </Index>
<C>TensorWithIntegers(X) </C>
<P/>

Inputs either a <M>ZG</M>-resolution <M>X=R</M>, 
or an equivariant chain map <M>X = (F:R
\longrightarrow S)</M>. It returns the 
chain complex or chain map obtained by tensoring with the 
trivial module of integers (characteristic 0).
</Item>
</Row>

<Row>
<Item>
<Index> FilteredTensorWithIntegers </Index>
<C>FilteredTensorWithIntegers(R) </C>
<P/>

Inputs  a <M>ZG</M>-resolution <M>R</M> for which "filteredDimension" lies in NamesOfComponents(R). (Such a resolution can be produced using TwisterTensorProduct(), ResolutionNormalSubgroups() or FreeGResolution().) 
It returns the
filtered chain complex  obtained by tensoring with the
trivial module of integers (characteristic 0).
</Item>
</Row>


<Row>
<Item>
<Index> TensorWithTwistedIntegers </Index>
<C>TensorWithTwistedIntegers(X,rho) </C>
<P/>

Inputs either a <M>ZG</M>-resolution <M>X=R</M>,
or an equivariant chain map <M>X = (F:R
\longrightarrow S)</M>. It also inputs a function <M>rho\colon G\rightarrow \mathbb Z</M> where the action of <M>g \in G</M> on <M>\mathbb Z</M> is such that <M>g.1 = rho(g)</M>. It returns the
chain complex or chain map obtained by tensoring with the
(twisted) module of integers (characteristic 0).
</Item>
</Row>


<Row>
<Item>
<Index> TensorWithIntegersModP</Index>
<C>TensorWithIntegersModP(X,p) </C>
 <P/>

Inputs either a <M>ZG</M>-resolution <M>X=R</M>, or a characteristics 0 chain complex, or 
an equivariant chain map <M>X = (F:R
\longrightarrow
S)</M>, or a chain map between characteristic 0 chain complexes, together with
 a prime <M>p</M>. 
 It returns the chain 
complex or chain map obtained by tensoring with the 
trivial module of integers modulo <M>p</M>.
</Item>
</Row>

<Row>
<Item>
<Index> TensorWithTwistedIntegersModP</Index>
<C>TensorWithTwistedIntegersModP(X,p,rho)</C>
<P/>

Inputs either a <M>ZG</M>-resolution <M>X=R</M>, or
an equivariant chain map <M>X = (F:R
\longrightarrow
S)</M>, and a prime <M>p</M>. It also inputs a function <M>rho\colon G\rightarrow \mathbb Z</M> where the action of <M>g \in G</M> on <M>\mathbb Z</M> is such that <M>g.1 = rho(g)</M>. It returns the chain
complex or chain map obtained by tensoring with the
trivial module of integers modulo <M>p</M>.
</Item>
</Row>


<Row>
<Item>
<Index> TensorWithRationals </Index>
<C>TensorWithRationals(R)</C>
<P/>

Inputs a <M>ZG</M>-resolution <M>R</M> and returns the chain 
complex obtained by tensoring with the trivial module of 
rational numbers. 
</Item>
</Row>

</Table>
</Chapter>


