1
2##################################################
3##################################################
4InstallGlobalFunction(ConnectingCohomologyHomomorphism,
5#function(phi, n)
6function(arg)
7local phi, n, hom, R, G, A, B, K, CA, CB, CK, CAn, CAn1, CBn, CKn1,
8      HCB,HCK, hcb, hck,delta, genshcb, imgenshcb,
9      natK, natB, x, xtilde, FBA1, FBA, FAK, FAK1, CAnboundary;
10
11# n is a nonnegative integer
12# phi is a surjective homomomorphism phi:A-->B of G-modules represented as G-outer groups
13# K = kernel(phi)
14# We will return the homomorphism hom:H^n(G,B)-->H^{n+1}(G,K) represented as G-outer groups
15
16phi:=arg[1];
17n:=arg[2];
18
19A:=phi!.Source;
20B:=phi!.Target;
21K:=KernelOfGOuterGroupHomomorphism(phi);
22G:=A!.ActingGroup;
23if Length(arg)=3 then R:=arg[3]; else
24R:=ResolutionFiniteGroup(G,n+2); fi;
25CB:=HomToGModule(R,B);
26CBn:=Source(CB!.boundary(n)); CBn:=CBn!.ActedGroup;
27CA:=HomToGModule(R,A);
28CAn:=Source(CA!.boundary(n)); CAn:=CAn!.ActedGroup;
29CAn1:=Source(CA!.boundary(n+1)); CAn1:=CAn1!.ActedGroup;
30CAnboundary:=CA!.boundary(n); CAnboundary:=CAnboundary!.Mapping;
31CK:=HomToGModule(R,K);
32CKn1:=Source(CK!.boundary(n+1)); CKn1:=CKn1!.ActedGroup;
33HCB:=CohomologyModule(CB,n);
34HCK:=CohomologyModule(CK,n+1);
35hcb:=HCB!.ActedGroup;
36hck:=HCK!.ActedGroup;
37
38genshcb:=GeneratorsOfGroup(hcb);
39#imgenshcb:=List(genshcb,x->Identity(hck));  #WRONG
40imgenshcb:=[];
41
42######################## create imgenshcb  ###########
43
44natB:=HCB!.nat; natB:=natB!.Mapping;
45natK:=HCK!.nat; natK:=natK!.Mapping;
46
47################
48FBA1:=function(i,x)
49local y;
50
51y:=Image(Projection(CBn,i),x);
52y:=PreImagesRepresentative(phi!.Mapping,y);
53y:=Image(Embedding(CAn,i),y);
54
55return y;
56end;
57
58################
59
60################
61FBA:=function(x)
62local i , y;
63
64y:=One(CAn);
65for i in [1..R!.dimension(n)] do
66y:=y*FBA1(i,x);
67od;
68
69return y;
70end;
71################
72
73################
74FAK1:=function(i,x)
75local y;
76
77y:=Image(Projection(CAn1,i),x);
78y:=Image(Embedding(CKn1,i),y);
79
80return y;
81end;
82
83################
84
85################
86FAK:=function(x)
87local i , y;
88
89y:=One(CKn1);
90for i in [1..R!.dimension(n+1)] do
91y:=y*FAK1(i,x);
92od;
93
94return y;
95end;
96################
97
98
99
100for x in genshcb do
101xtilde:=PreImagesRepresentative(natB,x);
102xtilde:=FBA(xtilde);
103xtilde:=Image( CAnboundary, xtilde);
104xtilde:=FAK(xtilde);
105xtilde:=Image(natK,xtilde);
106Add(imgenshcb,xtilde);
107od;
108######################## imgenshcb created ###########
109
110delta:=GroupHomomorphismByImages(hcb,hck,genshcb,imgenshcb);
111
112
113hom:=GOuterGroupHomomorphism();;
114hom!.Source:=HCB;
115hom!.Target:=HCK;
116hom!.Mapping:=delta;
117
118return hom;
119end);
120##################################################
121##################################################
122
123
124
125
126