diff --git a/lib/autsr.gi b/lib/autsr.gi index deff51d57f..67608420ea 100644 --- a/lib/autsr.gi +++ b/lib/autsr.gi @@ -787,7 +787,7 @@ end); # pathetic isomorphism test, based on the automorphism group of GxH. This is # only of use as long as we don't yet have a Cannon/Holt version of # isomorphism available and there are many generators -BindGlobal("PatheticIsomorphism",function(G,H) +InstallGlobalFunction(PatheticIsomorphism,function(G,H) local d,a,map,possibly,cG,cH,nG,nH,i,j,sel,u,v,asAutomorphism,K,L,conj,e1,e2, iso,api,good,gens,pre; possibly:=function(a,b) @@ -807,6 +807,28 @@ local d,a,map,possibly,cG,cH,nG,nH,i,j,sel,u,v,asAutomorphism,K,L,conj,e1,e2, return Image(hom,sub); end; + # TODO: use matgrp package + if not (IsPermGroup(G) or IsPcGroup(G)) then + i:=IsomorphismPermGroup(G); + iso:=PatheticIsomorphism(Image(i,G),H); + if iso=fail then + return iso; + else + return i*iso; + fi; + fi; + + # TODO: use matgrp package + if not (IsPermGroup(H) or IsPcGroup(H)) then + i:=IsomorphismPermGroup(H); + iso:=PatheticIsomorphism(G,Image(i,H)); + if iso=fail then + return iso; + else + return iso*InverseGeneralMapping(i); + fi; + fi; + # go through factors of characteristic series to keep orbits short. AutomorphismGroup(G:someCharacteristics:=fail); AutomorphismGroup(H:someCharacteristics:=fail); diff --git a/lib/morpheus.gd b/lib/morpheus.gd index d9f109944a..0809a2192e 100644 --- a/lib/morpheus.gd +++ b/lib/morpheus.gd @@ -560,6 +560,7 @@ DeclareOperation("GQuotients",[IsGroup,IsGroup]); ## DeclareOperation("IsomorphicSubgroups",[IsGroup,IsGroup]); +DeclareGlobalFunction("PatheticIsomorphism"); ############################################################################# ## diff --git a/lib/morpheus.gi b/lib/morpheus.gi index eb2ebf7667..ba9be665b4 100644 --- a/lib/morpheus.gi +++ b/lib/morpheus.gi @@ -2011,6 +2011,15 @@ InstallMethod( InnerAutomorphismsAutomorphismGroup, InstallGlobalFunction(IsomorphismGroups,function(G,H) local m; + if not HasIsFinite(G) or not HasIsFinite(H) then + Info(InfoWarning,1,"Forcing finiteness test"); + IsFinite(G); + IsFinite(H); + fi; + if not IsFinite(G) and IsFinite(H) then + Error("cannot test isomorphism of infinite groups"); + fi; + #AH: Spezielle Methoden ? if Size(G)=1 then if Size(H)<>1 then