|
|||
---|---|---|---|
The
first step in attempting to calculate the cohomology of a group G is to
decide on how best to represent the group. In some cases G will admit a
decomposition into subgroups and quotient groups where the various
component groups need to be represented differently. We try to
illustrate this
with a simple example. Consider the tessellation of the plane R2 by congruent equilateral triangles, and let G be the group of isometries of the plane which preserve this tessellation. ![]() The group G is generated by two translations S,T together with two reflections X,Y. By using the embedding R2 → R3 (u,v) → (u,v,1) these affine transformations can be represented as 3×3 matrices involving the square root of 3. The following commands construct G. |
|||
gap>
x:=Indeterminate(Rationals);; gap> p:=x^2-3;; gap> K:=AlgebraicExtension(Rationals,p);; gap> one:=One(K);; gap> rt3:=RootOfDefiningPolynomial(K);; gap> reflectionX:=[[-1,0,0],[0,1,0],[0,0,1]]*one;; gap> reflectionY:=[[1/2,rt3/2,0],[rt3/2,-1/2,0],[0,0,1]]*one;; gap> translationS:=[[1,0,2],[0,1,0],[0,0,1]]*one;; gap> translationT:=[[1,0,1],[0,1,rt3],[0,0,1]]*one;; gap> G:=Group([reflectionX,reflectionY,translationS,translationT]);; gap> P:=Group([reflectionX,reflectionY]);; gap> N:=Group([translationS,translationT]);; |
|||
The
linear isometries in G form a finite group P (called the point group). The translations S
and T generate a free abelian group N. The general theory of space
groups tells us that N is normal in G and that the quotient G/N is
isomorphic to P. The groups N and P are created above. The
following command shows that P is the symmetric group of degree 3. |
|||
gap>
StructureDescription(P); "S3" |
|||
We
can construct a ZP-resolution as
follows. |
|||
gap>
RP:=ResolutionFiniteGroup(P,4);; |
|||
Using
the fact that N is free abelian of rank 2 we construct a ZN-resolution
as follows. |
|||
gap>
RN:=ResolutionAbelianGroup([0,0],4);; gap> fpN:=RN.group;; gap> fpNhomN:=GroupHomomorphismByImages(fpN,N, GeneratorsOfGroup(fpN),[translationS,translationT]);; gap> RN.group:=N;; gap> RN.elts:=List(RN.elts,x->Image(fpNhomN,x));; |
|||
We
construct a homomorphism G→P, together with a section P→G, as
follows. |
|||
gap>
################################ gap> GhomPfn:=function(MM) > local M,i,j; > M:=[]; > for i in [1..3] do M[i]:=[]; > for j in [1..3] do > M[i][j]:=MM[i][j]; > od; > od; > M[1][3]:=0*one; > M[2][3]:=0*one; > return M; > end;; gap> ################################ gap> GhomP:=GroupHomomorphismByFunction(G,P,GhomPfn); gap> PmapG:=function(MM); return MM; end; |
|||
We
can now combine the ZP-resolution and ZN-resolution into a free
ZG-resolution as follows. |
|||
gap>
RG:=ResolutionExtension(GhomP,RN,RP,"Don't Test Finiteness", PmapG);; |
|||
The
following commands suggest that H1(G,Z)=Z2 and H2(G,Z)=Z2. |
|||
gap>
TRG:=TensorWithIntegers(RG);; gap> Homology(TRG,1); [ 2 ] gap> Homology(TRG,2) [ 2 ] |
|||
However, there is a problem that needs
looking into: the boundary map in RG
doesn't square to zero in higher dimension!! So the reliability of the above homology
calculations is also in question. I suspect that the problem
lies with
the contracting homotopy in the function ResolutionDirectProduct()
. Things work with mod 2 coefficients, so maybe it's a problem
with signs. |
|||
|