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.
GAP 3.4.4