From 768a20c090e18c65fdc64920ff7fef1e82f27057 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 1 Mar 2024 11:20:50 +0100 Subject: [PATCH] Ensure IsomorphismFpGroup calls UseIsomorphismRelation (#5660) Achieved by making ProcessEpimorphismToNewFpGroup invoke UseIsomorphismRelation or UseFactorRelation as appropriate. --- lib/ghomfp.gi | 13 +++++++++++++ tst/testinstall/grpperm.tst | 22 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/lib/ghomfp.gi b/lib/ghomfp.gi index 65684afc13..7805b899c5 100644 --- a/lib/ghomfp.gi +++ b/lib/ghomfp.gi @@ -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) diff --git a/tst/testinstall/grpperm.tst b/tst/testinstall/grpperm.tst index 86ef20f116..ce1668bf9d 100644 --- a/tst/testinstall/grpperm.tst +++ b/tst/testinstall/grpperm.tst @@ -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); @@ -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