# 21.6 Stabilizer Chains

Most of the algorithms for permutation groups need a stabilizer chain of the group. The concept of stabilizer chains was introduced by Charles Sims in Sim70.

If [b_1, ldots, b_n] is a list of points, G^{(1)} = G and G^{(i+1)} = Stab_{G^{(i)}}(b_i) such that G^{(n+1)} = { () }. The list [b_1, ldots, b_n] is called a base of G, the points b_i are called basepoints. A set S of generators for G satisfying the condition < S cap G^{(i)} > = G^{(i)} for each 1 leq i leq n, is called a strong generating set (SGS) of G. More precisely we ought to say that a set S that satisfies the conditions above is a SGS of G relative to B. The chain of subgroups of G itself is called the stabilizer chain of G relative to B.

Since [b_1, ldots, b_n], where n is the degree of G and b_i are the moved points of G, certainly is a base for G there exists a base for each permutation group. The number of points in a base is called the length of the base. A base B is called reduced if no stabilizer in the chain relative to B is trivial, i.e., there exists no i such that G^{(i)} = G^{(i+1)}. Note that different reduced bases for one group G may have different length. For example, the Chevalley Group G_2(4) possesses reduced bases of length 5 and 7.

Let R^{(i)} be a right transversal of G^{(i+1)} in G^{(i)}, i.e., a set of right coset representatives of the cosets of G^{(i+1)} in G^{(i)}. Then each element g of G has a unique representation of the following form g = r_n ldots r_1 with r_i in R^{(i)}. Thus with the knowledge of the transversals R^{(i)} we know each element of G, in principle. This is one reason why stabilizer chains are one of the most useful tools for permutation groups. Furthermore basic group theory tells us that we can identify the cosets of G^{(i+1)} in G^{(i)} with the points in O^{(i)} := b_i^{G^{(i)}}. So we could represent a transversal as a list T such that T[p] is a representative of the coset corresponding to the point p in O^{(i)}, i.e., an element of G^{(i)} that takes b_i to p.

For permutation groups of small degree this might be possible, but for permutation groups of large degree it is still not good enough. Our goal then is to store as few different permutations as possible such that we can still reconstruct each representative in R^{(i)}, and from them the elements in G. A factorized inverse transversal T is a list where T[p] is a generator of G^{(i)} such that p^{T[p]} is a point that lies earlier in O^{(i)} than p (note that we consider O^{(i)} as a list not as a set). If we assume inductively that we know an element r in G^{(i)} that takes b_i to p^{T[p]}, then r T[p]^{-1} is an element in G^{(i)} that takes b_i to p.

A stabilizer chain (see StabChain, Permutation Group Records) is stored recursively in GAP. The group record of a permutation group G with a stabilizer chain has the following additional components.

`orbit`:

List of orbitpoints of `orbit[1]` (which is the basepoint) under the action of the generators.

`transversal`:

Factorized inverse transversal as defined above.

`stabilizer`:

Record for the stabilizer of the point `orbit[1]` in the group generated by `generators`. The components of this record are again `generators`, `orbit`, `transversal`, `identity` and `stabilizer`. The last stabilizer in the stabilizer chain only contains the components `generators`, which is an empty list, and `identity`.

`stabChain`:

A record, that contains all information about the stabilizer chain. Functions acessing the stabilizer chain should do it using this record, as it is planned to remove the above three components from the group record in the future. The components of the `stabChain` record are described in section Permutation Group Records.

Note that the values of these components are changed by functions that change, extend, or reduce a base (see StabChain, ExtendStabChain, and ReduceStabChain).

Note that the records that represent the stabilizers are not group records (see Group Records). Thus you cannot take such a stabilizer and apply group functions to it. The last `stabilizer` in the stabilizer chain is a record whose component `generators` is empty.

Below you find an example for a stabilizer chain for the symmetric group of degree 4.

```    rec(
identity    := (),
generators  := [ (1,2), (1,2,3,4) ],
orbit       := [ 1, 2, 4, 3 ],
transversal := [ (), (1,2), (1,2,3,4), (1,2,3,4) ],
stabilizer := rec(
identity    := (),
generators  := [ (3,4), (2,4) ],
orbit       := [ 2, 4, 3 ],
transversal := [ , (), (3,4), (2,4) ],
stabilizer := rec(
identity    := (),
generators  := [ (3,4) ],
orbit       := [ 3, 4 ],
transversal := [ ,, (), (3,4) ],
stabilizer := rec(
identity   := (),
generators := [  ]
)
)
)
) ```

GAP 3.4.4
April 1997