Finding all results of a permutation group on a set

261 Views Asked by At

Given a finite group $G < Sym(\Omega)$; $\Omega$ finite, and $X \subset \Omega$, I can define a by the function $H(g) = \{x^g \| x \in X\}$ for each $g \in G$. Of course, each $H$ has the same size as $X$. Two different elements of $G$, $g_1,g_2$ may generate the same set $H(g_1)=H(g_2)$. Taking the collection of all such sets, $\mathscr{H} = \bigcup_{g \in G} H(g)$

I need to find $\mathscr{H}$, so what is the fastest way to find $F \subset G$ such that $\mathscr{H}$ is the disjoint union over $F$?

(I'm more interested mathematically how to do so, but I also need to compute the result. I am using GAP currently, with the following script:

setToThe := function(set,g)
    local x, l, i, s;
    l := [];
    i := 1;
    for s in set do
        x := s^g;
        l[i] := x;
        i := i + 1;
    od;
    return l;
    end;

grp := ...;
set := ...;

unique := [];
unique[1] := set;

for g in grp do
    allGood := true;
    startUnique := Size(unique);

    for j in [1..startUnique] do
        newset := setToThe(set,g);
        Sort(newset);
        if newset = unique[j] then
            allGood := false;
            break;
        fi;
    od;

    if allGood then
        unique[Size(unique)+1] := newset;
    fi;
od;
1

There are 1 best solutions below

1
On BEST ANSWER

It's simple, I feel silly:

Orbits(grp,set,OnSets);

So the trick is instead of thinking $Sym(\Omega)$, think $Sym(\alpha)$ where $\beta \subset \mathscr{P}(\Omega)$ such that for all $\alpha \in \beta$, $|\alpha| = |X|$