GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#(C) Graham Ellis 2005-2006 ##################################################################### ##################################################################### InstallGlobalFunction(Syzygy, function(R,g) local Homotopy, Syz, i, Elts, Mult, n, R203, R1023, R1203, R102; n:=Length(g); ##################################################################### Elts:=function(x); return Position(R!.elts,x); end; ##################################################################### ##################################################################### Mult:=function(x,w); #x is in the group G. return List(w,y->[y[1],Position(R!.elts,x*R!.elts[y[2]])]); end; ##################################################################### ##################################################################### Homotopy:=function(i,w) local ans, x; ans:=[]; for x in w do ans:=AddFreeWords(ans,R!.homotopy(i,x)); od; return ans; end; ##################################################################### if n<1 or n>3 then Print("ERROR: Syzygy() is so far only implemented for 1-, 2- and 3-syzygies. \n"); return fail; fi; ##################### IF N=1 ######################################## if n=1 then Syz:=[[1,Elts(g[1])]]; Syz:=AddFreeWords(Syz,[[-1,Elts(g[1]*g[1]^-1)]]); return Homotopy(0,Syz); fi; ##################################################################### ##################### IF N=2 ######################################## if n=2 then Syz:= Syzygy(R,[g[1]]); Syz:=AddFreeWords(Syz,Mult(g[1],Syzygy(R,[g[2]]))); Syz:=AddFreeWords(Syz,NegateWord(Syzygy(R,[g[1]*g[2]]))) ; return Homotopy(1,Syz); fi; ##################### FI N=2 ######################################## ##################### IF N=3 ######################################## Syz:=Mult(g[1], Syzygy(R,[g[2],g[3]])); Syz:=AddFreeWords(Syz,Syzygy(R,[g[1],g[2]*g[3]])); Syz:=AddFreeWords(Syz,NegateWord(Syzygy(R,[g[1]*g[2],g[3]]))); Syz:=AddFreeWords(Syz,NegateWord(Syzygy(R,[g[1],g[2]]))); return Homotopy(2,Syz); #################### FI N=3 ######################################### end); ##################################################################### ##################################################################### ##################################################################### ##################################################################### InstallGlobalFunction(StandardCocycle, function(arg) local R,f,n,q,Standard; R:=arg[1]; f:=arg[2]; n:=arg[3]; if Length(arg)>3 then q:=arg[4]; else q:=0; fi; ##################################################################### Standard:=function(arg) local S,v,x,g,h,k,lst; g:=arg[1]; lst:=[g]; if Length(arg)>1 then h:=arg[2]; lst:=[g,h]; fi; if Length(arg)>2 then k:=arg[3]; lst:=[g,h,k]; fi; S:=Syzygy(R,lst); Apply(S,x->x[1]); v:=List([1..R!.dimension(n)],x->0); for x in S do v[AbsoluteValue(x)]:=v[AbsoluteValue(x)] + SignInt(x); od; if q=0 then return v*f; else return v*f mod q; fi; end; ##################################################################### return Standard; end); ##################################################################### #####################################################################