From 9f0cdd5f2f0cbdd7abc3246032f3eb5e3fcb13dc Mon Sep 17 00:00:00 2001 From: Alexander Hulpke Date: Thu, 12 Oct 2017 08:24:31 -0600 Subject: [PATCH 1/2] ENHANCE: Force abelian test before computing automorphism group. Use RankFilter. --- lib/morpheus.gi | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/morpheus.gi b/lib/morpheus.gi index 0d6c6a04c4..0e10db9330 100644 --- a/lib/morpheus.gi +++ b/lib/morpheus.gi @@ -1978,6 +1978,25 @@ local A; return A; end); +############################################################################# +## +#M AutomorphismGroup() . . abelian case +## +InstallMethod(AutomorphismGroup,"test abelian",true,[IsGroup and IsFinite], + RankFilter(IsSolvableGroup and IsFinite), +function(G) +local A; + if not IsAbelian(G) then + TryNextMethod(); + fi; + A:=AutomorphismGroupAbelianGroup(G); + SetIsAutomorphismGroup(A,true); + SetIsGroupOfAutomorphismsFiniteGroup(A,true); + SetIsFinite(A,true); + SetAutomorphismDomain(A,G); + return A; +end); + # just in case it does not know to be finite RedispatchOnCondition(AutomorphismGroup,true,[IsGroup], [IsGroup and IsFinite],0); From c58a2631b9476bd14978385a681b9189f3990048 Mon Sep 17 00:00:00 2001 From: Alexander Hulpke Date: Tue, 14 Nov 2017 13:16:23 -0700 Subject: [PATCH 2/2] FIX: Automorphism group structure for type `C' only holds for n\ge 3. In the case of n=2 it needs to be considered as B2 instead. This fixes #1902 Added test --- lib/morpheus.gi | 2 +- tst/teststandard/opers/AutomorphismGroup.tst | 21 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tst/teststandard/opers/AutomorphismGroup.tst diff --git a/lib/morpheus.gi b/lib/morpheus.gi index 0e10db9330..5a703b6ffc 100644 --- a/lib/morpheus.gi +++ b/lib/morpheus.gi @@ -1568,7 +1568,7 @@ local d,id,H,iso,aut,auts,i,all,hom,field,dim,P,diag,mats,gens,gal; all:=true; fi; - elif id.series in ["L","2A","C"] then + elif id.series in ["L","2A"] or (id.series="C" and id.parameter[1]>2) then hom:=EpimorphismFromClassical(G); if hom=fail then return fail;fi; field:=FieldOfMatrixGroup(Source(hom)); diff --git a/tst/teststandard/opers/AutomorphismGroup.tst b/tst/teststandard/opers/AutomorphismGroup.tst new file mode 100644 index 0000000000..dd7e057226 --- /dev/null +++ b/tst/teststandard/opers/AutomorphismGroup.tst @@ -0,0 +1,21 @@ +gap> START_TEST("AutomorphismGroup.tst"); +gap> SimpleAutTest:=function(from,to) +> local it,g,a,p; +> it:=SimpleGroupsIterator(from); +> g:=NextIterator(it); +> while Size(g)<=to do +> a:=AutomorphismGroup(g); +> Info(InfoWarning,2,g," ",Size(g)," ",Size(a)/Size(g)); +> p:=Image(IsomorphismPermGroup(a)); +> if Size(p)<>Size(a) then +> return g; +> fi; +> g:=NextIterator(it); +> od; +> return true; +> end;; +gap> SimpleAutTest(1,10^5); +true +gap> SimpleAutTest(10^5,3*10^6:nopsl2); +true +gap> STOP_TEST("AutomorphismGroup.tst",1);