# 8.11 Transitivity

`Transitivity( G, D )`
`Transitivity( G, D, operation )`

`Transitivity` returns the degree of transitivity of the group G on the domain D, which must be a list of points of arbitrary type. If G does not operate transitively on D then `Transitivity` returns 0.

The degree of transitivity of the operation of G on D is the largest k such that G operates k-fold transitively on D. We say that G operates k-fold transitively on D if it operates transitively on D (see IsTransitive) and the stabilizer of one point d of D operates `k-1`-fold transitively on `Difference(D,[d])`. Because the stabilizers of the points of D are conjugate this is equivalent to saying that the stabilizer of each point d of D operates `k-1`-fold transitively on `Difference(D,[d])`.

It is not allowed that D is a proper subset of a domain, i.e., D must be invariant under the operation of G.

`Transitivity` accepts a function operation of two arguments d and g as optional third argument, which specifies how the elements of G operate (see Other Operations).

```    gap> g := Group( (1,2,3)(6,7), (3,4,5)(7,8) );;
gap> Transitivity( g, [1..8] );
0
gap> Transitivity( g, [1..5] );
3
gap> sets := Combinations( [1..5], 3 );;  Length( sets );
10    # a list of all three element subsets of '[1..5]'
gap> Transitivity( g, sets, OnSets );
1 ```

`Transitivity` calls
`G.operations.Transitivity( G, D, operation )`
and returns the value. Note that the third argument is not optional for functions called this way.

The default function called this way is `GroupOps.Transitivity`, which first tests whether G operates transitively on D. If so, it returns
`Transitivity(Stabilizer(G,Difference(D,[D[1]]),operation)+1`;
if not, it simply returns 0. Special categories of groups overlay this default function with more efficient functions.

GAP 3.4.4
April 1997