# 4.7 Set Functions for Transformation Monoids

All set theoretic functions described in chapter "Domains" are also applicable to transformation monoids. This section describes which functions are implemented specially for transformation monoids. Functions not mentioned here are handled by the default methods described in the respective sections of chapter "Domains".

`Size( M )`

`Size` calls `RClasses` (see RClasses), if necessary, and returns the sum of the sizes of all R classes of M.

```    gap> Size( Monoid( Transformation( [ 1, 2, 1 ] ) ) );
2 ```

`Elements( M )`

`Elements` calls `RClasses` (see RClasses) if necessary, and returns the union of the elements of all R classes of M.

```    gap> Elements( Monoid( Transformation( [ 1, 2, 1 ] ) ) );
[ Transformation( [ 1, 2, 1 ] ), Transformation( [ 1 .. 3 ] ) ] ```

`obj in M`

The membership test of elements of transformation monoids first checks whether obj is a transformation in the first place (see Degree of a Transformation Monoid). Then the image and the kernel of obj is used to locate the possible R class of obj in M and the membership test is delegated to that R class (see Set Functions for Green Classes).

```    gap> M:= Monoid( Transformation( [ 1, 2, 1 ] ) );;
gap> (1,2,3) in M;
false
gap> Transformation( [ 1, 2, 1 ] ) in M;
true
gap> Transformation( [ 1, 2, 2 ] ) in M;
false
gap> Transformation( [ 1, 2, 1, 4 ] ) in M;
false ```

Version 2.4 (May 1998)