# 8.13 IsSemiRegular

IsSemiRegular( G, D )
IsSemiRegular( G, D, operation )

IsSemiRegular returns true if the group G operates semiregularly on the domain D, which must be a list of points of arbitrary type, and false otherwise.

A group G operates semiregularly on a domain D if no element of G other than the idenity leaves a point of D fixed. An equal characterisation is that the stabilizer of any point of D is trivial. Yet another characterisation is that the operation of G on D is equivalent to multiple copies of the operation of G on its elements by multiplication from the right.

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

IsSemiRegular 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,4)(5,7)(6,8), (1,3)(2,4)(5,6)(7,8) );;
gap> IsSemiRegular( g, [1..8] );
true
gap> g := Group( (1,2)(3,4)(5,7)(6,8), (1,3)(2,4)(5,6,7,8) );;
gap> IsSemiRegular( g, [1..8] );
false
gap> IsSemiRegular( g, Orbit( g, [1,5], OnSets ), OnSets );
true

IsSemiRegular calls
G.operations.IsSemiRegular( 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.IsSemiRegular, which computes a permutation group P that operates on [1..Length(D)] in the same way that G operates on D (see Operation) and then checks if this permutation group operations semiregularly. This of course only works because this default function is overlaid for permutation groups (see Operations of Permutation Groups).

GAP 3.4.4
April 1997