Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346#(C) Graham Ellis, 2005-2006 cnt:=0; ##################################################################### InstallGlobalFunction(PrimePartDerivedFunctorViaSubgroupChain, function(GG,R,F,n) local G,C,P,P1, prime, AscChn, HP, HPrels, AddRels, Q, DCRS, L, S, f,fx, imfx, bool, dcrs, HK, HPK, HKhomHPK, HPKhomHP, HKhomHP, HKx,HPKx, HKxhomHPKx, HPKxhomHP, HKxhomHP, HKhomHKx, HKhomHP2, x, y, i, Cent, hh, HPpres, ord; #################################### #################################### P:=R!.group; prime:=PrimePGroup(P); C:=F(R); if IsGroup(GG) then G:=GG; P1:=Normalizer(G,P); AscChn:=AscendingChain(G,P1); fi; if IsList(GG) then G:=GG[Length(GG)]; AscChn:=GG; P1:=Normalizer(G,P); fi; HP:=GroupHomomorphismByFunction(P,P,x->x); HP:=EquivariantChainMap(R,R,HP); HP:=F(HP); HP:=Homology(HP,n); HP:=Source(HP); if Length(AbelianInvariants(HP))=0 then return []; fi; HPrels:=[Identity(HP)]; #################################### #################################### ######################################### ######################################### AddRels:=function(Q,L) #Here P < Q < G where P=Syl_p(G) local i, hh, Lhh, gg, g, gg1, h, sylQQ, QQ, xx; QQ:=Intersection(Q,Q^L); sylQQ:=SylowSubgroup(QQ,prime); gg:=false; for g in Q do if IsSubgroup(P,sylQQ^g) then gg:=g; break; fi; od; if not Order(sylQQ)>1 then return; fi; ######################################### ######################################### if Order(P)/Order(sylQQ)>1 then #NEED TO OPTIMIZETHIS CHOICE!! S:=ResolutionGenericGroup(sylQQ,n+1); else S:=ResolutionFiniteSubgroup(R,sylQQ^gg); S!.group:=sylQQ; gg1:=gg^-1; S!.elts:=List(S!.elts,x->x^(gg1)); fi; ######################################### ######################################### hh:=Homology(F(S),n); if IsInt(hh) then hh:=List([1..hh],i->0); fi; if not Length(hh)>0 then return; fi; f:=GroupHomomorphismByFunction(sylQQ,P,x->x^gg); xx:=F(EquivariantChainMap(S,R,f));; HKhomHPK:=Homology(xx,n); HK:=Source(HKhomHPK); HPK:=Range(HKhomHPK); HPKhomHP:=GroupHomomorphismByImagesNC(HPK,HP,GeneratorsOfGroup(HPK), GeneratorsOfGroup(HP)); HKhomHP:=GroupHomomorphismByFunction(HK,HP,x-> Image(HPKhomHP, Image(HKhomHPK,x) ) ); fx:=GroupHomomorphismByFunction(sylQQ,Q,g->g^(L^-1)); imfx:=Image(fx); hh:=false; for h in Q do if IsSubgroup(P,imfx^h) then hh:=h; break; fi; od; Lhh:=L^-1*hh; #fx:=GroupHomomorphismByFunction(sylQQ,P,g->(g^(L^-1))^hh); fx:=GroupHomomorphismByFunction(sylQQ,P,g->g^Lhh); xx:=F(EquivariantChainMap(S,R,fx)); HKxhomHPKx:=Homology(xx,n); HKx:=Source(HKxhomHPKx); HPKx:=Parent(Image(HKxhomHPKx)); HPKxhomHP:=GroupHomomorphismByImagesNC(HPKx,HP,GeneratorsOfGroup(HPKx), GeneratorsOfGroup(HP)); HKxhomHP:=GroupHomomorphismByFunction(HKx,HP,x-> Image(HPKxhomHP, Image(HKxhomHPKx,x) ) ); HKhomHKx:=GroupHomomorphismByImagesNC(HK,HKx,GeneratorsOfGroup(HK),GeneratorsOfGroup(HKx)); HKhomHP2:=GroupHomomorphismByFunction(HK,HP,a-> Image(HKxhomHP, Image(HKhomHKx,a))); for x in GeneratorsOfGroup(HK) do Append(HPrels, [Image(HKhomHP,x)*Image(HKhomHP2,x)^-1]); od; end; ############################################# ############################################# #################################### #################################### ord:=function(x,y); return Order(x)<Order(y); end; if Order(P1)>Order(P) then DCRS:=SmallGeneratingSet(P1); for L in DCRS do AddRels(P,L); od; fi; for i in [2..Length(AscChn)] do DCRS:=List(DoubleCosetRepsAndSizes(AscChn[i],AscChn[i-1],AscChn[i-1]), x->x[1]); Cent:=Centralizer(AscChn[i],AscChn[i-1]); Sort(DCRS,ord); DCRS:=Filtered(DCRS,a->not a in Cent); dcrs:=[]; for x in DCRS do bool:=true; for y in dcrs do if y^-1*x in Cent or y^-1*x in P or x in Group(y) then bool:=false; break; fi; od; if bool then Add(dcrs,x); fi; od; for L in dcrs do cnt:=cnt+1; AddRels(AscChn[i-1],L); od; od; ######################################### ######################################### return AbelianInvariants(HP/NormalClosure(HP,Group(HPrels))); end); #####################################################################