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