Skip to content

Commit

Permalink
Ensure IsomorphismFpGroup calls UseIsomorphismRelation (#5660)
Browse files Browse the repository at this point in the history
Achieved by making ProcessEpimorphismToNewFpGroup invoke
UseIsomorphismRelation or UseFactorRelation as appropriate.
  • Loading branch information
fingolfin authored Mar 1, 2024
1 parent 82d6d4b commit 768a20c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
13 changes: 13 additions & 0 deletions lib/ghomfp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1393,7 +1393,20 @@ local s,r,fam,fas,fpf,mapi;
#extra generators separately, but that is too much work for what is
#intended as a minor hint.
fi;

# Transfer some knowledge about the source group to its image.
if HasIsMapping(hom) and IsMapping(hom) then
if HasIsInjective(hom) and IsInjective(hom) then
UseIsomorphismRelation(s, r);
elif HasKernelOfMultiplicativeGeneralMapping(hom) then
UseFactorRelation(s, KernelOfMultiplicativeGeneralMapping(hom), r);
else
UseFactorRelation(s, fail, r);
fi;
fi;

s:=SubgroupNC(s,mapi[1]);

fam:=FamilyObj(One(r));
fas:=FamilyObj(One(s));
if IsPermCollection(s) or IsMatrixCollection(s)
Expand Down
22 changes: 19 additions & 3 deletions tst/testinstall/grpperm.tst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#@local F,G,N,cube,g,s,x,y,a,b,sym,h
#@local F,G,N,cube,g,s,x,y,a,b,sym,h,iso
gap> START_TEST("grpperm.tst");
gap> G := Group((1,2),(1,2,3,4));;
gap> HasAbelianFactorGroup(G,G);
Expand Down Expand Up @@ -80,12 +80,28 @@ gap> Length(MinimalGeneratingSet(G));
2
gap> IsomorphismPermGroup(G) = IdentityMapping(G);
true

#
gap> g:=SymmetricGroup(6);;
gap> h:=Action(g,Combinations([1..6],2),OnSets);;
gap> IsSymmetricGroup(h);
true
gap> IsomorphismFpGroup(h);;
gap> IsomorphismFpGroup(DerivedSubgroup(h));;
gap> iso:=IsomorphismFpGroup(h);;
gap> HasSize(ImagesSource(iso));
true
gap> iso:=IsomorphismFpGroup(DerivedSubgroup(h));;
gap> HasSize(ImagesSource(iso));
true

#
gap> G:=Group((2,5)(3,4), (1,3)(4,5));;
gap> Size(G);
10
gap> iso:=IsomorphismFpGroup(G);;
gap> HasSize(Range(iso));
true

#
gap> sym:=SymmetricGroup(13);;
gap> a:=Stabilizer(sym,[[1,2,3],[4,5,6,7]],OnTuplesSets);;Index(sym,a);
60060
Expand Down

0 comments on commit 768a20c

Please sign in to comment.