Skip to content

Commit

Permalink
REBASE: Simplify presentation before finding subgroup quotients
Browse files Browse the repository at this point in the history
Run Tietze in LargerAbelianQuotient with different heuristics
  • Loading branch information
hulpke committed Apr 28, 2019
1 parent b62ac95 commit 7dbac5b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
17 changes: 13 additions & 4 deletions lib/ghomfp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -799,6 +799,7 @@ local aug,w,p,pres,f,fam,opt;
pres := PresentationAugmentedCosetTable( aug, "y",0# printlevel
,true) ;# intialize tracking before the `1or2' routine!
opt:=TzOptions(pres);

if ValueOption("expandLimit")<>fail then
opt.expandLimit:=ValueOption("expandLimit");
else
Expand All @@ -815,12 +816,16 @@ local aug,w,p,pres,f,fam,opt;
opt.lengthLimit:=Int(3/2*pres!.tietze[TZ_TOTAL]); # not too big.
fi;
if ValueOption("generatorsLimit")<>fail then
opt.lengthLimit:=ValueOption("generatorsLimit");
opt.generatorsLimit:=ValueOption("generatorsLimit");
fi;

TzOptions(pres).printLevel:=InfoLevel(InfoFpGroup);
TzEliminateRareOcurrences(pres,50);
TzGoGo(pres); # cleanup
if ValueOption("quick")=true then
TzGo(pres);
else
TzEliminateRareOcurrences(pres,50);
TzGoGo(pres); # cleanup
fi;

# new free group
f:=FpGroupPresentation(pres,str);
Expand Down Expand Up @@ -1143,7 +1148,11 @@ InstallMethod(MaximalAbelianQuotient,
true, [IsSubgroupFpGroup], 0,
function(U)
local phi,m;
phi:=IsomorphismFpGroup(U);
# do cheaper Tietze (and thus do not store)
phi:=AttributeValueNotSet(IsomorphismFpGroup,U:
eliminationsLimit:=50,
generatorsLimit:=Length(GeneratorsOfGroup(Parent(U)))*LogInt(IndexInWholeGroup(U),2),
quick);
m:=MaximalAbelianQuotient(Image(phi));
SetAbelianInvariants(U,AbelianInvariants(Image(phi)));
return phi*MaximalAbelianQuotient(Image(phi));
Expand Down
4 changes: 2 additions & 2 deletions lib/twocohom.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1408,8 +1408,8 @@ local r,z,ogens,n,gens,str,dim,i,j,f,rels,new,quot,g,p,lay,m,e,fp,old,sim;
SetSize(fp,Size(r.group)*Size(r.module.field)^r.module.dimension);

if Length(arg)>2 and arg[3]=true then
#sim:=IsomorphismSimplifiedFpGroup(fp);
sim:=IdentityMapping(fp);
sim:=IsomorphismSimplifiedFpGroup(fp);
#sim:=IdentityMapping(fp);

g:=r.group;
quot:=InverseGeneralMapping(sim)*GroupHomomorphismByImages(fp,g,GeneratorsOfGroup(fp),
Expand Down

0 comments on commit 7dbac5b

Please sign in to comment.