gap-packages / recog

The GAP package recog to collect methods for constructive recognition
https://gap-packages.github.io/recog/
GNU General Public License v3.0
6 stars 14 forks source link

Large Base recognition fails although it shouldn't #190

Closed ssiccha closed 3 years ago

ssiccha commented 4 years ago

The large base group, or jellyfish group, recognition is not able to cope with a group which has fixed points.

Consider the following two examples. The first one works, the second is a conjugate group with fixed points which doesn't:

gap> S23OnSets := Action(SymmetricGroup(23), Combinations([1 .. 23], 2), OnSets);;
gap> jellyGroup2 := WreathProductProductAction(S23OnSets, Group((1,2)));;
gap> n := NrMovedPoints(jellyGroup2);
64009
gap> ri2 := RecogniseGroup(jellyGroup2);
F pts= 64009  0       
<recoginfo LargeBasePrimitive
 F:<recoginfo Imprimitive
    F:<recoginfo Pcgs Size=2>
    K:<recoginfo BalTreeForBlocks
       F:<recoginfo Giant AlmostSimple Size=25852016738884976640000>
       K:<recoginfo Giant AlmostSimple Size=25852016738884976640000>>>
 K:<trivial kernel>
gap> # Now take a conjugate
gap> random := Random(SymmetricGroup(5 * QuoInt(n,2)));;
gap> jellyGroup2Conj := jellyGroup2 ^ random;;
gap> ri2Conj := RecogniseGroup(jellyGroup2Conj);
#I  Have 32065 points.
#I  Have 60697 points.
#I  Have 57149 points in new orbit.
#I  Have 64002 points in new orbit.
#I  Have 58357 points in new orbit.
#I  Have 64003 points in new orbit.

<recoginfo StabilizerChainPerm Size=1336653538935178044929642368586691379200000000>
gap> ri2Conj!.fhmethsel.failedMethods.LargeBasePrimitive;
1
ssiccha commented 4 years ago

@fingolfin What do you think of changing ThrowAwayFixedPoints such that it always performs the "throwing away" for primitive groups?

fingolfin commented 4 years ago

@ssiccha It is unclear to me what the connection between your comment is and the issue you report above. I can dig into the source to figure it out, but if you want to save time, perhaps just elaborate as to what the one has to do with the other? Alternatively, submit a PR for discussion.

ssiccha commented 4 years ago

Ah. The reason that LargeBasePrimitive can't handle fixed points is simply that it assumes that the given group G acts on the set [1 .. NrMovedPoints(G)]. If G has fixed points that is not the case. If we were to call ThrowAwayFixedPoints, then the resulting group does act on [1 .. NrMovedPoints(G)].

Currently ThrowAwayFixedPoints creates a homomorphism for an input group H if 3 * NrMovedPoints(H) >= LargestMovedPoint(H). If we would let it create a homomorphism for every primitive group that has fixed points that would make the problem of LargeBasePrimitive go away.

I've made a PR. See #191.