A permutation \(\phi\) is said to stabilize a set \(S\) if
the image of \(S\) under \(\phi\) is a subset of \(S\), that
is, if \(\left\lbrace\left. \phi(s)\right|s\in S
\right\rbrace\subseteq S\). This may be written
\(\phi(S)\subseteq S\). Given a vector \(G\) of
permutations, we define the stabilizer of \(S\) in \(G\) to
be those elements of \(G\) that stabilize \(S\).
Given \(S\), it is clear that the identity permutation stabilizes
\(S\), and if \(\phi,\psi\) stabilize \(S\), then so do
\(\phi\psi\) and \(\psi\phi\), and so does
\(\phi^{-1}\) [\(\phi\) is a bijection from \(S\) to
itself].
Function stabilizes(G,S) returns a Boolean vector V with
V[i] being TRUE if G[i] stabilizes S and
FALSE otherwise. Function stabilizer(G,S) returns
G[stabilizes(G,S)].
Sometimes we are interested in whether each element of \(S\) maps to
itself, that is, \(\forall s\in S, \phi(s)=s\). This is a stronger
requirement than stabilization, which allows the elements of \(S\)
to be permuted. To check for this, use strict=TRUE, which
calls doesnotmove().
Function stabilizes() coerces its argument to cycle form;
doesnotmove() is generic.