Skip to content

Commit

Permalink
TWOCOHOM: Thorough test: Construct perfect groups
Browse files Browse the repository at this point in the history
  • Loading branch information
hulpke committed Apr 11, 2019
1 parent c755f5f commit cde56de
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
68 changes: 68 additions & 0 deletions tst/testextra/makeperfect.g
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# construct perfect groups of given order

Practice:=function(n) #makes perfect
local isot,res,resp,d,i,j,nt,p,e,q,cf,m,coh,v,new,quot,nts,pf,pl;
isot:=function(g,h)
if Collected(List(ConjugacyClasses(g),
x->[Order(Representative(x)),Size(x)]))<>
Collected(List(ConjugacyClasses(g),
x->[Order(Representative(x)),Size(x)])) then return false;
fi;
return IsomorphismGroups(g,h)<>fail;
end;

res:=[];
resp:=[];
d:=Filtered(DivisorsInt(n),x->x<n);
for i in d do
nts:=n/i;
if IsPrimePowerInt(nts) then
p:=Factors(nts)[1];
e:=LogInt(nts,p);
pl:=[];
for j in [1..NrPerfectGroups(i)] do
q:=PerfectGroup(IsPermGroup,i,j);
new:=Name(q);
q:=Group(SmallGeneratingSet(q));
SetName(q,new);
Add(pl,q);
od;
for j in [1..Length(pl)] do
q:=pl[j];
#Print("Using ",i,", ",j,": ",q,"\n");
cf:=IrreducibleModules(q,GF(p),e)[2];
cf:=Filtered(cf,x->x.dimension=e);
for m in cf do
#Print("Module dimension ",m.dimension,"\n");
coh:=TwoCohomologyGeneric(q,m);
if Length(coh.cohomology)>0 then # direct product is not perfect
for v in VectorSpace(GF(p),coh.cohomology) do
new:=FpGroupCocycle(coh,v,true);
if IsPerfect(new) then
# could it have been gotten in another way?
pf:=Image(IsomorphismPermGroup(new));
nt:=NormalSubgroups(pf);
if ForAll(nt,x->Size(x)=1 or Size(x)>=nts) then
nt:=Filtered(nt,x->Size(x)=nts);
if (not ForAny(List(nt,x->pf/x),x->ForAny([1..j-1],y->
isot(pl[y],x)))) and ForAll(resp,
x->isot(x,Image(IsomorphismPermGroup(new)))=false) then
Add(res,new);
Add(resp,Image(IsomorphismPermGroup(new)));
#Print("found nr. ",Length(res),"\n");
else
#Print("smallerb\n");
fi;
else
#Print("smallera\n");
fi;
fi;
od;
fi;
od;
od;
fi;
od;
return res;
end;

13 changes: 13 additions & 0 deletions tst/testextra/perfect.tst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#############################################################################
##
## Test for cohomology and isomorphism: Recompute perfect groups
##
gap> START_TEST("perfect.tst");
gap> READ_GAP_ROOT("tst/testextra/makeperfect.g");;
gap> l:=Practice(1920);;
gap> Length(l);
7
gap> l:=Practice(10752);;
gap> Length(l);
9
gap> STOP_TEST( "perfect.tst", 1);

0 comments on commit cde56de

Please sign in to comment.