In the representation described in section Mathematical Introduction, computing the action of a generator x on a double coset named dk depends on finding the L_x-orbit representative of dk. The L_x orbits lying in D = d^K correspond to the double cosets M_d \ K/L_x and so to the orbits of M_d on the left cosets L_x.
The effect of this is that the program spends most of its time computing with the action of K on the left cosets of the various groups L_x. If this action can be represented in some more direct way, such as an action on points, tuples or sets, then there is a huge performance gain. The input format of the program is set up to reflect this. Each gain group L_x is specified by giving an action of K on some domain which is permutationally equivalent to the action of K on left cosets of L_x.
It sometimes happens that two generators x and y have identical, or conjugate, gain groups. The program does a considerable amount of pre-computation with each gain group, and builds some potentially large data structures, so it is sensible to combine these for identical or conjugate gain groups. To allow this, the gain groups are specified as one part of the input, and then another part specifies, for each generator, a reference to the gain group and possibly a conjugating element.
Previous Up Top Next