diff --git a/gap/perm.gi b/gap/perm.gi index 376ac1b05..a147835d7 100644 --- a/gap/perm.gi +++ b/gap/perm.gi @@ -350,7 +350,9 @@ end; #! @BeginChunk ThrowAwayFixedPoints #! This method defines a homomorphism of a permutation group #! G to the action on the moved points of G if -#! G does not have too many moved points. In the current setup, the +#! either G does not have too many moved points, or if G is +#! primitive and has fixed points. +#! In the current setup, the #! homomorphism is defined if the number k of moved #! points is at most 1/3 of the largest moved point of G, #! or k is at most half of the number of points on which @@ -361,12 +363,15 @@ end; FindHomMethodsPerm.ThrowAwayFixedPoints := function( ri, G ) # Check, whether we can throw away fixed points - local gens,hom,l,n,o; + local gens,hom,l,n,largest,o; gens := GeneratorsOfGroup(G); l := List(gens,StoredPointsPerm); n := NrMovedPoints(G); - if 2*n > Maximum(l) or 3*n > LargestMovedPoint(G) then # we do nothing + largest := LargestMovedPoint(G); + if (2*n > Maximum(l) or 3*n > largest) + and not (IsPrimitive(G) and largest > n) + then # we do nothing return NeverApplicable; fi; o := MovedPoints(G);