


Graphs of groups
A graph of groups is a
connected graph Y together with
s(a) e = e t(a)
for every a in G_{e} . That is, the composite paths and are regarded as equal paths from v to w. 

Amalgamated
products and HNN extensions can both be viewed as fundamental groups of
graphs of
groups. For example, the following commands create a graph of groups
corresponding to the amalgamated product G=H*_{A}K where H is
the symmetric group H=S_{5} and K is the symmetric group K=S_{4}
. The common subgroup A is the symmetric group A=S_{3 }. A graph of groups is represented by a list consisting of the vertex groups and pairs of monomorphisms which define edges. Each group must be given a name using the SetName() command, and distinct groups must be given different names. 

gap>
S5:=SymmetricGroup(5);SetName(S5,"S5");; gap> S4:=SymmetricGroup(4);SetName(S4,"S4");; gap> A:=SymmetricGroup(3);SetName(A,"S3");; gap> AS5:=GroupHomomorphismByFunction(A,S5,x>x);; gap> AS4:=GroupHomomorphismByFunction(A,S4,x>x);; gap> D:=[S5,S4,[AS5,AS4]];; gap> GraphOfGroupsDisplay(D);; 

The
following additional commands create a resolution for the above
amalgamated product G and then calculate H_{7}(G,Z) = (Z_{2})^{3}+Z_{4}+Z_{60} 

gap>
R:=ResolutionGraphOfGroups(D,8);; gap> Homology(TensorWithIntegers(R),7); [ 2, 2, 2, 4, 60 ] 

The
following commands create a graph of groups corresponding to the HNN
extension G=H*_{A} where H is the symmetric group H=S_{5}
and A is the subgroup A=S_{3} and f:A→S_{5} is the
homomorphism (1,2) → (3,4), (1,2,3) → (3,4,5). The HNN extension G is
obtained from H by adding an element t subject to the relations t^{1}
a t = f(a) for a in S_{3}. 

gap>
S5:=SymmetricGroup(5);SetName(S5,"S5"); gap> A:=SymmetricGroup(3);SetName(A,"S3"); gap> f:=GroupHomomorphismByImages(A,S5,[(1,2),(1,2,3)],[(3,4),(3,4,5)]);; gap> g:=GroupHomomorphismByFunction(A,S5,x>x); gap> D:=[S5,[f,g]];; gap> GraphOfGroupsDisplay(D);; 

The following additional commands create a resolution for the HNN extension and calculate H_{7}(G,Z) = (Z_{2})^{2}+Z_{60} .  
gap>
R:=ResolutionGraphOfGroups(D,8);; gap> Homology(TensorWithIntegers(R),7); [ 2, 2, 60 ] 

Fuchsian and Kleinian groups A Kleinian group is discrete subgroup
of PSL(2,C),
the full group of orientation preserving isometries of 3dimensional
hyperbolic space. A Fuchsian group is a discrete
subgroup of PSL(2,R)
and as such acts on the hyperbolic plane. A "fundamental domain" for a
Kleinian or Fuchsian group G gives rise to a tessellation of hyperbolic
3 or 2space. Let X denote the 1skeleton of this tessellation. Then G
acts on X in such a way that no edge is inverted. The quotient graph
Y=X/G is thus a graph of groups in which vertices and edges are
labelled by
the subgroups of G stabilizing the corresponding vertices and edges in
Y.
The computational method described in [G. Ellis & A.G. Williams, "On the cohomology of generalized triangle groups", Comment. Math. Helv. 80 (2005), 121] can be partially summarized as follows.


As
an example consider the classical triangle group defined by the
presentation T = T(l,m,n) = < a, b 
a^{l}
= b^{m} = (ab^{1})^{n} = 1 >
where 1/l + 1/m + 1/m <
1. This group acts on the hyperbolic plane as follows. Let v_{1}
and v_{2} be distinct point in the hyperbolic plane. Let the
generator a of T act as a clockwise rotation about v_{1}
through an angle 2 pi/¦l , and let the generator b of T act as
a clockwise rotation about v_{2} through an angle 2
pi/¦m . It follows that (ab^{1}) acts as an
anticlockwise rotation about some point v_{3} through an angle
2 pi/n. Let v_{4} be the image of v_{3} under a
reflection in the line v_{1}v_{2} . Then the points v_{1}
, v_{2} , v_{3} , v_{4} are the corners of a
quadrilateral fundamental region for the action of T. The edges of this
fundamental region have trivial stabilizer subgroups in G. The vertices
v_{1} , v_{2} , v_{3 }have cyclic stabilizer
subgroups A = <a>, B=<b> and C=<c> respectively.
The associated graph of groups is The fundamental group P of this
graph has the same homology as the triangle group T(l,m,n) in
dimensions greater than 3.
So for example, the following commands show that the triangle group T=T(2,3,4) has 5dimensional integral homology H_{5}(T,Z) = Z_{2}+Z_{12} . 

gap>
a:=(1,2);; b:=(1,2,3);; c:=(1,2,3,4);; f:=();; g:=();; gap> A:=Group(a);; SetName(A,"A");; gap> B:=Group(b);; SetName(B,"B");; gap> C:=Group(c);; SetName(C,"C");; gap> F:=Group(f);; SetName(F,"F");; gap> G:=Group(g);; SetName(G,"G");; gap> FA:=GroupHomomorphismByFunction(F,A,x>x);; gap> FC:=GroupHomomorphismByFunction(F,C,x>x);; gap> GC:=GroupHomomorphismByFunction(G,C,x>x);; gap> GB:=GroupHomomorphismByFunction(G,B,x>x);; gap> Graph:=[A,B,C,[FA,FC],[GC,GB]];; gap> GraphOfGroupsDisplay(Graph);; gap>
R:=ResolutionGraphOfGroups(Graph,6);;
gap> Homology(TensorWithIntegers(R),5); [ 2, 12 ] 

