Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 513636######################################################### ######################################################### CohomologicalData:=function(arg) local G,N,file, alpha, alpha1, A, gens, gensletters, gensletters1, gensdegrees, d, tmp, tmpdir, x, relabel, relabeltwo, pres, rels, r, s,i, k, w; G:=arg[1]; N:=arg[2]; if Length(arg)=2 then tmpdir := DirectoryTemporary();; file:=Filename( tmpdir , "cdata.txt" ); else file:=arg[3]; fi; AppendTo(file,"Group order: ", IdGroup(G)[1],"\n"); AppendTo(file,"Group number: ",IdGroup(G)[2],"\n"); AppendTo(file,"Group description: ",StructureDescription(G),"\n\n"); alpha:= ['1','a','b','c','d','e','f','g','h','p','q','r','s','t','u','v','w','x']; alpha1:=List(alpha,i->[i]); A:=ModPCohomologyRing(G,N); gens:=ModPRingGenerators(A); N:=Maximum(List(gens,A!.degree)); if N=2^Log(N,2) then N:=N-1; fi; N:=2^Log(N,2); A:=Mod2SteenrodAlgebra(G,N); gens:=ModPRingGenerators(A); gensletters:=alpha{[1..Length(gens)]}; gensletters1:=alpha1{[1..Length(gens)]}; AppendTo(file,"Cohomology generators\n"); gensdegrees:=List(gens,A!.degree); for d in SSortedList(gensdegrees) do if d>0 then AppendTo(file, "Degree ",d,": "); tmp:=Filtered([1..Length(gens)],i->A!.degree(gens[i])=d); tmp:=gensletters1{tmp}; for x in tmp do if Position(tmp,x)<Length(tmp) then AppendTo(file,x,", "); else AppendTo(file,x,"\n"); fi; od; fi; od; AppendTo(file,"\n"); ################################## ################################## relabel:=function(ss) local i, s, us; s:=String(ss); s:=List(s,i->i); s:=Filtered(s,i->not i='x'); Add(s,' '); us:=Filtered([1..Length(s)],i->s[i]='_'); for i in us do s[i+1]:=gensletters[1+EvalString([s[i+1]])]; if not s[i+2] in ['^','+','*'] then s[i+2]:=' '; fi; od; s:=Filtered(s,i->not i='_'); s:=Filtered(s,i->not i=' '); if Length(s)=0 then return 0; fi; return s; end; ################################## ################################## ################################## ################################## relabeltwo:=function(ss) local i, s, us, t, ii, l; s:=String(ss); s:=List(s,i->i); s:=Filtered(s,i->not i='v'); us:=Filtered([1..Length(s)],i->s[i]='.'); Add(s,' '); for i in us do ii:=i+1; l:=[]; while not s[ii] in ['^','+','*', ' '] do Add(l,s[ii]); s[ii]:=' '; ii:=ii+1; od; t:=Basis(A)[EvalString(l)]; s[i+1]:=gensletters[Position(gens,t)]; #if not s[i+2] in ['^','+','*'] then s[i+2]:=' '; fi; od; s:=Filtered(s,i->not i='.'); s:=Filtered(s,i->not i=' '); if Length(s)=0 then return 0; fi; return s; end; ################################## ################################## AppendTo(file,"Cohomology relations\n"); pres:=Mod2CohomologyRingPresentation(A); rels:=pres!.relations; for r in [1..Length(rels)] do s:=relabel(rels[r]); AppendTo(file,r,": ",s,"\n"); od; AppendTo(file,"\n"); AppendTo(file,"Steenrod squares\n"); for i in [2..Length(gens)] do for k in [1..A!.degree(gens[i])-1] do if k=2^Log(k,2)then AppendTo(file,"Sq^",k,"(",[gensletters[i]],")="); w:=Sq(A,k,gens[i]); if IsZero(w) then AppendTo(file,0,"\n"); else w:=PrintAlgebraWordAsPolynomial(A,w,1); w:=relabeltwo(w); AppendTo(file,w,"\n"); fi; fi; od; od; Exec(Concatenation("display ",file)); if Length(arg)=2 then RemoveFile(file); fi; end; ######################################################### #########################################################