Splitting up a conjugacy class with respect to a subgroup Suppose we have a conjugacy class $\mathcal{K}$ of elements of a group $G$, and a subgroup $H \leq G$.
How can we efficiently (computationally) partition the elements of $\mathcal{K}$ according to whether they are conjugates by elements of $H$? If there is a way to do this in Magma using essentially built-in intrinsics, that is ideal, otherwise I am interested in knowing algorithmic ideas.
This is similar to this question:
Conjugacy class of $G$ splitting as Conjugacy class of $H\unlhd G$
But my question differs in that:

*

*I am not assuming that $H \unlhd G$

*I am not assuming that $\mathcal{K} \subseteq H$

*I am interested in doing this computationally in a "nice" way.

One obvious solution (mentioned in the answer to the linked question) is to compute the permutation action of $H$ acting on $\mathcal{K}$, and computing the orbits. I don't think this is ideal when the groups are large, but if this is the most practical way that could be an acceptable answer.
 A: The orbits of $H$ on the orbit $\cal K$ of $G$ are in bijection with the double cosets ${\rm Stab}_G(\kappa)\backslash G/H$, orbit representatives can be obtained by conjugating $\kappa$ with representatives of the double cosets.
The reason this is better (also in practice) than calculating orbits directly, is that the double coset computations can use other subgroups of $G$ to compute orbits on smaller domains and use imprimitivity of an action.
Since the question was tagged [gap], and you said you were looking for a nice solution, here is an example how you could do it in GAP. (I also think the GAP implementation for double cosets is better than the one in Magma, but having written it I am more than biased.)
gap> g:=SimpleGroup("HS");;Size(g);
44352000
gap> c:=ConjugacyClass(g,g.2);;Size(c);
88704
gap> s:=SylowSubgroup(g,2);;Size(s);
512
gap> dc:=DoubleCosets(g,Centralizer(c),s);;Length(dc);
219
gap> reps:=List(dc,x->Representative(c)^Representative(x));;
gap> Sum(reps,x->Index(s,Centralizer(s,x))); # verify
88704

