  
  [1X7 [33X[0;0YCohomology of groups[133X[101X
  
  
  [1X7.1 [33X[0;0YFinite groups[133X[101X
  
  [33X[0;0YIt  is  possible to compute the low degree (co)homology of a finite group or
  monoid  of  small  order  directly  from  the  bar resolution. The following
  commands take this approach to computing the fifth integral homology[133X
  
  [33X[0;0Y[22XH_5(Q_4, Z) = Z_2⊕ Z_2[122X[133X
  
  [33X[0;0Yof the quaternion group [22XG=Q_4[122X of order [22X8[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XQ:=QuaternionGroup(8);;[127X[104X
    [4X[25Xgap>[125X [27XB:=BarComplexOfMonoid(Q,6);;                 [127X[104X
    [4X[25Xgap>[125X [27XC:=ContractedComplex(B);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(C,5);[127X[104X
    [4X[28X[ 2, 2 ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XList([0..6],B!.dimension);[127X[104X
    [4X[28X[ 1, 7, 49, 343, 2401, 16807, 117649 ][128X[104X
    [4X[25Xgap>[125X [27XList([0..6],C!.dimension);[127X[104X
    [4X[28X[ 1, 2, 2, 1, 2, 4, 102945 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YHowever,  this approach is of limited applicability since the bar resolution
  involves  [22X|G|^k[122X free generators in degree [22Xk[122X. A range of techniques, tailored
  to  specific  classes  of groups, can be used to compute the (co)homology of
  larger finite groups.[133X
  
  [33X[0;0YThe following example computes the fourth integral cohomomogy of the Mathieu
  group [22XM_24[122X.[133X
  
  [33X[0;0Y[22XH^4(M_24, Z) = Z_12[122X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XGroupCohomology(MathieuGroup(24),4);[127X[104X
    [4X[28X[ 4, 3 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following example computes the third integral homology of the Weyl group
  [22XW=Weyl(E_8)[122X, a group of order [22X696729600[122X.[133X
  
  [33X[0;0Y[22XH_3(Weyl(E_8), Z) = Z_2 ⊕ Z_2 ⊕ Z_12[122X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XL:=SimpleLieAlgebra("E",8,Rationals);;[127X[104X
    [4X[25Xgap>[125X [27XW:=WeylGroup(RootSystem(L));;[127X[104X
    [4X[25Xgap>[125X [27XOrder(W);[127X[104X
    [4X[28X696729600[128X[104X
    [4X[25Xgap>[125X [27XGroupHomology(W,3);[127X[104X
    [4X[28X[ 2, 2, 4, 3 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  preceding  calculation  could  be  achieved more quickly by noting that
  [22XW=Weyl(E_8)[122X  is  a  Coxeter  group,  and  by  using  the  associated Coxeter
  polytope.  The  following  example  uses this approach to compute the fourth
  integral  homology  of  [22XW[122X. It begins by displaying the Coxeter diagram of [22XW[122X,
  and then computes[133X
  
  [33X[0;0Y[22XH_4(Weyl(E_8), Z) = Z_2 ⊕ Z_2 ⊕ Z_2 ⊕ Z_2[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XD:=[[1,[2,3]],[2,[3,3]],[3,[4,3],[5,3]],[5,[6,3]],[6,[7,3]],[7,[8,3]]];;[127X[104X
    [4X[25Xgap>[125X [27XCoxeterDiagramDisplay(D);[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpolytope:=CoxeterComplex_alt(D,5);;[127X[104X
    [4X[25Xgap>[125X [27XR:=FreeGResolution(polytope,5);[127X[104X
    [4X[28XResolution of length 5 in characteristic 0 for <matrix group with [128X[104X
    [4X[28X8 generators> . [128X[104X
    [4X[28XNo contracting homotopy available. [128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC:=TensorWithIntegers(R);[127X[104X
    [4X[28XChain complex of length 5 in characteristic 0 . [128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XHomology(C,4);[127X[104X
    [4X[28X[ 2, 2, 2, 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  following  example  computes  the  sixth  mod-[22X2[122X  homology  of the Sylow
  [22X2[122X-subgroup [22XSyl_2(M_24)[122X of the Mathieu group [22XM_24[122X.[133X
  
  [33X[0;0Y[22XH_6(Syl_2(M_24), Z_2) = Z_2^143[122X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XGroupHomology(SylowSubgroup(MathieuGroup(24),2),6,2);[127X[104X
    [4X[28X[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, [128X[104X
    [4X[28X  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following example constructs the Poincare polynomial[133X
  
  [33X[0;0Y[22Xp(x)=frac1-x^3+3*x^2-3*x+1[122X[133X
  
  [33X[0;0Yfor  the  cohomology  [22XH^∗(Syl_2(M_12,  F_2)[122X.  The  coefficient of [22Xx^n[122X in the
  expansion   of   [22Xp(x)[122X  is  equal  to  the  dimension  of  the  vector  space
  [22XH^n(Syl_2(M_12,  F_2)[122X.  The  computation  involves [12XSingular[112X's Groebner basis
  algorithms and the Lyndon-Hochschild-Serre spectral sequence.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=SylowSubgroup(MathieuGroup(12),2);;[127X[104X
    [4X[25Xgap>[125X [27XPoincareSeriesLHS(G);[127X[104X
    [4X[28X(1)/(-x_1^3+3*x_1^2-3*x_1+1)[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following example constructs the polynomial[133X
  
  [33X[0;0Y[22Xp(x)=fracx^4-x^3+x^2-x+1x^6-x^5+x^4-2*x^3+x^2-x+1[122X[133X
  
  [33X[0;0Ywhose  coefficient  of  [22Xx^n[122X  is  equal  to the dimension of the vector space
  [22XH^n(M_11,  F_2)[122X  for  all  [22Xn[122X in the range [22X0le nle 14[122X. The coefficient is not
  guaranteed correct for [22Xnge 15[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XPoincareSeriesPrimePart(MathieuGroup(11),2,14);[127X[104X
    [4X[28X(x_1^4-x_1^3+x_1^2-x_1+1)/(x_1^6-x_1^5+x_1^4-2*x_1^3+x_1^2-x_1+1)[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.2 [33X[0;0YNilpotent groups[133X[101X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH_4(N, Z) = (Z_3)^4 ⊕ Z^84[122X[133X
  
  [33X[0;0Yfor the free nilpotent group [22XN[122X of class [22X2[122X on four generators.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XF:=FreeGroup(4);; N:=NilpotentQuotient(F,2);;[127X[104X
    [4X[25Xgap>[125X [27XGroupHomology(N,4);[127X[104X
    [4X[28X[ 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [128X[104X
    [4X[28X  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [128X[104X
    [4X[28X  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [128X[104X
    [4X[28X  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.3 [33X[0;0YCrystallographic and Almost Crystallographic groups[133X[101X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH_5(G, Z) = Z_2 ⊕ Z_2[122X[133X
  
  [33X[0;0Yfor  the  [22X3[122X-dimensional  crystallographic space group [22XG[122X with Hermann-Mauguin
  symbol "P62"[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XGroupHomology(SpaceGroupBBNWZ("P62"),5);[127X[104X
    [4X[28X[ 2, 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH^5(G, Z)= Z[122X[133X
  
  [33X[0;0Yfor an almost crystallographic group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] );;[127X[104X
    [4X[25Xgap>[125X [27XGroupCohomology(G,4);[127X[104X
    [4X[28X[ 0 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.4 [33X[0;0YArithmetic groups[133X[101X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH_6(SL_2(cal O, Z) = Z_2[122X[133X
  
  [33X[0;0Yfor [22Xcal O[122X the ring of integers of the number field [22XQ(sqrt-2)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XC:=ContractibleGcomplex("SL(2,O-2)");;[127X[104X
    [4X[25Xgap>[125X [27XR:=FreeGResolution(C,7);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(TensorWithIntegers(R),6);[127X[104X
    [4X[28X[ 2, 12 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.5 [33X[0;0YArtin groups[133X[101X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH_5(G, Z) = Z_3[122X[133X
  
  [33X[0;0Yfor [22XG[122X the classical braid group on eight strings.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XD:=[[1,[2,3]],[2,[3,3]],[3,[4,3]],[4,[5,3]],[5,[6,3]],[6,[7,3]]];;[127X[104X
    [4X[25Xgap>[125X [27XCoxeterDiagramDisplay(D);;[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionArtinGroup(D,6);;[127X[104X
    [4X[25Xgap>[125X [27XC:=TensorWithIntegers(R);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(C,5);[127X[104X
    [4X[28X[ 3 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.6 [33X[0;0YGraphs of groups[133X[101X
  
  [33X[0;0YThe following example computes[133X
  
  [33X[0;0Y[22XH_5(G, Z) = Z_2⊕ Z_2⊕ Z_2 ⊕ Z_2 ⊕ Z_2[122X[133X
  
  [33X[0;0Yfor  [22XG[122X  the  graph  of  groups  corresponding  to  the  amalgamated  product
  [22XG=S_5*_S_3S_4[122X  of  the  symmetric  groups  [22XS_5[122X  and  [22XS_4[122X  over the canonical
  subgroup [22XS_3[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS5:=SymmetricGroup(5);SetName(S5,"S5");[127X[104X
    [4X[25Xgap>[125X [27XS4:=SymmetricGroup(4);SetName(S4,"S4");[127X[104X
    [4X[25Xgap>[125X [27XA:=SymmetricGroup(3);SetName(A,"S3");[127X[104X
    [4X[25Xgap>[125X [27XAS5:=GroupHomomorphismByFunction(A,S5,x->x);[127X[104X
    [4X[25Xgap>[125X [27XAS4:=GroupHomomorphismByFunction(A,S4,x->x);[127X[104X
    [4X[25Xgap>[125X [27XD:=[S5,S4,[AS5,AS4]];[127X[104X
    [4X[25Xgap>[125X [27XGraphOfGroupsDisplay(D);[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionGraphOfGroups(D,6);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(TensorWithIntegers(R),5);[127X[104X
    [4X[28X[ 2, 2, 2, 2, 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.7 [33X[0;0YCohomology with coefficients in a module[133X[101X
  
  [33X[0;0YThere  are  various  ways  to  represent a [22XZG[122X-module [22XA[122X with action [22XG× A → A,
  (g,a)↦ α(g,a)[122X.[133X
  
  [33X[0;0YOne  possibility  is  to use the data type of a [13X[22XG[122X-Outer Group[113X which involves
  three  components:  an  [22XActedGroup[122X  [22XA[122X;  an  [22XActing Group[122X [22XG[122X; a [22XMapping[122X [22X(g,a)↦
  α(g,a)[122X.  The following example uses this data type to compute the cohomology
  [22XH^4(G,A)  = Z_5 ⊕ Z_10[122X of the symmetric group [22XG=S_6[122X with coefficients in the
  integers [22XA= Z[122X where odd permutations act non-trivially on [22XA[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=SymmetricGroup(6);;[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XA:=AbelianPcpGroup([0]);;[127X[104X
    [4X[25Xgap>[125X [27Xalpha:=function(g,a); return a^SignPerm(g); end;;[127X[104X
    [4X[25Xgap>[125X [27XA:=GModuleAsGOuterGroup(G,A,alpha);[127X[104X
    [4X[28XZG-module with abelian invariants [ 0 ] and G= SymmetricGroup( [ 1 .. 6 ] )[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionFiniteGroup(G,5);;[127X[104X
    [4X[25Xgap>[125X [27XC:=HomToGModule(R,A);[127X[104X
    [4X[28XG-cocomplex of length 5 . [128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XCohomology(C,4);[127X[104X
    [4X[28X[ 2, 2, 5 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIf [22XA= Z^n[122X and [22XG[122X acts as[133X
  
  [33X[0;0Y[22XG×  A  →  A,  (g,  (x_1,x_2,...,x_n))  ↦  (x_π(g)^-1(1),  x_π(g)^-1(2), ...,
  x_π(g)^-1(n))[122X[133X
  
  [33X[0;0Ywhere  [22Xπ:  G→ S_n[122X is a (not necessarily faithful) permutation representation
  of  degree  [22Xn[122X  then  we can avoid the use of [22XG[122X-outer groups and use just the
  homomorphism [22Xπ[122X instead. The following example uses this data type to compute
  the cohomology[133X
  
  [33X[0;0Y[22XH^6(G,A) = Z_2 ⊕ Z_6[122X[133X
  
  [33X[0;0Yand the homology[133X
  
  [33X[0;0Y[22XH_6(G,A) = Z_2[122X[133X
  
  [33X[0;0Yof the alternating group [22XG=A_5[122X with coefficients in [22XA= Z^5[122X where elements of
  [22XG[122X act on [22XZ^5[122X via the canonical permutation of basis elements.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=AlternatingGroup(5);;[127X[104X
    [4X[25Xgap>[125X [27Xpi:=PermToMatrixGroup(SymmetricGroup(5),5);;[127X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionFiniteGroup(G,7);;[127X[104X
    [4X[25Xgap>[125X [27XC:=HomToIntegralModule(R,pi);;[127X[104X
    [4X[25Xgap>[125X [27XCohomology(C,6);[127X[104X
    [4X[28X[ 2, 6 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XD:=TensorWithIntegralModule(R,pi);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(D,6);[127X[104X
    [4X[28X[ 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.8 [33X[0;0YCohomology as a functor of the first variable[133X[101X
  
  [33X[0;0YSuppose given a group homomorphism [22Xf: G_1→ G_2[122X and a [22XG_2[122X-module [22XA[122X. Then [22XA[122X is
  naturally a [22XG_1[122X-module with action via [22Xf[122X, and there is an induced cohomology
  homomorphism [22XH^n(f,A): H^n(G_2,A) → H^n(G_1,A)[122X.[133X
  
  [33X[0;0YThe  following  example  computes this cohomology homomorphism in degree [22Xn=6[122X
  for  the  inclusion  [22Xf:  A_5  → S_5[122X and [22XA= Z^5[122X with action that permutes the
  canonical  basis.  The  final  commands  determine  that  the  kernel of the
  homomorphism [22XH^6(f,A)[122X is the Klein group of order [22X4[122X and that the cokernel is
  cyclic of order [22X6[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG1:=AlternatingGroup(5);;[127X[104X
    [4X[25Xgap>[125X [27XG2:=SymmetricGroup(5);;[127X[104X
    [4X[25Xgap>[125X [27Xf:=GroupHomomorphismByFunction(G1,G2,x->x);;[127X[104X
    [4X[25Xgap>[125X [27Xpi:=PermToMatrixGroup(G2,5);;[127X[104X
    [4X[25Xgap>[125X [27XR1:=ResolutionFiniteGroup(G1,7);;[127X[104X
    [4X[25Xgap>[125X [27XR2:=ResolutionFiniteGroup(G2,7);;[127X[104X
    [4X[25Xgap>[125X [27XF:=EquivariantChainMap(R1,R2,f);;[127X[104X
    [4X[25Xgap>[125X [27XC:=HomToIntegralModule(F,pi);;[127X[104X
    [4X[25Xgap>[125X [27Xc:=Cohomology(C,6);[127X[104X
    [4X[28X[ g1, g2, g3 ] -> [ id, id, g3 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(Kernel(c));[127X[104X
    [4X[28X[ 2, 2 ][128X[104X
    [4X[25Xgap>[125X [27XAbelianInvariants(Range(c)/Image(c));[127X[104X
    [4X[28X[ 2, 3 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X7.9  [33X[0;0YCohomology  as  a  functor  of  the  second variable and the long exact[101X
  [1Xcoefficient sequence[133X[101X
  
  [33X[0;0YA short exact sequence of [22XZG[122X-modules [22XA ↣ B ↠ C[122X induces a long exact sequence
  of cohomology groups[133X
  
  [33X[0;0Y[22X→ H^n(G,A) → H^n(G,B) → H^n(G,C) → H^n+1(G,A) →[122X .[133X
  
  [33X[0;0YConsider  the  symmetric  group  [22XG=S_4[122X  and  the sequence [22XZ_4 ↣ Z_8 ↠ Z_2[122X of
  trivial  [22XZG[122X-modules.  The  following commands compute the induced cohomology
  homomorphism[133X
  
  [33X[0;0Y[22Xf: H^3(S_4, Z_4) → H^3(S_4, Z_8)[122X[133X
  
  [33X[0;0Yand  determine  that  the image of this induced homomorphism has order [22X8[122X and
  that its kernel has order [22X2[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=SymmetricGroup(4);;[127X[104X
    [4X[25Xgap>[125X [27Xx:=(1,2,3,4,5,6,7,8);;[127X[104X
    [4X[25Xgap>[125X [27Xa:=Group(x^2);;[127X[104X
    [4X[25Xgap>[125X [27Xb:=Group(x);;[127X[104X
    [4X[25Xgap>[125X [27Xahomb:=GroupHomomorphismByFunction(a,b,y->y);;[127X[104X
    [4X[25Xgap>[125X [27XA:=TrivialGModuleAsGOuterGroup(G,a);;[127X[104X
    [4X[25Xgap>[125X [27XB:=TrivialGModuleAsGOuterGroup(G,b);;[127X[104X
    [4X[25Xgap>[125X [27Xphi:=GOuterGroupHomomorphism();;[127X[104X
    [4X[25Xgap>[125X [27Xphi!.Source:=A;;[127X[104X
    [4X[25Xgap>[125X [27Xphi!.Target:=B;;[127X[104X
    [4X[25Xgap>[125X [27Xphi!.Mapping:=ahomb;;[127X[104X
    [4X[28X [128X[104X
    [4X[25Xgap>[125X [27XHphi:=CohomologyHomomorphism(phi,3);;[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize(ImageOfGOuterGroupHomomorphism(Hphi));[127X[104X
    [4X[28X8[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize(KernelOfGOuterGroupHomomorphism(Hphi));[127X[104X
    [4X[28X2[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following commands then compute the homomorphism[133X
  
  [33X[0;0Y[22XH^3(S_4, Z_8) → H^3(S_4, Z_2)[122X[133X
  
  [33X[0;0Yinduced  by  [22XZ_4  ↣  Z_8  ↠  Z_2[122X,  and  determine  that  the  kernel of this
  homomorphsim has order [22X8[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbhomc:=NaturalHomomorphismByNormalSubgroup(b,a);[127X[104X
    [4X[25Xgap>[125X [27XB:=TrivialGModuleAsGOuterGroup(G,b);[127X[104X
    [4X[25Xgap>[125X [27XC:=TrivialGModuleAsGOuterGroup(G,Image(bhomc));[127X[104X
    [4X[25Xgap>[125X [27Xpsi:=GOuterGroupHomomorphism();[127X[104X
    [4X[25Xgap>[125X [27Xpsi!.Source:=B;[127X[104X
    [4X[25Xgap>[125X [27Xpsi!.Target:=C;[127X[104X
    [4X[25Xgap>[125X [27Xpsi!.Mapping:=bhomc;[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XHpsi:=CohomologyHomomorphism(psi,3);[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize(KernelOfGOuterGroupHomomorphism(Hpsi));[127X[104X
    [4X[28X8[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe following commands then compute the connecting homomorphism[133X
  
  [33X[0;0Y[22XH^2(S_4, Z_2) → H^3(S_4, Z_4)[122X[133X
  
  [33X[0;0Yand determine that the image of this homomorphism has order [22X2[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xdelta:=ConnectingCohomologyHomomorphism(psi,2);;[127X[104X
    [4X[25Xgap>[125X [27XSize(ImageOfGOuterGroupHomomorphism(delta));[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote that the various orders are consistent with exactness of the sequence[133X
  
  [33X[0;0Y[22XH^2(S_4, Z_2) → H^3(S_4, Z_4) → H^3(S_4, Z_8) → H^3(S_4, Z_2)[122X .[133X
  
  
  [1X7.10 [33X[0;0YCohomology rings of finite fundamental groups of 3-manifolds[133X[101X
  
  [33X[0;0YA  [13Xspherical 3-manifold[113X is a 3-manifold arising as the quotient [22XS^3/Γ[122X of the
  3-sphere [22XS^3[122X by a finite subgroup [22XΓ[122X of [22XSO(4)[122X acting freely as rotations. The
  geometrization  conjecture,  proved  by Grigori Perelman, implies that every
  closed  connected 3-manifold with a finite fundamental group is homeomorphic
  to a spherical 3-manifold.[133X
  
  [33X[0;0YA  spherical  3-manifold [22XS^3/Γ[122X has finite fundamental group isomorphic to [22XΓ[122X.
  This fundamental group is one of:[133X
  
  [30X    [33X[0;6Y[22XΓ=C_m=⟨ x | x^m⟩[122X ([12Xcyclic fundamental group[112X)[133X
  
  [30X    [33X[0;6Y[22XΓ=C_m×  ⟨  x,y | xyx^-1=y^-1, x^2^k=y^n ⟩[122X for integers [22Xk, mge 1, nge 2[122X
        and [22Xm[122X coprime to [22X2n[122X ([12Xprism manifold case[112X)[133X
  
  [30X    [33X[0;6Y[22XΓ=  C_m×  ⟨ x,y, z | (xy)^2=x^2=y^2, zxz^-1=y, zyz^-1=xy, z^3^k=1⟩[122X for
        integers [22Xk,mge 1[122X and [22Xm[122X coprime to 6 ([12Xtetrahedral case[112X)[133X
  
  [30X    [33X[0;6Y[22XΓ=C_m×⟨ x,y | (xy)^2=x^3=y^4⟩[122X for [22Xmge 1[122X coprime to 6 ([12Xoctahedral case[112X)[133X
  
  [30X    [33X[0;6Y[22XΓ=C_m×  ⟨  x,y  | (xy)^2=x^3=y^5⟩[122X for [22Xmge 1[122X coprime to 30 ([12Xicosahedral
        case[112X).[133X
  
  [33X[0;0YThis    list    of    cases    is    taken    from   the   Wikipedia   pages
  ([7Xhttps://en.wikipedia.org/wiki/Spherical_3-manifold[107X).   The   group   [22XΓ[122X  has
  periodic cohomology since it acts on a sphere. The cyclic group has period 2
  and  in  the  other  four  cases  it has period 4. (Recall that in general a
  finite group [22XG[122X has [13Xperiodic cohomology of period [22Xn[122X[113X if there is an element [22Xu∈
  H^n(G,  Z)[122X  such  that  the cup product [22X- ∪ u: H^k(G, Z) → H^k+n(G, Z)[122X is an
  isomorphism for all [22Xkge 1[122X. It can be shown that [22XG[122X has periodic cohomology of
  period [22Xn[122X if and only if [22XH^n(G, Z)= Z_|G|[122X.)[133X
  
  [33X[0;0YThe  cohomology  of  the cyclic group is well-known, and the cohomology of a
  direct  product  can  be obtained from that of the factors using the Kunneth
  formula.[133X
  
  [33X[0;0YIn   the   icosahedral   case   with   [22Xm=1[122X   the  following  commands  yield
  $$H^\ast(\Gamma,\mathbb Z)=Z[t]/(120t=0)$$ with generator [22Xt[122X of degree 4. The
  final  command  demonstrates  that  a  periodic  resolution  is  used in the
  computation.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XF:=FreeGroup(2);;x:=F.1;;y:=F.2;;[127X[104X
    [4X[25Xgap>[125X [27XG:=F/[(x*y)^2*x^-3, x^3*y^-5];;[127X[104X
    [4X[25Xgap>[125X [27XOrder(G);[127X[104X
    [4X[28X120[128X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionSmallGroup(G,5);;[127X[104X
    [4X[25Xgap>[125X [27Xn:=0;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 0 ][128X[104X
    [4X[25Xgap>[125X [27Xn:=1;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=2;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=3;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=4;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 120 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XList([0..5],k->R!.dimension(k));[127X[104X
    [4X[28X[ 1, 2, 2, 1, 1, 2 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIn  the  octahedral  case  with  [22Xm=1[122X  we obtain $$H^\ast(\Gamma,\mathbb Z) =
  \mathbb  Z[s,t]/(s^2=24t,  2s=0,  48t=0)$$  where  [22Xs[122X  has degree 2 and [22Xt[122X has
  degree 4, from the following commands.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XF:=FreeGroup(2);;x:=F.1;;y:=F.2;;[127X[104X
    [4X[25Xgap>[125X [27XG:=F/[(x*y)^2*x^-3, x^3*y^-4];;[127X[104X
    [4X[25Xgap>[125X [27XOrder(G);[127X[104X
    [4X[28X48[128X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionFiniteGroup(G,5);;[127X[104X
    [4X[25Xgap>[125X [27Xn:=0;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 0 ][128X[104X
    [4X[25Xgap>[125X [27Xn:=1;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=2;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 2 ][128X[104X
    [4X[25Xgap>[125X [27Xn:=3;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=4;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 48 ][128X[104X
    [4X[25Xgap>[125X [27XIntegralCupProduct(R,[1],[1],2,2);[127X[104X
    [4X[28X[ 24 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIn  the  tetrahedral  case  with  [22Xm=1[122X we obtain $$H^\ast(\Gamma,\mathbb Z) =
  \mathbb  Z[s,t]/(s^2=16t,  3s=0,  24t=0)$$  where  [22Xs[122X  has degree 2 and [22Xt[122X has
  degree 4, from the following commands.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XF:=FreeGroup(3);;x:=F.1;;y:=F.2;;z:=F.3;;[127X[104X
    [4X[25Xgap>[125X [27XG:=F/[(x*y)^2*x^-2, x^2*y^-2, z*x*z^-1*y^-1, z*y*z^-1*y^-1*x^-1,z^3];;[127X[104X
    [4X[25Xgap>[125X [27XOrder(G);[127X[104X
    [4X[28X24[128X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionFiniteGroup(G,5);;[127X[104X
    [4X[25Xgap>[125X [27Xn:=1;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=2;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 3 ][128X[104X
    [4X[25Xgap>[125X [27Xn:=3;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27Xn:=4;;Cohomology(HomToIntegers(R),n);[127X[104X
    [4X[28X[ 24 ][128X[104X
    [4X[25Xgap>[125X [27XIntegralCupProduct(R,[1],[1],2,2);[127X[104X
    [4X[28X[ 16 ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YA  theoretical calculation of the integral and mod-p cohomology rings of all
  of these fundamental groups of spherical 3-manifolds is given in [TZ08].[133X
  
  
  [1X7.11 [33X[0;0YExplicit cocycles[133X[101X
  
  [33X[0;0YGiven  a [22XZG[122X-resolution [22XR_∗[122X and a [22XZG[122X-module [22XA[122X, one defines an [13X[22Xn[122X-cocycle[113X to be
  a  [22XZG[122X-homomorphism  [22Xf:  R_n → A[122X for which the composite homomorphism [22Xfd_n+1:
  R_n+1→ A[122X is zero. If [22XR_∗[122X happens to be the standard bar resolution (i.e. the
  cellular  chain  complex  of  the  nerve  of the group [22XG[122X considered as a one
  object  category) then the free [22XZG[122X-generators of [22XR_n[122X are indexed by [22Xn[122X-tuples
  [22X(g_1  |  g_2 | ... | g_n)[122X of elements [22Xg_i[122X in [22XG[122X. In this case we say that the
  [22Xn[122X-cocycle  is  a  [13Xstandard  n-cocycle[113X  and we think of it as a set-theoretic
  function[133X
  
  [33X[0;0Y[22Xf : G × G × ⋯ × G ⟶ A[122X[133X
  
  [33X[0;0Ysatisfying  a  certain  algebraic  cocycle condition. Bearing in mind that a
  standard [22Xn[122X-cocycle really just assigns an element [22Xf(g_1, ... ,g_n) ∈ A[122X to an
  [22Xn[122X-simplex  in  the  nerve of [22XG[122X , the cocycle condition is a very natural one
  which  states that [13X[22Xf[122X must vanish on the boundary of a certain [22X(n+1)[122X-simplex[113X.
  For [22Xn=2[122X the condition is that a [22X2[122X-cocycle [22Xf(g_1,g_2)[122X must satisfy[133X
  
  [33X[0;0Y[22Xg.f(h,k) + f(g,hk) = f(gh,k) + f(g,h)[122X[133X
  
  [33X[0;0Yfor all [22Xg,h,k ∈ G[122X. This equation is explained by the following picture.[133X
  
  [33X[0;0YThe  definition  of a cocycle clearly depends on the choice of [22XZG[122X-resolution
  [22XR_∗[122X. However, the cohomology group [22XH^n(G,A)[122X, which is a group of equivalence
  classes of [22Xn[122X-cocycles, is independent of the choice of [22XR_∗[122X.[133X
  
  [33X[0;0YThere  are  some  occasions  when  one  needs  explicit examples of standard
  cocycles. For instance:[133X
  
  [30X    [33X[0;6YLet  [22XG[122X  be a finite group and [22Xk[122X a field of characteristic [22X0[122X. The group
        algebra  [22Xk(G)[122X,  and the algebra [22XF(G)[122X of functions [22Xd_g: G→ k, h→ d_g,h[122X,
        are  both  Hopf algebras. The tensor product [22XF(G) ⊗ k(G)[122X also admits a
        Hopf  algebra  structure  known  as the quantum double [22XD(G)[122X. A twisted
        quantum  double [22XD_f(G)[122X was introduced by R. Dijkraaf, V. Pasquier & P.
        Roche [DPR91]. The twisted double is a quasi-Hopf algebra depending on
        a  [22X3[122X-cocycle  [22Xf:  G×  G×  G→  k[122X. The multiplication is given by [22X(d_g ⊗
        x)(d_h  ⊗  y)  =  d_gx,xhβ_g(x,y)(d_g  ⊗  xy)[122X  where [22Xβ_a[122X is defined by
        [22Xβ_a(h,g)  = f(a,h,g) f(h,h^-1ah,g)^-1 f(h,g,(hg)^-1ahg)[122X . Although the
        algebraic  structure  of  [22XD_f(G)[122X  depends  very much on the particular
        [22X3[122X-cocycle [22Xf[122X, representation-theoretic properties of [22XD_f(G)[122X depend only
        on the cohomology class of [22Xf[122X.[133X
  
  [30X    [33X[0;6YAn  explicit  [22X2[122X-cocycle  [22Xf:  G×  G→  A[122X  is  needed  to  construct  the
        multiplication  [22X(a,g)(a',g')  =  (a  +  g⋅  a'  + f(g,g'), gg')[122X in the
        extension  a  group  [22XG[122X  by  a [22XZG[122X-module [22XA[122X determined by the cohomology
        class of [22Xf[122X in [22XH^2(G,A)[122X. See [14X6.6[114X.[133X
  
  [30X    [33X[0;6YIn work on coding theory and Hadamard matrices a number of papers have
        investigated  square matrices [22X(a_ij)[122X whose entries [22Xa_ij=f(g_i,g_j)[122X are
        the  values  of  a  [22X2[122X-cocycle  [22Xf: G× G → Z_2[122X where [22XG[122X is a finite group
        acting trivially on [22XZ_2[122X. See for instance [Hor00] and [14X6.7[114X.[133X
  
  [33X[0;0YGiven  a [22XZG[122X-resolution [22XR_∗[122X (with contracting homotopy) and a [22XZG[122X-module [22XA[122X one
  can  use  HAP  commands  to compute explicit standard [22Xn[122X-cocycles [22Xf: G^n → A[122X.
  With  the  twisted quantum double in mind, we illustrate the computation for
  [22Xn=3[122X,  [22XG=S_3[122X,  and  [22XA=U(1)[122X  the  group  of  complex numbers of modulus [22X1[122X with
  trivial [22XG[122X-action.[133X
  
  [33X[0;0YWe  first  compute  a  [22XZG[122X-resolution  [22XR_∗[122X. The Universal Coefficient Theorem
  gives   an   isomorphism   [22XH_3(G,U(1))   =  Hom_  Z(H_3(G,  Z),  U(1))[122X,  The
  multiplicative group [22XU(1)[122X can thus be viewed as [22XZ_m[122X where [22Xm[122X is a multiple of
  the exponent of [22XH_3(G, Z)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:=SymmetricGroup(3);;[127X[104X
    [4X[25Xgap>[125X [27XR:=ResolutionFiniteGroup(G,4);;[127X[104X
    [4X[25Xgap>[125X [27XTR:=TensorWithIntegers(R);;[127X[104X
    [4X[25Xgap>[125X [27XHomology(TR,3);[127X[104X
    [4X[28X[ 6 ][128X[104X
    [4X[25Xgap>[125X [27XR!.dimension(3);[127X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XR!.dimension(4);[127X[104X
    [4X[28X5[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YWe thus replace the very infinite group U(1) by the finite cyclic group [22XZ_6[122X.
  Since  the  resolution  [22XR_∗[122X  has [22X4[122X generators in degree [22X3[122X, a homomorphism [22Xf:
  R^3→  U(1)[122X  can be represented by a list [22Xf=[f_1, f_2, f_3, f_4][122X with [22Xf_i[122X the
  image  in  [22XZ_6[122X  of  the  [22Xi[122Xth  generator.  The  cocycle condition on [22Xf[122X can be
  expressed as a matrix equation[133X
  
  [33X[0;0Y[22XMf^t = 0 mod 6[122X.[133X
  
  [33X[0;0Ywhere  the  matrix  [22XM[122X is obtained from the following command and [22Xf^t[122X denotes
  the transpose.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XM:=CocycleCondition(R,3);;[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YA  particular  cocycle  [22Xf=[f_1, f_2, f_3, f_4][122X can be obtained by choosing a
  solution to the equation Mf^t=0.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSolutionsMod2:=NullspaceModQ(TransposedMat(M),2);[127X[104X
    [4X[28X[ [ 0, 0, 0, 0 ], [ 0, 0, 1, 1 ], [ 1, 1, 0, 0 ], [ 1, 1, 1, 1 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSolutionsMod3:=NullspaceModQ(TransposedMat(M),3);[127X[104X
    [4X[28X[ [ 0, 0, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 2 ], [ 0, 0, 1, 0 ],[128X[104X
    [4X[28X  [ 0, 0, 1, 1 ], [ 0, 0, 1, 2 ], [ 0, 0, 2, 0 ], [ 0, 0, 2, 1 ],[128X[104X
    [4X[28X  [ 0, 0, 2, 2 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YA  non-standard  [22X3[122X-cocycle  [22Xf[122X  can  be converted to a standard one using the
  command  [10XStandardCocycle(R,f,n,q)[110X  . This command inputs [22XR_∗[122X, integers [22Xn[122X and
  [22Xq[122X,  and an [22Xn[122X-cocycle [22Xf[122X for the resolution [22XR_∗[122X. It returns a standard cocycle
  [22XG^n → Z_q[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=3*SolutionsMod2[3] - SolutionsMod3[5];   #An example solution to Mf=0 mod 6.[127X[104X
    [4X[28X[ 3, 3, -1, -1 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XStandard_f:=StandardCocycle(R,f,3,6);;[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xg:=Random(G); h:=Random(G); k:=Random(G);[127X[104X
    [4X[28X(1,2)[128X[104X
    [4X[28X(1,3,2)[128X[104X
    [4X[28X(1,3)[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XStandard_f(g,h,k);[127X[104X
    [4X[28X3[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YA function [22Xf: G× G× G → A[122X is a standard [22X3[122X-cocycle if and only if[133X
  
  [33X[0;0Y[22Xg⋅ f(h,k,l) - f(gh,k,l) + f(g,hk,l) - f(g,h,kl) + f(g,h,k) = 0[122X[133X
  
  [33X[0;0Yfor  all [22Xg,h,k,l ∈ G[122X. In the above example the group [22XG=S_3[122X acts trivially on
  [22XA=Z_6[122X.  The  following commands show that the standard [22X3[122X-cocycle produced in
  the example really does satisfy this [22X3[122X-cocycle condition. B[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xsf:=Standard_f;;[127X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XTest:=function(g,h,k,l);[127X[104X
    [4X[25X>[125X [27Xreturn sf(h,k,l) - sf(g*h,k,l) + sf(g,h*k,l) - sf(g,h,k*l) + sf(g,h,k);[127X[104X
    [4X[25X>[125X [27Xend;[127X[104X
    [4X[28Xfunction( g, h, k, l ) ... end[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xfor g in G do for h in G do for k in G do for l in G do[127X[104X
    [4X[25X>[125X [27XPrint(Test(g,h,k,l),",");[127X[104X
    [4X[25X>[125X [27Xod;od;od;od;[127X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,6,0,0,6,[128X[104X
    [4X[28X0,0,0,0,0,6,6,6,0,6,0,12,12,6,12,6,0,12,6,0,6,6,0,0,0,0,0,0,0,12,12,6,6,6,0,[128X[104X
    [4X[28X6,6,0,6,6,0,0,-6,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,6,0,0,6,6,0,6,6,[128X[104X
    [4X[28X0,6,0,0,6,6,6,0,0,0,0,0,0,0,-6,0,0,-6,0,-6,0,0,0,0,0,0,0,0,6,6,0,6,0,0,6,0,0,[128X[104X
    [4X[28X0,0,0,6,6,6,0,0,0,6,6,6,0,0,0,0,-6,0,6,6,0,0,0,0,0,0,0,12,6,6,0,6,0,0,0,0,12,[128X[104X
    [4X[28X6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,6,0,0,0,0,0,6,6,[128X[104X
    [4X[28X6,0,0,0,6,12,6,6,0,0,0,-6,0,0,6,0,0,0,0,0,0,0,12,12,6,6,6,0,0,0,0,6,6,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,6,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,[128X[104X
    [4X[28X6,6,0,6,6,0,12,12,6,12,12,0,0,0,0,0,0,0,6,6,0,0,0,0,6,6,6,12,12,0,-6,-6,0,0,[128X[104X
    [4X[28X0,0,6,6,0,0,6,0,0,6,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,[128X[104X
    [4X[28X0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,6,0,6,6,0,6,0,0,6,6,6,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,-6,0,6,0,6,0,6,0,0,0,0,0,0,0,12,12,6,12,12,0,6,6,0,6,6,0,[128X[104X
    [4X[28X0,0,0,0,0,0,12,12,6,12,12,0,6,6,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,[128X[104X
    [4X[28X0,0,0,0,0,0,6,0,0,6,6,0,6,6,0,6,0,0,6,6,6,0,0,0,-6,0,0,0,-6,0,0,-6,0,-6,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,[128X[104X
    [4X[28X0,0,0,0,6,6,0,-6,0,0,-6,0,0,12,6,0,-6,-6,0,0,0,0,6,6,0,0,6,0,0,6,0,6,6,0,0,0,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[128X[104X
    [4X[28X0,0,0,-6,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,0,6,12,0,6,0,0,6,0,0,0,6,0,0,0,0,0,0,[128X[104X
    [4X[28X0,6,12,0,0,0,0,0,0,0,6,6,0,-6,-6,0,0,0,0,0,0,0,0,6,0,0,6,0,6,6,0,0,0,0,0,0,0,[128X[104X
    [4X[28X6,0,0,0,6,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,[128X[104X
    [4X[28X0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,6,6,0,6,6,0,6,6,6,12,12,0,0,0,0,0,0,0,6,6,0,[128X[104X
    [4X[28X6,6,0,6,6,6,12,12,0,0,0,0,0,0,0,6,6,0,0,6,0,0,6,0,6,6,[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
