1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
#(C) Graham Ellis, 2005-2006
#####################################################################
InstallGlobalFunction(PrimePartDerivedFunctor,
function(G,R,F,n)
local
C,P,P1, D,DCRS, L, AscChn,
K, gensK, S, f,fx,
HP, HK, HPK, HKhomHPK, HPKhomHP, HKhomHP,
HKx,HPKx,
HKxhomHPKx, HPKxhomHP, HKxhomHP, HKhomHKx, HKhomHP2,
HPrels, x, y, i,prime,
HPpres,G1,newDCRS;
C:=F(R);
P:=R!.group;
prime:=PrimePGroup(P);
P1:=Normalizer(G,P);
AscChn:=AscendingChain(G,P1);
D:= List(DoubleCosetRepsAndSizes(P1,P,P), x->x[1]);
D:=List(SmallGeneratingSet(P1),x->x);
DCRS:=D;
for i in [2..Length(AscChn)] do
D:=List(DoubleCosetRepsAndSizes(AscChn[i],AscChn[i-1],AscChn[i-1]),
x->x[1]);
Append(DCRS,D);
newDCRS:=[];
for x in DCRS do
for y in D do
Add(newDCRS,y*x);
od;od;
DCRS:=SSortedList(newDCRS);
od;
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)];
for L in DCRS do
K:=Intersection(P,P^L);
if Order(K)>1 then
gensK:=ReduceGenerators(GeneratorsOfGroup(K),K);
G1:=Group(Concatenation(gensK,[Identity(P)]));
if Order(G1)<=32 then
S:=ResolutionFiniteGroup(gensK,n+1);
else
S:=ResolutionNormalSeries(LowerCentralSeries(G1),n+1);
fi;
if Length(Homology(F(S),n))>0 then
f:=GroupHomomorphismByFunction(K,P,x->x);
HKhomHPK:=Homology(F(EquivariantChainMap(S,R,f)),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(K,P,g->Image(f,g)^(L^-1));
HKxhomHPKx:=Homology(F(EquivariantChainMap(S,R,fx)),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;
fi;
fi;
od;
return AbelianInvariants(HP/NormalClosure(HP,Group(HPrels)));
end);
#####################################################################
|