Skip to content

Commit

Permalink
TWOCOHOM: Added tests: Construction of perfect groups
Browse files Browse the repository at this point in the history
Includes action of compatible pairs on cohomology group and model.
  • Loading branch information
hulpke authored and fingolfin committed May 3, 2019
1 parent 18d1d83 commit 26716ce
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/twocohom.gi
Original file line number Diff line number Diff line change
Expand Up @@ -900,8 +900,6 @@ local field,fp,fpg,gens,hom,mats,fm,mon,kb,tzrules,dim,rules,eqs,i,j,k,l,o,l1,
return a;
end;

onemat:=One(mo.generators[1]);
zerovec:=Zero(onemat[1]);
# matrix corresponding to monoid word
mapped:=function(list)
local a,i;
Expand Down Expand Up @@ -1072,6 +1070,7 @@ local field,fp,fpg,gens,hom,mats,fm,mon,kb,tzrules,dim,rules,eqs,i,j,k,l,o,l1,
x->ImagesRepresentative(m,
PreImagesRepresentative(fm,x))); #Elements for monoid generators
pre:=mats;
onemat:=One(G);
for i in [1..Length(hastail)] do
r:=rules[hastail[i]];
m:=LeftQuotient(mapped(r[2]),mapped(r[1]));
Expand All @@ -1080,6 +1079,9 @@ local field,fp,fpg,gens,hom,mats,fm,mon,kb,tzrules,dim,rules,eqs,i,j,k,l,o,l1,
od;
fi;

onemat:=One(mo.generators[1]);
zerovec:=Zero(onemat[1]);

mats:=List(GeneratorsOfMonoid(mon),
x->ImagesRepresentative(hom,PreImagesRepresentative(fp,
PreImagesRepresentative(fm,x)))); # matrices for monoid generators
Expand Down
81 changes: 81 additions & 0 deletions tst/testextra/makeperfect.g
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# 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,comp,reps;
isot:=function(g,h)
local c,d;
if Collected(List(ConjugacyClasses(g),
x->[Order(Representative(x)),Size(x)]))<>
Collected(List(ConjugacyClasses(h),
x->[Order(Representative(x)),Size(x)])) then return false;
fi;
if Collected(List(MaximalSubgroupClassReps(g),Size))<>
Collected(List(MaximalSubgroupClassReps(h),Size)) then return false;
fi;
if Collected(List(NormalSubgroups(g),
x->[Size(x),IsAbelian(x),Size(Centralizer(g,x))]))<>
Collected(List(NormalSubgroups(h),
x->[Size(x),IsAbelian(x),Size(Centralizer(h,x))])) then return false;
fi;
c:=CharacterTable(g);;Irr(c);
d:=CharacterTable(h);;Irr(d);
if TransformingPermutationsCharacterTables(c,d)=fail 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);

comp:=CompatiblePairs(q,m);
reps:=CompatiblePairOrbitRepsGeneric(comp,coh);
for v in reps 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;

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);
25 changes: 25 additions & 0 deletions tst/testinstall/twocohom.tst
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
gap> START_TEST("twocohom.tst");
gap> g:=PerfectGroup(IsPermGroup,1344,1);;
gap> mo:=IrreducibleModules(g,GF(2),1);;List(mo[2],x->x.dimension);
[ 1 ]
gap> mo:=IrreducibleModules(g,GF(2),0);;List(mo[2],x->x.dimension);
[ 1, 3, 3, 8 ]
gap> coh:=TwoCohomologyGeneric(g,mo[2][2]:
> model:=PerfectGroup(IsPermGroup,10752,1));;
gap> Length(coh.cohomology);
2
gap> comp:=CompatiblePairs(g,mo[2][2]);
<group of size 2688 with 5 generators>
gap> reps:=CompatiblePairOrbitRepsGeneric(comp,coh);;Length(reps);
3
gap> h:=FpGroupCocycle(coh,reps[1],true);;
gap> h:=Image(IsomorphismPermGroup(h));;
gap> Collected(List(MaximalSubgroupClassReps(h),Size));
[ [ 1344, 7 ], [ 1536, 2 ] ]
gap> h:=FpGroupCocycle(coh,reps[2],true);;
gap> h:=Image(IsomorphismPermGroup(h));;
gap> Collected(List(MaximalSubgroupClassReps(h),Size));
[ [ 1344, 3 ], [ 1536, 2 ] ]

# that's all, folks
gap> STOP_TEST( "twocohom.tst", 1);

0 comments on commit 26716ce

Please sign in to comment.