<Chapter><Heading> Coxeter diagrams and graphs of groups</Heading>

<Table Align="|l|" >

<Row>
<Item>
<Index> CoxeterDiagramComponents</Index>
<C>CoxeterDiagramComponents(D) </C>
<P/>
Inputs a Coxeter diagram <M>D</M> and returns a list <M>[D_1, ..., D_d]</M> of the maximal connected subgraphs <M>D_i</M>.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramDegree</Index>
<C>CoxeterDiagramDegree(D,v) </C>
<P/>
Inputs a Coxeter diagram <M>D</M> and vertex <M>v</M>. 
It returns the degree of <M>v</M> (i.e. the number of edges 
incident with <M>v</M>).
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramDisplay</Index>
<C>CoxeterDiagramDisplay(D) </C>
<C>CoxeterDiagramDisplay(D,"web browser") </C>
<P/>

Inputs a Coxeter diagram <M>D</M> 
and displays it as a .gif file.  It uses the Mozilla web 
browser as a default to view the diagram.  
An alternative browser can be set using a second argument.
<P/>
This function requires Graphviz software.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramFpArtinGroup</Index>
<C>CoxeterDiagramFpArtinGroup(D) </C>
<P/>

Inputs a Coxeter diagram <M>D</M> 
and returns the corresponding finitely presented Artin group.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramFpCoxeterGroup</Index>
<C>CoxeterDiagramFpCoxeterGroup(D) </C>
<P/>

Inputs a Coxeter diagram <M>D</M>
and returns the corresponding finitely presented Coxeter group.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramIsSpherical</Index>
<C>CoxeterDiagramIsSpherical(D) </C>
<P/>

Inputs a Coxeter diagram <M>D</M> and returns "true" if 
the associated Coxeter groups is finite, and 
returns "false" otherwise.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramMatrix</Index>
<C>CoxeterDiagramMatrix(D) </C>
<P/>

Inputs a Coxeter diagram <M>D</M> and returns a matrix 
representation of it. The matrix is given as a function 
<M>DiagramMatrix(D)(i,j)</M> where <M>i,j</M>
can range over the vertices.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterSubDiagram</Index>
<C>CoxeterSubDiagram(D,V) </C>
<P/>

Inputs a Coxeter diagram <M>D</M> and a subset <M>V</M> 
of its vertices. It returns the full sub-diagram of <M>D</M>
with vertex set <M>V</M>.
</Item>
</Row>

<Row>
<Item>
<Index> CoxeterDiagramVertices</Index>
<C>CoxeterDiagramVertices(D) </C>
<P/>

Inputs a Coxeter diagram <M>D</M> and returns its set of vertices.
</Item>
</Row>

<Row>
<Item>
<Index> EvenSubgroup</Index>
<C>EvenSubgroup(G) </C>
<P/>

Inputs a group <M>G</M> and returns a subgroup <M>G^+</M>. 
The subgroup is that generated by all products <M>xy</M> where 
<M>x</M> and <M>y</M> range over the generating set for <M>G</M> 
stored by GAP. The subgroup is probably only meaningful when <M>G</M>
is an Artin or Coxeter group.
</Item>
</Row>

<Row>
<Item>
<Index> GraphOfGroupsDisplay</Index>
<C> GraphOfGroupsDisplay(D) </C>
<C>GraphOfGroupsDisplay(D,"web browser") </C>
<P/>

Inputs a graph of groups <M>D</M> and displays it as a .gif file.  
It uses the Mozilla web browser as a default to view the diagram.  
An alternative browser can be set using a second argument.
<P/>
This function requires Graphviz software.
</Item>
</Row>

<Row>
<Item>
<Index> GraphOfResolutions</Index>
<C> GraphOfResolutions(D,n) </C>
<P/>

Inputs a graph of groups <M>D</M> and a positive integer <M>n</M>. 
It returns a graph of resolutions, each resolution being of length <M>n</M>.
 It uses the function ResolutionGenericGroup() to produce the resolutions.
</Item>
</Row>

<Row>
<Item>
<Index> GraphOfGroups</Index>
<C> GraphOfGroups(D) </C>
<P/>

Inputs a graph of resolutions <M>D</M> 
and returns the corresponding graph of groups.
</Item>
</Row>


<Row>
<Item>
<Index> GraphOfResolutionsDisplay</Index>
<C> GraphOfResolutionsDisplay(D) </C>
<P/>

Inputs a graph of resolutions <M>D</M> and displays it as a .gif file.
It uses the Mozilla web browser as a default to view the diagram.
<P/>
This function requires Graphviz software.
</Item>
</Row>



<Row>
<Item>
<Index> GraphOfGroupsTest</Index>
<C>GraphOfGroupsTest(D) </C>
<P/>

Inputs an object <M>D</M> and itries to test 
whether it is a Graph of Groups. 
However, it DOES NOT test the injectivity of any homomorphisms. 
It returns true if <M>D</M> passes the test, and false otherwise.
<P/>
Note that there is no function <M>IsHapGraphOfGroups()</M> because no special data type has been created for these graphs.
</Item>
</Row>


<Row>
<Item>
<Index> TreeOfGroupsToContractibleGcomplex</Index>
<C>TreeOfGroupsToContractibleGcomplex(D,G) </C>
<P/>

Inputs a graph of groups <M>D</M> which is a tree, and also inputs the fundamental group <M>G</M> of the tree in a form which contains each of the groups in the graph as subgroups. 
It returns a corresponding contractible G-complex.
</Item>
</Row>

<Row>
<Item>
<Index> TreeOfResolutionsToContractibleGcomplex</Index>
<C>TreeOfResolutionsToContractibleGcomplex(D,G) </C>
<P/>

Inputs a graph of resolutions <M>D</M> which is a tree, and also inputs the fundamental group <M>G</M> of the tree in a form which contains each of the groups in the graph as subgroups.
It returns a corresponding contractible G-complex. The resolutions are stored as a component of the contractible <M>G</M>-complex.
</Item>
</Row>

</Table>
</Chapter>


