8.10 IsTransitive

IsTransitive( G, D )
IsTransitive( G, D, operation )

IsTransitive returns true if the group G operates transitively on the domain D, which must be a list of points of arbitrary type.

We say that a group G acts transitively on a domain D if and only if for every pair of points d and e there is an element g of G such that d^g = e. An alternative characterization of this property is to say that D as a set is equal to the orbit of every single point.

It is allowed that D is a proper subset of a domain, i.e., that D is not invariant under the operation of G. In this case IsTransitive checks whether for every pair of points d, e of D there is an element g of G, such that d^g = e. This can also be characterized by saying that D is a subset of the orbit of every single point.

IsTransitive 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> IsTransitive( g, [1..8] );
    false
    gap> IsTransitive( g, [1,6] );
    false    # note that the domain need not be invariant
    gap> sets := Combinations( [1..5], 3 );;  Length( sets );
    10    # a list of all three element subsets of '[1..5]'
    gap> IsTransitive( g, sets, OnSets );
    true 

IsTransitive calls
G.operations.IsTransitive( 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.IsTransitive, which tests whether D is a subset of the orbit of the first point in D. This function is seldom overlaid, because it is difficult to improve it.

Previous Up Top Next
Index

GAP 3.4.4
April 1997