  
  [1X53 [33X[0;0YTransformations[133X[101X
  
  [33X[0;0YThis chapter describes the functions in [5XGAP[105X for transformations.[133X
  
  [33X[0;0YA  [13Xtransformation[113X  in [5XGAP[105X is simply a function from the positive integers to
  the   positive  integers.  Transformations  are  to  semigroup  theory  what
  permutations  are  to group theory, in the sense that every semigroup can be
  realised as a semigroup of transformations. In [5XGAP[105X transformation semigroups
  are  always  finite,  and  so only finite semigroups can be realised in this
  way.[133X
  
  [33X[0;0YA  transformation  in  [5XGAP[105X  acts  on  the  positive  integers  (up  to  some
  architecture  dependent  limit) on the right. The image of a point [10Xi[110X under a
  transformation [10Xf[110X is expressed as [10Xi^f[110X in [5XGAP[105X. This action is also implemented
  by  the  function  [2XOnPoints[102X  ([14X41.2-1[114X). If [10Xi^f[110X is different from [10Xi[110X, then [10Xi[110X is
  [13Xmoved[113X  by  [13Xf[113X  and  otherwise  it  is  [13Xfixed[113X by [10Xf[110X. Transformations in [5XGAP[105X are
  created using the operations described in Section [14X53.2[114X.[133X
  
  [33X[0;0YThe  [13Xdegree[113X of a transformation [10Xf[110X is usually defined as the largest positive
  integer  where  [10Xf[110X  is  defined. In previous versions of [5XGAP[105X, transformations
  were  only  defined on positive integers less than their degree, it was only
  possible  to  multiply transformations of equal degree, and a transformation
  did  not act on any point exceeding its degree. Starting with version 4.7 of
  [5XGAP[105X,  transformations  behave  more  like  permutations,  in  that  they fix
  unspecified points and it is possible to multiply arbitrary transformations;
  see  Chapter  [14X42[114X.  The definition of the degree of a transformation [10Xf[110X in the
  current  version of [5XGAP[105X is the largest value [10Xn[110X such that [10Xn^f<>n[110X or [10Xi^f=n[110X for
  some [10Xi<>n[110X. Equivalently, the degree of a transformation is the least value [10Xn[110X
  such that [10X[n+1,n+2,...][110X is fixed pointwise by [10Xf[110X.[133X
  
  [33X[0;0YThe  transformations  of  a  given  degree belong to the full transformation
  semigroup   of   that   degree;  see  [2XFullTransformationSemigroup[102X  ([14X53.7-3[114X).
  Transformation semigroups are hence subsemigroups of the full transformation
  semigroup.[133X
  
  [33X[0;0YIt  is  possible  to  use  transformations  in  [5XGAP[105X without reference to the
  degree, much as it is possible to use permutations in this way. However, for
  backwards  compatibility, and because it is sometimes useful, it is possible
  to  access  the  degree  of  a  transformation  using [2XDegreeOfTransformation[102X
  ([14X53.5-1[114X).  Certain  attributes  of  transformations are also calculated with
  respect  to the degree, such as the rank, image set, or kernel (these values
  can  also  be  calculated  with  respect to any positive integer). So, it is
  possible  to ignore the degree of a transformation if you prefer to think of
  transformations  as  acting  on  the  positive  integers in a similar way to
  permutations.  For  example,  this approach is used in the [5XFR[105X package. It is
  also  possible  to  think  of transformations as only acting on the positive
  integers  not  exceeding  their  degree.  For example, this was the approach
  formerly used in [5XGAP[105X and it is also useful in the [5XSemigroups[105X package.[133X
  
  [33X[0;0YTransformations are displayed, by default, using the list [10X[1^f..n^f][110X where [10Xn[110X
  is the degree of [10Xf[110X. This behaviour differs from versions of [5XGAP[105X earlier than
  4.7. See Section [14X53.6[114X for more information.[133X
  
  [33X[0;0YThe  [13Xrank[113X of a transformation on the positive integers up to [10Xn[110X is the number
  of distinct points in [10X[1^f..n^f][110X. The [13Xkernel[113X of a transformation [10Xf[110X on [10X[1..n][110X
  is  the  equivalence relation on [10X[1..n][110X consisting of those [10X(i, j)[110X such that
  [10Xi^f  =  j^f[110X. The kernel of a transformation is represented in two ways: as a
  partition of [10X[1..n][110X or as the image list of a transformation [10Xg[110X such that the
  kernel  of  [10Xg[110X  on  [10X[1..n][110X  equals the kernel of [10Xf[110X and [10Xj^g=i[110X for all [10Xj[110X in [10Xi[110Xth
  class.  The  latter  is  referred  to as the flat kernel of [10Xf[110X. For any given
  transformation  and  value  [10Xn[110X,  there  is  a unique transformation with this
  property.[133X
  
  [33X[0;0YA  [13Xfunctional  digraph[113X is a directed graph where every vertex has out-degree
  [22X1[122X.  A  transformation  [3Xf[103X  can  be  thought  of  as a functional digraph with
  vertices  the  positive  integers  and  edges  from  [10Xi[110X to [10Xi^f[110X for every [10Xi[110X. A
  [13Xcomponent[113X  of a transformation is defined as a component and a [13Xcycle[113X is just
  a  cycle  (or  strongly connected component) of the corresponding functional
  digraph. More specifically, [10Xi[110X and [10Xj[110X are in the same component if and only if
  there are [22Xi=v_0, v_1, ..., v_n=j[122X such that either [22Xv_k+1=v_k^f[122X or [22Xv_k=v_k+1^f[122X
  for  all  [22Xk[122X.  A [13Xcycle[113X of a transformation is defined as a cycle (or strongly
  connected   component)   of   the  corresponding  functional  digraph.  More
  specifically,  [10Xi[110X belongs to a cycle of [3Xf[103X if there are [22Xi=v_0, v_1, ..., v_n=i[122X
  such that either [22Xv_k+1=v_k^f[122X or [22Xv_k=v_k+1^f[122X for all [22Xk[122X.[133X
  
  [33X[0;0YInternally, [5XGAP[105X stores a transformation [10Xf[110X as a list consisting of the images
  [10Xi^f[110X of the points in [10Xi[110X less than some value, which is at least the degree of
  [10Xf[110X  and  which  is  determined  at the time of creation. When the degree of a
  transformation  [10Xf[110X  is at most 65536, the images of points under [10Xf[110X are stored
  as  16-bit  integers, the kernel and image set are subobjects of [10Xf[110X which are
  plain lists of [5XGAP[105X integers. When the degree of [10Xf[110X is greater than 65536, the
  images of points under [10Xf[110X are stored as 32-bit integers; the kernel and image
  set  are  stored  in  the  same  way  as before. A transformation belongs to
  [10XIsTrans2Rep[110X  if  it is stored using 16-bit integers and to [10XIsTrans4Rep[110X if it
  is stored using 32-bit integers.[133X
  
  
  [1X53.1 [33X[0;0YThe family and categories of transformations[133X[101X
  
  [1X53.1-1 IsTransformation[101X
  
  [29X[2XIsTransformation[102X( [3Xobj[103X ) [32X Category
  
  [33X[0;0YEvery  transformation in [5XGAP[105X belongs to the category [10XIsTransformation[110X. Basic
  operations   for  transformations  are  [2XImageListOfTransformation[102X  ([14X53.5-2[114X),
  [2XImageSetOfTransformation[102X    ([14X53.5-3[114X),    [2XKernelOfTransformation[102X   ([14X53.5-12[114X),
  [2XFlatKernelOfTransformation[102X    ([14X53.5-11[114X),    [2XRankOfTransformation[102X   ([14X53.5-4[114X),
  [2XDegreeOfTransformation[102X  ([14X53.5-1[114X),  multiplication of two transformations via
  [9X*[109X,  and  exponentiation  with  the  first  argument a positive integer [10Xi[110X and
  second  argument a transformation [10Xf[110X where the result is the image [10Xi^f[110X of the
  point [10Xi[110X under [10Xf[110X.[133X
  
  [1X53.1-2 IsTransformationCollection[101X
  
  [29X[2XIsTransformationCollection[102X( [3Xobj[103X ) [32X Category
  
  [33X[0;0YEvery    collection    of    transformations   belongs   to   the   category
  [10XIsTransformationCollection[110X. For example, transformation semigroups belong to
  [10XIsTransformationCollection[110X.[133X
  
  [1X53.1-3 TransformationFamily[101X
  
  [29X[2XTransformationFamily[102X[32X family
  
  [33X[0;0YThe family of all transformations is [10XTransformationFamily[110X.[133X
  
  
  [1X53.2 [33X[0;0YCreating transformations[133X[101X
  
  [33X[0;0YThere  are  several  ways  of  creating  transformations  in  [5XGAP[105X, which are
  described in this section.[133X
  
  [1X53.2-1 Transformation[101X
  
  [29X[2XTransformation[102X( [3Xlist[103X ) [32X operation
  [29X[2XTransformation[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation
  [29X[2XTransformationList[102X( [3Xlist[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or [9Xfail[109X.[133X
  
  [33X[0;0Y[10XTransformationList[110X  returns  the transformation [10Xf[110X such that [10Xi^[3Xf[103X[10X=[3Xlist[103X[10X[i][110X if [10Xi[110X
  is between [10X1[110X and the length of [3Xlist[103X and [10Xi^[3Xf[103X[10X=i[110X if [10Xi[110X is larger than the length
  of  [3Xlist[103X.  [10XTransformationList[110X will return [9Xfail[109X if [3Xlist[103X is not dense, if [3Xlist[103X
  contains  an element which is not a positive integer, or if [3Xlist[103X contains an
  integer not in [10X[1..Length([3Xlist[103X[10X)][110X.[133X
  
  [33X[0;0YThis is the analogue in the context of transformations of [2XPermList[102X ([14X42.5-2[114X).
  [10XTransformation[110X  is  a  synonym  of [10XTransformationList[110X when the argument is a
  list.[133X
  
  [33X[0;0YWhen the arguments are a list of positive integers [3Xlist[103X and a function [3Xfunc[103X,
  [10XTransformation[110X     returns     the     transformation     [10Xf[110X     such    that
  [10X[3Xlist[103X[10X[i]^f=[3Xfunc[103X[10X([3Xlist[103X[10X[i])[110X  if  [10Xi[110X is in the range [10X[1..Length([3Xlist[103X[10X)][110X and [10Xf[110X fixes
  all other points.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("NotationForTransformations", "input");[127X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 11, 10, 2, 11, 4, 4, 7, 6, 9, 10, 1, 11 ] );[127X[104X
    [4X[28XTransformation( [ 11, 10, 2, 11, 4, 4, 7, 6, 9, 10, 1, 11 ] )[128X[104X
    [4X[25Xgap>[125X [27Xf:=TransformationList( [ 2, 3, 3, 1 ] );[127X[104X
    [4X[28XTransformation( [ 2, 3, 3, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("NotationForTransformations", "fr");[127X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation([10, 11], x-> x^2);[127X[104X
    [4X[28X<transformation: 1,2,3,4,5,6,7,8,9,100,121>[128X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("NotationForTransformations", "input");[127X[104X
  [4X[32X[104X
  
  [1X53.2-2 Transformation[101X
  
  [29X[2XTransformation[102X( [3Xsrc[103X, [3Xdst[103X ) [32X operation
  [29X[2XTransformationListList[102X( [3Xsrc[103X, [3Xdst[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or [9Xfail[109X.[133X
  
  [33X[0;0YIf  [3Xsrc[103X and [3Xdst[103X are lists of positive integers of the same length, such that
  [3Xsrc[103X contains no element twice, then [10XTransformationListList([3Xsrc[103X[10X, [3Xdst[103X[10X)[110X returns
  a  transformation  [10Xf[110X  such that [10Xsrc[i]^[3Xf[103X[10X= dst[i][110X. The transformation [3Xf[103X fixes
  all points larger than the maximum of the entries in [3Xsrc[103X and [3Xdst[103X.[133X
  
  [33X[0;0YThis    is   the   analogue   in   the   context   of   transformations   of
  [2XMappingPermListList[102X    ([14X42.5-3[114X).    [10XTransformation[110X    is    a   synonym   of
  [10XTransformationListList[110X   when  its  arguments  are  two  lists  of  positive
  integers.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTransformation( [ 10, 11 ],[ 11, 12 ] );[127X[104X
    [4X[28XTransformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 12 ] )[128X[104X
    [4X[25Xgap>[125X [27XTransformationListList( [ 1, 2, 3 ], [ 4, 5, 6 ] );[127X[104X
    [4X[28XTransformation( [ 4, 5, 6, 4, 5, 6 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.2-3 TransformationByImageAndKernel[101X
  
  [29X[2XTransformationByImageAndKernel[102X( [3Xim[103X, [3Xker[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or [9Xfail[109X.[133X
  
  [33X[0;0Y[10XTransformation[110X  returns  the  transformation  [10Xf[110X  [10Xi^f=[3Xim[103X[10X[[3Xker[103X[10X[i]][110X for [10Xi[110X in the
  range [10X[1..Length([3Xker[103X[10X)][110X. This transformation has flat kernel equal to [3Xker[103X and
  image set equal to [10XSet([3Xim[103X[10X)[110X.[133X
  
  [33X[0;0YThe argument [3Xim[103X should be a duplicate free list of positive integers and [3Xker[103X
  should  be the flat kernel of a transformation with rank equal to the length
  of  [3Xim[103X.  If  the  arguments  do  not  fulfil  these conditions, then [9Xfail[109X is
  returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTransformationByImageAndKernel([ 8, 1, 3, 4 ],[127X[104X
    [4X[25X>[125X [27X[ 1, 2, 3, 1, 2, 1, 2, 4 ]);[127X[104X
    [4X[28XTransformation( [ 8, 1, 3, 8, 1, 8, 1, 4 ] )[128X[104X
    [4X[25Xgap>[125X [27XTransformationByImageAndKernel([ 1, 3, 8, 4 ],[127X[104X
    [4X[25X>[125X [27X[ 1, 2, 3, 1, 2, 1, 2, 4 ]);[127X[104X
    [4X[28XTransformation( [ 1, 3, 8, 1, 3, 1, 3, 4 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.2-4 Idempotent[101X
  
  [29X[2XIdempotent[102X( [3Xim[103X, [3Xker[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or [9Xfail[109X.[133X
  
  [33X[0;0Y[2XIdempotent[102X  returns the idempotent transformation with image set [3Xim[103X and flat
  kernel [3Xker[103X if such a transformation exists and [9Xfail[109X if it does not.[133X
  
  [33X[0;0YMore  specifically,  a  transformation is returned when the argument [3Xim[103X is a
  set of positive integers and [3Xker[103X is the flat kernel of a transformation with
  rank  equal  to the length of [3Xim[103X and where [3Xim[103X has one element in every class
  of the kernel corresponding to [3Xker[103X.[133X
  
  [33X[0;0YNote that this is function does not always return the same transformation as
  [10XTransformationByImageAndKernel[110X with the same arguments.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIdempotent([ 2, 4, 6, 7, 8, 10, 11 ],[127X[104X
    [4X[25X>[125X [27X[ 1, 2, 1, 3, 3, 4, 5, 1, 6, 6, 7, 5 ] );[127X[104X
    [4X[28XTransformation( [ 8, 2, 8, 4, 4, 6, 7, 8, 10, 10, 11, 7 ] )[128X[104X
    [4X[25Xgap>[125X [27XTransformationByImageAndKernel([ 2, 4, 6, 7, 8, 10, 11 ],[127X[104X
    [4X[25X>[125X [27X[ 1, 2, 1, 3, 3, 4, 5, 1, 6, 6, 7, 5 ] );[127X[104X
    [4X[28XTransformation( [ 2, 4, 2, 6, 6, 7, 8, 2, 10, 10, 11, 8 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.2-5 TransformationOp[101X
  
  [29X[2XTransformationOp[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation
  [29X[2XTransformationOpNC[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or [9Xfail[109X.[133X
  
  [33X[0;0Y[2XTransformationOp[102X  returns  the transformation that corresponds to the action
  of  the  object [3Xobj[103X on the domain or list [3Xlist[103X via the function [3Xfunc[103X. If the
  optional  third  argument  [3Xfunc[103X  is  not specified, then the action [2XOnPoints[102X
  ([14X41.2-1[114X) is used by default. Note that the returned transformation refers to
  the positions in [3Xlist[103X even if [3Xlist[103X itself consists of integers.[133X
  
  [33X[0;0YThis  function  is  the  analogue  in  the  context  of  transformations  of
  [2XPermutation[102X ([14XReference: Permutation (for a group, an action domain, etc.)[114X).[133X
  
  [33X[0;0YIf [3Xobj[103X does not map elements of [3Xlist[103X into [3Xlist[103X, then [9Xfail[109X is returned.[133X
  
  [33X[0;0Y[2XTransformationOpNC[102X does not check that [3Xobj[103X maps elements of [3Xlist[103X to elements
  of [3Xlist[103X or that a transformation is defined by the action of [3Xobj[103X on [3Xlist[103X via
  [3Xfunc[103X.  This  function  should  be  used only with caution, and in situations
  where it is guaranteed that the arguments have the required properties.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 10, 2, 3, 10, 5, 10, 7, 2, 5, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XTransformationOp(f, [ 2, 3 ] );[127X[104X
    [4X[28XIdentityTransformation[128X[104X
    [4X[25Xgap>[125X [27XTransformationOp(f, [ 1, 2, 3 ] );[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XS:=SemigroupByMultiplicationTable( [ [ 1, 1, 1 ], [ 1, 1, 1 ], [127X[104X
    [4X[25X>[125X [27X[ 1, 1, 2 ] ] );;[127X[104X
    [4X[25Xgap>[125X [27XTransformationOp(Elements(S)[1], S, OnRight);[127X[104X
    [4X[28XTransformation( [ 1, 1, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27XTransformationOp(Elements(S)[3], S, OnRight);[127X[104X
    [4X[28XTransformation( [ 1, 1, 2 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.2-6 TransformationNumber[101X
  
  [29X[2XTransformationNumber[102X( [3Xm[103X, [3Xn[103X ) [32X operation
  [29X[2XNumberTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation or a number.[133X
  
  [33X[0;0YThese  functions  implement a bijection from the transformations with degree
  at most [3Xn[103X to the numbers [10X[1..[3Xn[103X[10X^[3Xn[103X[10X][110X.[133X
  
  [33X[0;0YMore precisely, if [3Xm[103X and [3Xn[103X are positive integers such that [3Xm[103X is at most [10X[3Xn[103X[10X^[3Xn[103X[10X[110X,
  then [10XTransformationNumber[110X returns the [3Xm[103Xth transformation with degree at most
  [3Xn[103X.[133X
  
  [33X[0;0YIf  [3Xf[103X is a transformation and [3Xn[103X is a positive integer, which is greater than
  or equal to the degree of [3Xf[103X, then [10XNumberTransformation[110X returns the number in
  [10X[1..[3Xn[103X[10X^[3Xn[103X[10X][110X  that  corresponds  to  [3Xf[103X. If the optional second argument [3Xn[103X is not
  specified, then the degree of [3Xf[103X is used by default.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 3, 3, 5, 3, 3 ] );;[127X[104X
    [4X[25Xgap>[125X [27XNumberTransformation(f, 5);[127X[104X
    [4X[28X1613[128X[104X
    [4X[25Xgap>[125X [27XNumberTransformation(f, 10);[127X[104X
    [4X[28X2242256790[128X[104X
    [4X[25Xgap>[125X [27XTransformationNumber(2242256790, 10);[127X[104X
    [4X[28XTransformation( [ 3, 3, 5, 3, 3 ] )[128X[104X
    [4X[25Xgap>[125X [27XTransformationNumber(1613, 5); [127X[104X
    [4X[28XTransformation( [ 3, 3, 5, 3, 3 ] )[128X[104X
  [4X[32X[104X
  
  
  [1X53.2-7 [33X[0;0YRandomTransformation[133X[101X
  
  [29X[2XRandomTransformation[102X( [3Xn[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA random transformation.[133X
  
  [33X[0;0YIf  [3Xn[103X  is  a  positive  integer,  then [10XRandomTransformation[110X returns a random
  transformation with degree at most [3Xn[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XRandomTransformation(6);             [127X[104X
    [4X[28XTransformation( [ 2, 1, 2, 1, 1, 2 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.2-8 IdentityTransformation[101X
  
  [29X[2XIdentityTransformation[102X[32X global variable
  [6XReturns:[106X  [33X[0;10YThe identity transformation.[133X
  
  [33X[0;0YReturns the identity transformation, which has degree [10X0[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=IdentityTransformation;[127X[104X
    [4X[28XIdentityTransformation[128X[104X
  [4X[32X[104X
  
  [1X53.2-9 ConstantTransformation[101X
  
  [29X[2XConstantTransformation[102X( [3Xm[103X, [3Xn[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0YThis  function returns a constant transformation [10Xf[110X such that [10Xi^f=[3Xn[103X[10X[110X for all [10Xi[110X
  less than or equal to [3Xm[103X, when [3Xn[103X and [3Xm[103X are positive integers.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XConstantTransformation(5, 1);[127X[104X
    [4X[28XTransformation( [ 1, 1, 1, 1, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27XConstantTransformation(6, 4);[127X[104X
    [4X[28XTransformation( [ 4, 4, 4, 4, 4, 4 ] )[128X[104X
  [4X[32X[104X
  
  
  [1X53.3 [33X[0;0YChanging the representation of a transformation[133X[101X
  
  [33X[0;0YIt  is  possible  that a transformation in [5XGAP[105X can be represented as another
  type  of  object, or that another type of [5XGAP[105X object can be represented as a
  transformation.[133X
  
  [33X[0;0YThe operations [2XAsPermutation[102X ([14X42.5-5[114X) and [2XAsPartialPerm[102X ([14X54.4-2[114X) can be used
  to  convert transformations into permutations or partial permutations, where
  appropriate.  In  this  section  we  describe functions for converting other
  types of objects into transformations.[133X
  
  [1X53.3-1 AsTransformation[101X
  
  [29X[2XAsTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0Y[10XAsTransformation[110X    returns   the   permutation,   transformation,   partial
  permutation or binary relation [3Xf[103X as a transformation.[133X
  
  [8Xfor permutations[108X
        [33X[0;6YIf  [3Xf[103X  is  a  permutation  and  [3Xn[103X  is  a  non-negative  integer,  then
        [10XAsTransformation([3Xf[103X[10X,  [3Xn[103X[10X)[110X returns the transformation [10Xg[110X such that [10Xi^g=i^f[110X
        for all [10Xi[110X in the range [10X[1..[3Xn[103X[10X][110X.[133X
  
        [33X[0;6YIf  no  non-negative  integer  [3Xn[103X  is specified, then the largest moved
        point of [3Xf[103X is used as the value for [3Xn[103X; see [2XLargestMovedPoint[102X ([14X42.3-2[114X).[133X
  
  [8Xfor transformations[108X
        [33X[0;6YIf [3Xf[103X is a transformation and [3Xn[103X is a non-negative integer less than the
        degree  of  [3Xf[103X  such  that  [3Xf[103X  is  a  transformation  of  [10X[1..[3Xn[103X[10X][110X,  then
        [10XAsTransformation[110X returns the restriction of [3Xf[103X to [10X[1..[3Xn[103X[10X][110X.[133X
  
        [33X[0;6YIf [3Xf[103X is a transformation and [3Xn[103X is not specified or equals a is greater
        than or equal to the degree of [3Xf[103X, then [3Xf[103X is returned.[133X
  
  [8Xfor partial permutations[108X
        [33X[0;6YA  partial  permutation  [3Xf[103X can be converted into a transformation [10Xg[110X as
        follows.  The  degree [10Xm[110X of [10Xg[110X is equal to the maximum of [3Xn[103X, the largest
        moved  point  of [3Xf[103X plus [10X1[110X, and the largest image of a moved point plus
        [10X1[110X.  The transformation [10Xg[110X agrees with [3Xf[103X on the domain of [3Xf[103X and maps the
        points  in [10X[1..m][110X, which are not in the domain of [3Xf[103X to [10Xn[110X, i.e. [10Xi^g=i^[3Xf[103X[10X[110X
        for all [10Xi[110X in the domain of [3Xf[103X, [10Xi^g=n[110X for all [10Xi[110X in [10X[1..n][110X, and [10Xi^g=i[110X for
        all [10Xi[110X greater than [3Xn[103X. [10XAsTransformation([3Xf[103X[10X)[110X returns the transformation [10Xg[110X
        defined in the previous sentences.[133X
  
        [33X[0;6YIf  the  optional argument [3Xn[103X is not present, then the default value of
        the  maximum  of  the  largest  moved point and the largest image of a
        moved point of [3Xf[103X plus [10X1[110X is used.[133X
  
  [8Xfor binary relations[108X
        [33X[0;6YIn   the   case   that  [3Xf[103X  is  a  binary  relation,  which  defines  a
        transformation, then [10XAsTransformation[110X returns that transformation.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 3, 5, 3, 4, 1, 2 ] );;[127X[104X
    [4X[25Xgap>[125X [27XAsTransformation(f, 5);[127X[104X
    [4X[28XTransformation( [ 3, 5, 3, 4, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation(f, 10);[127X[104X
    [4X[28XTransformation( [ 3, 5, 3, 4, 1, 2 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation((1, 3)(2, 4));[127X[104X
    [4X[28XTransformation( [ 3, 4, 1, 2 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation((1, 3)(2, 4), 10);[127X[104X
    [4X[28XTransformation( [ 3, 4, 1, 2 ] )[128X[104X
    [4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 6 ], [ 6, 7, 1, 4, 3, 2 ] );[127X[104X
    [4X[28X[5,3,1,6,2,7](4)[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation(f, 11);[127X[104X
    [4X[28XTransformation( [ 6, 7, 1, 4, 3, 2, 11, 11, 11, 11, 11 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsPartialPerm(last, DomainOfPartialPerm(f));[127X[104X
    [4X[28X[5,3,1,6,2,7](4)[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation(f, 14);[127X[104X
    [4X[28XTransformation( [ 6, 7, 1, 4, 3, 2, 14, 14, 14, 14, 14, 14, 14, 14 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsPartialPerm(last, DomainOfPartialPerm(f));[127X[104X
    [4X[28X[5,3,1,6,2,7](4)[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation(f);[127X[104X
    [4X[28XTransformation( [ 6, 7, 1, 4, 3, 2, 8, 8 ] )[128X[104X
    [4X[25Xgap>[125X [27XAsTransformation(Transformation( [ 1, 1, 2 ] ), 0);[127X[104X
    [4X[28XIdentityTransformation[128X[104X
  [4X[32X[104X
  
  [1X53.3-2 RestrictedTransformation[101X
  
  [29X[2XRestrictedTransformation[102X( [3Xf[103X, [3Xlist[103X ) [32X operation
  [29X[2XRestrictedTransformationNC[102X( [3Xf[103X, [3Xlist[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0Y[10XRestrictedTransformation[110X  returns the new transformation [10Xg[110X such that [10Xi^g=i^[3Xf[103X[10X[110X
  for all [10Xi[110X in [3Xlist[103X and such that [10Xi^g=i[110X for all [10Xi[110X not in [3Xlist[103X.[133X
  
  [33X[0;0Y[10XRestrictedTransformation[110X  checks  that  [3Xlist[103X  is a duplicate free dense list
  consisting of positive integers, whereas [10XRestrictedTransformationNC[110X performs
  no checks.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2, 10, 5, 9, 10, 9, 6, 3, 8, 4, 6, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XRestrictedTransformation(f, [ 1, 2, 3, 10, 11, 12 ] );[127X[104X
    [4X[28XTransformation( [ 2, 10, 5, 4, 5, 6, 7, 8, 9, 4, 6, 5 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.3-3 PermutationOfImage[101X
  
  [29X[2XPermutationOfImage[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA permutation or [9Xfail[109X.[133X
  
  [33X[0;0YIf  the  transformation  [3Xf[103X is a permutation of the points in its image, then
  [10XPermutationOfImage[110X  returns  this  permutation.  If  [3Xf[103X  does not permute its
  image, then [9Xfail[109X is returned.[133X
  
  [33X[0;0YIf  [3Xf[103X  happens  to be a permutation, then [10XPermutationOfImage[110X with argument [3Xf[103X
  returns the same value as [10XAsPermutation[110X with argument [3Xf[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 5, 8, 3, 5, 8, 6, 2, 2, 7, 8 ] );;[127X[104X
    [4X[25Xgap>[125X [27XPermutationOfImage(f);[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 8, 2, 10, 2, 4, 4, 7, 6, 9, 10 ] );; [127X[104X
    [4X[25Xgap>[125X [27XPermutationOfImage(f);[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 1, 3, 6, 6, 2, 10, 2, 3, 10, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XPermutationOfImage(f);[127X[104X
    [4X[28X(2,3,6,10,5)[128X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 5, 2, 8, 4, 1, 8, 10, 3, 5, 7 ] );;[127X[104X
    [4X[25Xgap>[125X [27XPermutationOfImage(f);[127X[104X
    [4X[28X(1,5)(3,8)(7,10)[128X[104X
  [4X[32X[104X
  
  
  [1X53.4 [33X[0;0YOperators for transformations[133X[101X
  
  [8X[10X[3Xi[103X[10X ^ [3Xf[103X[10X[110X[108X
        [33X[0;6Yreturns  the  image of the positive integer [3Xi[103X under the transformation
        [3Xf[103X.[133X
  
  [8X[10X[3Xf[103X[10X ^ [3Xg[103X[10X[110X[108X
        [33X[0;6Yreturns  [10X[3Xg[103X[10X^-1*[3Xf[103X[10X*[3Xg[103X[10X[110X when [3Xf[103X is a transformation and [3Xg[103X is a permutation [2X\^[102X
        ([14XReference: ^[114X). This operation requires essentially the same number of
        steps  as  multiplying  a  transformation  by  a permutation, which is
        approximately one third of the number required to first invert [3Xg[103X, take
        the produce with [3Xf[103X, and then the product with [3Xg[103X.[133X
  
  [8X[10X[3Xf[103X[10X * [3Xg[103X[10X[110X[108X
        [33X[0;6Yreturns the composition of [3Xf[103X and [3Xg[103X when [3Xf[103X and [3Xg[103X are transformations or
        permutations.  The  product  of  a permutation and a transformation is
        returned as a transformation.[133X
  
  [8X[10X[3Xf[103X[10X / [3Xg[103X[10X[110X[108X
        [33X[0;6Yreturns [10X[3Xf[103X[10X*[3Xg[103X[10X^-1[110X when [3Xf[103X is a transformation and [3Xg[103X is a permutation. This
        operation requires essentially the same number of steps as multiplying
        a  transformation  by  a  permutation, which is approximately half the
        number required to first invert [3Xg[103X and then take the produce with [3Xf[103X.[133X
  
  [8X[10XLQUO([3Xg[103X[10X, [3Xf[103X[10X)[110X[108X
        [33X[0;6Yreturns [10X[3Xg[103X[10X^-1*[3Xf[103X[10X[110X when [3Xf[103X is a transformation and [3Xg[103X is a permutation. This
        operation  uses  essentially the same number of steps as multiplying a
        transformation  by  a  permutation,  which  is  approximately half the
        number required to first invert [3Xg[103X and then take the produce with [3Xf[103X.[133X
  
  [8X[10X[3Xf[103X[10X < [3Xg[103X[10X[110X[108X
        [33X[0;6Yreturns [9Xtrue[109X if the image list of [3Xf[103X is lexicographically less than the
        image list of [3Xg[103X and [9Xfalse[109X if it is not.[133X
  
  [8X[10X[3Xf[103X[10X = [3Xg[103X[10X[110X[108X
        [33X[0;6Yreturns  [9Xtrue[109X  if the transformation [3Xf[103X equals the transformation [3Xg[103X and
        returns [9Xfalse[109X if it does not.[133X
  
  [1X53.4-1 PermLeftQuoTransformation[101X
  
  [29X[2XPermLeftQuoTransformation[102X( [3Xf[103X, [3Xg[103X ) [32X operation
  [29X[2XPermLeftQuoTransformationNC[102X( [3Xf[103X, [3Xg[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA permutation.[133X
  
  [33X[0;0YReturns  the  permutation  on  the image set of [3Xf[103X induced by [10X[3Xf[103X[10X^-1*[3Xg[103X[10X[110X when the
  transformations [3Xf[103X and [3Xg[103X have equal kernel and image set.[133X
  
  [33X[0;0Y[10XPermLeftQuoTransformation[110X verifies that [3Xf[103X and [3Xg[103X have equal kernels and image
  sets,  and returns an error if they do not. [10XPermLeftQuoTransformationNC[110X does
  no checks.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 5, 6, 7, 1, 4, 3, 2, 7 ] );;[127X[104X
    [4X[25Xgap>[125X [27Xg:=Transformation( [ 5, 7, 1, 6, 4, 3, 2, 1 ] );;[127X[104X
    [4X[25Xgap>[125X [27XPermLeftQuoTransformation(f, g);[127X[104X
    [4X[28X(1,6,7)[128X[104X
    [4X[25Xgap>[125X [27XPermLeftQuoTransformation(g, f);[127X[104X
    [4X[28X(1,7,6)[128X[104X
  [4X[32X[104X
  
  [1X53.4-2 IsInjectiveListTrans[101X
  
  [29X[2XIsInjectiveListTrans[102X( [3Xobj[103X, [3Xlist[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
  
  [33X[0;0YThe  argument  [3Xobj[103X  should  be  a  transformation or the list of images of a
  transformation   and   [3Xlist[103X   should   be   a  list  of  positive  integers.
  [10XIsInjectiveListTrans[110X checks if [3Xobj[103X is injective on [3Xlist[103X.[133X
  
  [33X[0;0YMore precisely, if [3Xobj[103X is a transformation, then we define [10Xf:=[3Xobj[103X[10X[110X and if [3Xobj[103X
  is  the  image  list  of  a transformation we define [10Xf:=Transformation([3Xobj[103X[10X)[110X.
  [10XIsInjectiveListTrans[110X  returns [9Xtrue[109X if [10Xf[110X is injective on [3Xlist[103X and [9Xfalse[109X if it
  is not. If [3Xlist[103X is not duplicate free, then [9Xfalse[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 1, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XIsInjectiveListTrans( [ 1, 5 ], f );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsInjectiveListTrans( [ 5, 1 ], f );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsInjectiveListTrans( [ 5, 1, 5, 1, 1, ], f );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsInjectiveListTrans( [ 5, 1, 2, 3 ], [ 1, 2, 3, 4, 5 ] );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X53.4-3 ComponentTransformationInt[101X
  
  [29X[2XComponentTransformationInt[102X( [3Xf[103X, [3Xn[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA list of positive integers.[133X
  
  [33X[0;0YIf   [3Xf[103X   is   a   transformation   and   [3Xn[103X   is  a  positive  integer,  then
  [10XComponentTransformationInt[110X  returns  those  elements [10Xi[110X such that [10X[3Xn[103X[10X^[3Xf[103X[10X^j=i[110X for
  some  positive integer [10Xj[110X, i.e. the elements of the component of [3Xf[103X containing
  [3Xn[103X that can be obtained by applying powers of [3Xf[103X to [3Xn[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 2, 8, 4, 7, 5, 8, 3, 5, 8 ] );;[127X[104X
    [4X[25Xgap>[125X [27XComponentTransformationInt(f, 1);[127X[104X
    [4X[28X[ 1, 6, 5, 7, 8, 3 ][128X[104X
    [4X[25Xgap>[125X [27XComponentTransformationInt(f, 12);[127X[104X
    [4X[28X[ 12 ][128X[104X
    [4X[25Xgap>[125X [27XComponentTransformationInt(f, 5); [127X[104X
    [4X[28X[ 5, 7, 8, 3 ][128X[104X
  [4X[32X[104X
  
  [1X53.4-4 PreImagesOfTransformation[101X
  
  [29X[2XPreImagesOfTransformation[102X( [3Xf[103X, [3Xn[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA set of positive integers.[133X
  
  [33X[0;0YReturns  the preimages of the positive integer [3Xn[103X under the transformation [3Xf[103X,
  i.e. the positive integers [10Xi[110X such that [10Xi^[3Xf[103X[10X=n[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 1, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XPreImagesOfTransformation(f, 1);[127X[104X
    [4X[28X[ 8, 9 ][128X[104X
    [4X[25Xgap>[125X [27XPreImagesOfTransformation(f, 3);[127X[104X
    [4X[28X[  ][128X[104X
    [4X[25Xgap>[125X [27XPreImagesOfTransformation(f, 100);[127X[104X
    [4X[28X[ 100 ][128X[104X
  [4X[32X[104X
  
  
  [1X53.5 [33X[0;0YAttributes for transformations[133X[101X
  
  [33X[0;0YIn  this  section  we  describe  the  functions available in [5XGAP[105X for finding
  various properties and attributes of transformations.[133X
  
  [1X53.5-1 DegreeOfTransformation[101X
  
  [29X[2XDegreeOfTransformation[102X( [3Xf[103X ) [32X function
  [29X[2XDegreeOfTransformationCollection[102X( [3Xcoll[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0YThe  [13Xdegree[113X  of  a transformation [3Xf[103X is the largest value such that [10Xn^[3Xf[103X[10X<>n[110X or
  [10Xi^[3Xf[103X[10X=n[110X  for  some  [10Xi<>n[110X.  Equivalently, the degree of a transformation is the
  least  value [10Xn[110X such that [10X[n+1,n+2,...][110X is fixed pointwise by [3Xf[103X. The degree a
  collection   of   transformations   [3Xcoll[103X   is  the  maximum  degree  of  any
  transformation in [3Xcoll[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XDegreeOfTransformation(IdentityTransformation);[127X[104X
    [4X[28X0[128X[104X
    [4X[25Xgap>[125X [27XDegreeOfTransformationCollection([ Transformation( [ 1, 3, 4, 1 ] ), [127X[104X
    [4X[25X>[125X [27XTransformation( [ 3, 1, 1, 3, 4 ]), Transformation( [ 2, 4, 1, 2 ] ) ]);[127X[104X
    [4X[28X5[128X[104X
  [4X[32X[104X
  
  [1X53.5-2 ImageListOfTransformation[101X
  
  [29X[2XImageListOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation
  [29X[2XListTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation
  [6XReturns:[106X  [33X[0;10YThe list of images of a transformation.[133X
  
  [33X[0;0YReturns  the  list  of images of [10X[1..[3Xn[103X[10X][110X under the transformation [3Xf[103X, which is
  [10X[1^[3Xf[103X[10X..[3Xn[103X[10X^[3Xf[103X[10X][110X.  If  the  optional  second  argument  [3Xn[103X is not present, then the
  degree of [3Xf[103X is used by default.[133X
  
  [33X[0;0YThis   is   the  analogue  for  transformations  of  [2XListPerm[102X  ([14X42.5-1[114X)  for
  permutations.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2 ,3, 4, 2, 4 ] );;[127X[104X
    [4X[25Xgap>[125X [27XImageListOfTransformation(f);[127X[104X
    [4X[28X[ 2, 3, 4, 2, 4 ][128X[104X
    [4X[25Xgap>[125X [27XImageListOfTransformation(f, 10);[127X[104X
    [4X[28X[ 2, 3, 4, 2, 4, 6, 7, 8, 9, 10 ][128X[104X
  [4X[32X[104X
  
  [1X53.5-3 ImageSetOfTransformation[101X
  
  [29X[2XImageSetOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YThe set of images of the transformation.[133X
  
  [33X[0;0YReturns  the set of points in the list of images of [10X[1..[3Xn[103X[10X][110X under [3Xf[103X, i.e. the
  sorted  list  of  images  with  duplicates  removed.  If the optional second
  argument [3Xn[103X is not given, then the degree of [3Xf[103X is used.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 5, 6, 7, 1, 4, 3, 2, 7 ] );;[127X[104X
    [4X[25Xgap>[125X [27XImageSetOfTransformation(f);[127X[104X
    [4X[28X[ 1, 2, 3, 4, 5, 6, 7 ][128X[104X
    [4X[25Xgap>[125X [27XImageSetOfTransformation(f, 10);[127X[104X
    [4X[28X[ 1, 2, 3, 4, 5, 6, 7, 9, 10 ][128X[104X
  [4X[32X[104X
  
  [1X53.5-4 RankOfTransformation[101X
  
  [29X[2XRankOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute
  [29X[2XRankOfTransformation[102X( [3Xf[103X[, [3Xlist[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YThe rank of a transformation.[133X
  
  [33X[0;0YWhen  the  arguments  are  a  transformation  [3Xf[103X  and  a  positive integer [3Xn[103X,
  [10XRankOfTransformation[110X   returns  the  size  of  the  set  of  images  of  the
  transformation  [3Xf[103X  in the range [10X[1..[3Xn[103X[10X][110X. If the optional second argument [3Xn[103X is
  not specified, then the degree of [3Xf[103X is used.[133X
  
  [33X[0;0YWhen  the  arguments  are  a  transformation  [3Xf[103X  and a list [3Xlist[103X of positive
  integers,  this  function  returns  the  size  of  the  set of images of the
  transformation [3Xf[103X on [3Xlist[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 8, 5, 8, 2, 2, 8, 4, 7, 3, 1 ] );;[127X[104X
    [4X[25Xgap>[125X [27XImageSetOfTransformation(f);[127X[104X
    [4X[28X[ 1, 2, 3, 4, 5, 7, 8 ][128X[104X
    [4X[25Xgap>[125X [27XRankOfTransformation(f);[127X[104X
    [4X[28X7[128X[104X
    [4X[25Xgap>[125X [27XRankOfTransformation(f, 100);                   [127X[104X
    [4X[28X97[128X[104X
    [4X[25Xgap>[125X [27XRankOfTransformation(f, [ 2, 5, 8 ] );[127X[104X
    [4X[28X3[128X[104X
  [4X[32X[104X
  
  [1X53.5-5 MovedPoints[101X
  
  [29X[2XMovedPoints[102X( [3Xf[103X ) [32X attribute
  [29X[2XMovedPoints[102X( [3Xcoll[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA set of positive integers.[133X
  
  [33X[0;0YWhen  the  argument  is  a  transformation,  [10XMovedPoints[110X  returns the set of
  positive  integers [10Xi[110X such that [10Xi^[3Xf[103X[10X<>i[110X. [10XMovedPoints[110X returns the set of points
  moved by some element of the collection of transformations [3Xcoll[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 10, 1, 4, 6, 5, 1, 2, 3, 3 ] );;[127X[104X
    [4X[25Xgap>[125X [27XMovedPoints(f); [127X[104X
    [4X[28X[ 1, 2, 3, 5, 6, 7, 8, 9, 10 ][128X[104X
    [4X[25Xgap>[125X [27Xf:=IdentityTransformation;  [127X[104X
    [4X[28XIdentityTransformation[128X[104X
    [4X[25Xgap>[125X [27XMovedPoints(f);[127X[104X
    [4X[28X[  ][128X[104X
  [4X[32X[104X
  
  [1X53.5-6 NrMovedPoints[101X
  
  [29X[2XNrMovedPoints[102X( [3Xf[103X ) [32X attribute
  [29X[2XNrMovedPoints[102X( [3Xcoll[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0YWhen  the  argument  is a transformation,[10XNrMovedPoints[110X returns the number of
  positive  integers  [10Xi[110X  such  that  [10Xi^[3Xf[103X[10X<>i[110X. [10XMovedPoints[110X returns the number of
  points  which  are  moved  by  at  least  one  element  of the collection of
  transformations [3Xcoll[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 7, 1, 4, 3, 2, 7, 7, 6, 6, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XNrMovedPoints(f);[127X[104X
    [4X[28X9[128X[104X
    [4X[25Xgap>[125X [27XNrMovedPoints(IdentityTransformation);[127X[104X
    [4X[28X0[128X[104X
  [4X[32X[104X
  
  [1X53.5-7 SmallestMovedPoint[101X
  
  [29X[2XSmallestMovedPoint[102X( [3Xf[103X ) [32X attribute
  [29X[2XSmallestMovedPoint[102X( [3Xcoll[103X ) [32X method
  [6XReturns:[106X  [33X[0;10YA positive integer or [9Xinfinity[109X.[133X
  
  [33X[0;0Y[10XSmallestMovedPoint[110X  returns the smallest positive integer [10Xi[110X such that [10Xi^[3Xf[103X[10X<>i[110X
  if  such  an [10Xi[110X exists. If [3Xf[103X is the identity transformation, then [9Xinfinity[109X is
  returned.[133X
  
  [33X[0;0YIf  the  argument is a collection of transformations [3Xcoll[103X, then the smallest
  point  which is moved by at least one element of [3Xcoll[103X is returned, if such a
  point   exists.   If  [3Xcoll[103X  only  contains  identity  transformations,  then
  [10XSmallestMovedPoint[110X returns [9Xinfinity[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := FullTransformationSemigroup(5);    [127X[104X
    [4X[28X<full transformation monoid of degree 5>[128X[104X
    [4X[25Xgap>[125X [27XSmallestMovedPoint(S);              [127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(IdentityTransformation);[127X[104X
    [4X[28X<trivial transformation group of degree 0 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XSmallestMovedPoint(S);[127X[104X
    [4X[28Xinfinity[128X[104X
    [4X[25Xgap>[125X [27Xf := Transformation( [ 1, 2, 3, 6, 6, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XSmallestMovedPoint(f);[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X53.5-8 LargestMovedPoint[101X
  
  [29X[2XLargestMovedPoint[102X( [3Xf[103X ) [32X attribute
  [29X[2XLargestMovedPoint[102X( [3Xcoll[103X ) [32X method
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0Y[10XLargestMovedPoint[110X  returns  the largest positive integers [10Xi[110X such that [10Xi^[3Xf[103X[10X<>i[110X
  if  such  an  [10Xi[110X  exists.  If  [3Xf[103X  is  the  identity transformation, then [10X0[110X is
  returned.[133X
  
  [33X[0;0YIf  the  argument  is a collection of transformations [3Xcoll[103X, then the largest
  point  which is moved by at least one element of [3Xcoll[103X is returned, if such a
  point   exists.   If  [3Xcoll[103X  only  contains  identity  transformations,  then
  [10XLargestMovedPoint[110X returns [10X0[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := FullTransformationSemigroup(5);    [127X[104X
    [4X[28X<full transformation monoid of degree 5>[128X[104X
    [4X[25Xgap>[125X [27XLargestMovedPoint(S);[127X[104X
    [4X[28X5[128X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(IdentityTransformation);[127X[104X
    [4X[28X<trivial transformation group of degree 0 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XLargestMovedPoint(S);[127X[104X
    [4X[28X0[128X[104X
    [4X[25Xgap>[125X [27Xf := Transformation( [ 1, 2, 3, 6, 6, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XLargestMovedPoint(f); [127X[104X
    [4X[28X5[128X[104X
  [4X[32X[104X
  
  [1X53.5-9 SmallestImageOfMovedPoint[101X
  
  [29X[2XSmallestImageOfMovedPoint[102X( [3Xf[103X ) [32X attribute
  [29X[2XSmallestImageOfMovedPoint[102X( [3Xcoll[103X ) [32X method
  [6XReturns:[106X  [33X[0;10YA positive integer or [9Xinfinity[109X.[133X
  
  [33X[0;0Y[10XSmallestImageOfMovedPoint[110X  returns  the  smallest  positive integer [10Xi^[3Xf[103X[10X[110X such
  that  [10Xi^[3Xf[103X[10X<>i[110X  if such an [10Xi[110X exists. If [3Xf[103X is the identity transformation, then
  [9Xinfinity[109X is returned.[133X
  
  [33X[0;0YIf  the  argument is a collection of transformations [3Xcoll[103X, then the smallest
  integer  which is the image a point moved by at least one element of [3Xcoll[103X is
  returned,   if   such  a  point  exists.  If  [3Xcoll[103X  only  contains  identity
  transformations, then [10XSmallestImageOfMovedPoint[110X returns [9Xinfinity[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := FullTransformationSemigroup(5);    [127X[104X
    [4X[28X<full transformation monoid of degree 5>[128X[104X
    [4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(S);              [127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(IdentityTransformation);[127X[104X
    [4X[28X<trivial transformation group of degree 0 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(S);[127X[104X
    [4X[28Xinfinity[128X[104X
    [4X[25Xgap>[125X [27Xf := Transformation( [ 1, 2, 3, 6, 6, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(f);[127X[104X
    [4X[28X6[128X[104X
  [4X[32X[104X
  
  [1X53.5-10 LargestImageOfMovedPoint[101X
  
  [29X[2XLargestImageOfMovedPoint[102X( [3Xf[103X ) [32X attribute
  [29X[2XLargestImageOfMovedPoint[102X( [3Xcoll[103X ) [32X method
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0Y[10XLargestImageOfMovedPoint[110X  returns the largest positive integer [10Xi^[3Xf[103X[10X[110X such that
  [10Xi^[3Xf[103X[10X<>i[110X  if  such an [10Xi[110X exists. If [3Xf[103X is the identity transformation, then [10X0[110X is
  returned.[133X
  
  [33X[0;0YIf  the  argument  is a collection of transformations [3Xcoll[103X, then the largest
  integer  which is the image a point moved by at least one element of [3Xcoll[103X is
  returned,   if   such  a  point  exists.  If  [3Xcoll[103X  only  contains  identity
  transformations, then [10XLargestImageOfMovedPoint[110X returns [10X0[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := FullTransformationSemigroup(5);    [127X[104X
    [4X[28X<full transformation monoid of degree 5>[128X[104X
    [4X[25Xgap>[125X [27XLargestImageOfMovedPoint(S);[127X[104X
    [4X[28X5[128X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(IdentityTransformation);;[127X[104X
    [4X[25Xgap>[125X [27XLargestImageOfMovedPoint(S);[127X[104X
    [4X[28X0[128X[104X
    [4X[25Xgap>[125X [27Xf := Transformation( [ 1, 2, 3, 6, 6, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XLargestImageOfMovedPoint(f); [127X[104X
    [4X[28X6[128X[104X
  [4X[32X[104X
  
  [1X53.5-11 FlatKernelOfTransformation[101X
  
  [29X[2XFlatKernelOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YThe flat kernel of a transformation.[133X
  
  [33X[0;0YIf  the kernel classes of the transformation [3Xf[103X on [10X[1..[3Xn[103X[10X][110X are [22XK_1, dots, K_r[122X,
  then  [10XFlatKernelOfTransformation[110X returns a list [10XL[110X such that [10XL[i]=j[110X for all [10Xi[110X
  in [22XK_j[122X. For a given transformation and positive integer [3Xn[103X, there is a unique
  such list.[133X
  
  [33X[0;0YIf  the  optional  second argument [3Xn[103X is not present, then the degree of [3Xf[103X is
  used by defualt.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 10, 3, 7, 10, 1, 5, 9, 2, 6, 10 ] );;[127X[104X
    [4X[25Xgap>[125X [27XFlatKernelOfTransformation(f);[127X[104X
    [4X[28X[ 1, 2, 3, 1, 4, 5, 6, 7, 8, 1 ][128X[104X
  [4X[32X[104X
  
  [1X53.5-12 KernelOfTransformation[101X
  
  [29X[2XKernelOfTransformation[102X( [3Xf[103X[, [3Xn[103X, [3Xbool[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YThe kernel of a transformation.[133X
  
  [33X[0;0YWhen  the  arguments are a transformation [3Xf[103X, a positive integer [3Xn[103X, and [9Xtrue[109X,
  [10XKernelOfTransformation[110X  returns the kernel of the transformation [3Xf[103X on [10X[1..[3Xn[103X[10X][110X
  as  a  set of sets of positive integers. If the argument [3Xbool[103X is [9Xfalse[109X, then
  only the non-singleton classes are returned.[133X
  
  [33X[0;0YThe  second  and  third  arguments  are optional, the default values are the
  degree of [3Xf[103X and [9Xtrue[109X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 11, 1, 12, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XKernelOfTransformation(f);[127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 5 ], [ 3 ], [ 6, 7 ], [ 8, 10 ], [ 9 ], [ 11 ], [128X[104X
    [4X[28X  [ 12 ] ][128X[104X
    [4X[25Xgap>[125X [27XKernelOfTransformation(f, 5);[127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 5 ], [ 3 ] ][128X[104X
    [4X[25Xgap>[125X [27XKernelOfTransformation(f, 5, false);[127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 5 ] ][128X[104X
    [4X[25Xgap>[125X [27XKernelOfTransformation(f, 15);[127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 5 ], [ 3 ], [ 6, 7 ], [ 8, 10 ], [ 9 ], [ 11 ], [128X[104X
    [4X[28X  [ 12 ], [ 13 ], [ 14 ], [ 15 ] ][128X[104X
    [4X[25Xgap>[125X [27XKernelOfTransformation(f, false);    [127X[104X
    [4X[28X[ [ 1, 4 ], [ 2, 5 ], [ 6, 7 ], [ 8, 10 ] ][128X[104X
  [4X[32X[104X
  
  [1X53.5-13 InverseOfTransformation[101X
  
  [29X[2XInverseOfTransformation[102X( [3Xf[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0Y[10XInverseOfTransformation[110X  returns a semigroup inverse of the transformation [3Xf[103X
  in  the full transformation semigroup. An [13Xinverse[113X of [3Xf[103X is any transformation
  [10Xg[110X  such  that  [10X[3Xf[103X[10X*g*[3Xf[103X[10X=[3Xf[103X[10X[110X  and  [10Xg*[3Xf[103X[10X*g=g[110X.  Every transformation has at least one
  inverse in a full transformation semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 1, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27Xg:=InverseOfTransformation(f);[127X[104X
    [4X[28XTransformation( [ 8, 1, 1, 1, 10, 2, 3, 1, 6, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27Xf*g*f;[127X[104X
    [4X[28XTransformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 1, 5 ] )[128X[104X
    [4X[25Xgap>[125X [27Xg*f*g;[127X[104X
    [4X[28XTransformation( [ 8, 1, 1, 1, 10, 2, 3, 1, 6, 1 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.5-14 Inverse[101X
  
  [29X[2XInverse[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0YIf  the  transformation  [3Xf[103X  is a bijection, then [10XInverse[110X or [10X[3Xf[103X[10X^-1[110X returns the
  inverse of [3Xf[103X. If [3Xf[103X is not a bijection, then [9Xfail[109X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTransformation( [ 3, 8, 12, 1, 11, 9, 9, 4, 10, 5, 10, 6 ] )^-1;[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XTransformation( [ 2, 3, 1 ] )^-1;[127X[104X
    [4X[28XTransformation( [ 3, 1, 2 ] )[128X[104X
  [4X[32X[104X
  
  [1X53.5-15 IndexPeriodOfTransformation[101X
  
  [29X[2XIndexPeriodOfTransformation[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA pair of positive integers.[133X
  
  [33X[0;0YReturns the least positive integers [10Xm[110X and [10Xr[110X such that [10X[3Xf[103X[10X^(m+r)=[3Xf[103X[10X^m[110X, which are
  known as the [13Xindex[113X and [13Xperiod[113X of the transformation [3Xf[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 3, 4, 4, 6, 1, 3, 3, 7, 1 ] );; [127X[104X
    [4X[25Xgap>[125X [27XIndexPeriodOfTransformation(f); [127X[104X
    [4X[28X[ 2, 3 ][128X[104X
    [4X[25Xgap>[125X [27Xf^2=f^5; [127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIndexPeriodOfTransformation(IdentityTransformation);[127X[104X
    [4X[28X[ 1, 1 ][128X[104X
    [4X[25Xgap>[125X [27XIndexPeriodOfTransformation(Transformation([1,2,1]));[127X[104X
    [4X[28X[ 1, 1 ][128X[104X
    [4X[25Xgap>[125X [27XIndexPeriodOfTransformation(Transformation([1,2,3]));[127X[104X
    [4X[28X[ 1, 1 ][128X[104X
    [4X[25Xgap>[125X [27XIndexPeriodOfTransformation(Transformation([1,3,2]));[127X[104X
    [4X[28X[ 1, 2 ][128X[104X
  [4X[32X[104X
  
  [1X53.5-16 SmallestIdempotentPower[101X
  
  [29X[2XSmallestIdempotentPower[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0YThis   function   returns  the  least  positive  integer  [10Xn[110X  such  that  the
  transformation  [10X[3Xf[103X[10X^n[110X  is an idempotent. The smallest idempotent power of [3Xf[103X is
  the  least  multiple of the period of [3Xf[103X that is greater than or equal to the
  index of [3Xf[103X; see [2XIndexPeriodOfTransformation[102X ([14X53.5-15[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 7, 4, 1, 7, 4, 6, 1, 3, 4 ] );;[127X[104X
    [4X[25Xgap>[125X [27XSmallestIdempotentPower(f);[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 6, 6, 2, 7, 1, 5, 3, 10, 6 ] );;[127X[104X
    [4X[25Xgap>[125X [27XSmallestIdempotentPower(f);[127X[104X
    [4X[28X2[128X[104X
  [4X[32X[104X
  
  [1X53.5-17 ComponentsOfTransformation[101X
  
  [29X[2XComponentsOfTransformation[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA list of lists of positive integers.[133X
  
  [33X[0;0Y[10XComponentsOfTransformation[110X   returns   a  list  of  the  components  of  the
  transformation      [3Xf[103X.     Each     component     is     a     subset     of
  [10X[1..DegreeOfTransformation(f)][110X,   and   the   union  of  the  components  is
  [10X[1..DegreeOfTransformation(f)][110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] );[127X[104X
    [4X[28XTransformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] )[128X[104X
    [4X[25Xgap>[125X [27XComponentsOfTransformation(f);  [127X[104X
    [4X[28X[ [ 1, 4, 6, 9 ], [ 2, 3, 5, 7, 10, 11, 12 ], [ 8 ] ][128X[104X
    [4X[25Xgap>[125X [27Xf:=AsTransformation((1,8,2,4,11,5,10)(3,7)(9,12));[127X[104X
    [4X[28XTransformation( [ 8, 4, 7, 11, 10, 6, 3, 2, 12, 1, 5, 9 ] )[128X[104X
    [4X[25Xgap>[125X [27XComponentsOfTransformation(f);  [127X[104X
    [4X[28X[ [ 1, 2, 4, 5, 8, 10, 11 ], [ 3, 7 ], [ 6 ], [ 9, 12 ] ][128X[104X
  [4X[32X[104X
  
  [1X53.5-18 NrComponentsOfTransformation[101X
  
  [29X[2XNrComponentsOfTransformation[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA positive integer.[133X
  
  [33X[0;0Y[10XNrComponentsOfTransformation[110X   returns  the  number  of  components  of  the
  transformation [3Xf[103X on the range [10X[1..DegreeOfTransformation([3Xf[103X[10X)][110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] );[127X[104X
    [4X[28XTransformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] )[128X[104X
    [4X[25Xgap>[125X [27XNrComponentsOfTransformation(f);[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27Xf:=AsTransformation((1,8,2,4,11,5,10)(3,7)(9,12));[127X[104X
    [4X[28XTransformation( [ 8, 4, 7, 11, 10, 6, 3, 2, 12, 1, 5, 9 ] )[128X[104X
    [4X[25Xgap>[125X [27XNrComponentsOfTransformation(f);[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X53.5-19 ComponentRepsOfTransformation[101X
  
  [29X[2XComponentRepsOfTransformation[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA list of lists of positive integers.[133X
  
  [33X[0;0Y[10XComponentRepsOfTransformation[110X  returns the representatives, in the following
  sense,   of  the  components  of  the  transformation  [3Xf[103X.  For  every  [10Xi[110X  in
  [10X[1..DegreeOfTransformation(f)][110X   there  exists  a  representative  [10Xj[110X  and  a
  positive  integer  [10Xk[110X  such  that  [10Xi^([3Xf[103X[10X^k)=j[110X. The representatives returned by
  [10XComponentRepsOfTransformation[110X  are  partitioned  according  to the component
  they  belong  to.  [10XComponentRepsOfTransformation[110X returns the least number of
  representatives.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] );[127X[104X
    [4X[28XTransformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] )[128X[104X
    [4X[25Xgap>[125X [27XComponentRepsOfTransformation(f);[127X[104X
    [4X[28X[ [ 3, 10 ], [ 9 ], [ 8 ] ][128X[104X
    [4X[25Xgap>[125X [27Xf:=AsTransformation((1,8,2,4,11,5,10)(3,7)(9,12));[127X[104X
    [4X[28XTransformation( [ 8, 4, 7, 11, 10, 6, 3, 2, 12, 1, 5, 9 ] )[128X[104X
    [4X[25Xgap>[125X [27XComponentRepsOfTransformation(f);[127X[104X
    [4X[28X[ [ 1 ], [ 3 ], [ 6 ], [ 9 ] ][128X[104X
  [4X[32X[104X
  
  [1X53.5-20 CyclesOfTransformation[101X
  
  [29X[2XCyclesOfTransformation[102X( [3Xf[103X[, [3Xlist[103X] ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA list of lists of positive integers.[133X
  
  [33X[0;0YWhen  the  arguments of this function are a transformation[3Xf[103X and a list [3Xlist[103X,
  it  returns  a  list  of  the  cycles  of the components of [3Xf[103X containing any
  element of [3Xlist[103X.[133X
  
  [33X[0;0YIf   the   optional   second   argument  is  not  present,  then  the  range
  [10X[1..DegreeOfTransformation([3Xf[103X[10X)][110X is used as the default value for [3Xlist[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] );[127X[104X
    [4X[28XTransformation( [ 6, 12, 11, 1, 7, 6, 2, 8, 4, 7, 5, 12 ] )[128X[104X
    [4X[25Xgap>[125X [27XCyclesOfTransformation(f);   [127X[104X
    [4X[28X[ [ 6 ], [ 12 ], [ 8 ] ][128X[104X
    [4X[25Xgap>[125X [27XCyclesOfTransformation(f, [ 1, 2, 4 ] ); [127X[104X
    [4X[28X[ [ 6 ], [ 12 ] ][128X[104X
    [4X[25Xgap>[125X [27XCyclesOfTransformation(f, [ 1 .. 17 ]);[127X[104X
    [4X[28X[ [ 6 ], [ 12 ], [ 8 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ], [ 17 ] ][128X[104X
  [4X[32X[104X
  
  [1X53.5-21 CycleTransformationInt[101X
  
  [29X[2XCycleTransformationInt[102X( [3Xf[103X, [3Xn[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA list of positive integers.[133X
  
  [33X[0;0YIf   [3Xf[103X   is   a   transformation   and   [3Xn[103X   is  a  positive  integer,  then
  [10XCycleTransformationInt[110X returns the cycle of the component of [3Xf[103X containing [3Xn[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 6, 2, 8, 4, 7, 5, 8, 3, 5, 8 ] );;[127X[104X
    [4X[25Xgap>[125X [27XCycleTransformationInt(f, 1);[127X[104X
    [4X[28X[ 8, 3 ][128X[104X
    [4X[25Xgap>[125X [27XCycleTransformationInt(f, 12);[127X[104X
    [4X[28X[ 12 ][128X[104X
    [4X[25Xgap>[125X [27XCycleTransformationInt(f, 5); [127X[104X
    [4X[28X[ 8, 3 ][128X[104X
  [4X[32X[104X
  
  [1X53.5-22 LeftOne[101X
  
  [29X[2XLeftOne[102X( [3Xf[103X ) [32X attribute
  [29X[2XRightOne[102X( [3Xf[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA transformation.[133X
  
  [33X[0;0Y[10XLeftOne[110X  returns  an  idempotent transformation [10Xe[110X such that the kernel (with
  respect  to  the degree of [3Xf[103X) of [10Xe[110X equals the kernel of the transformation [3Xf[103X
  and [10Xe*[3Xf[103X[10X=f[110X.[133X
  
  [33X[0;0Y[10XRightOne[110X  returns  an  idempotent  transformation  [10Xe[110X such that the image set
  (with respect to the degree of [3Xf[103X) of [10Xe[110X equals the image set of [3Xf[103X and [10X[3Xf[103X[10X*e=f[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 11, 10, 2, 11, 4, 4, 7, 6, 9, 10, 1, 11 ] );;[127X[104X
    [4X[25Xgap>[125X [27Xe:=RightOne(f);[127X[104X
    [4X[28XTransformation( [ 1, 2, 2, 4, 4, 6, 7, 7, 9, 10, 11, 11 ] )[128X[104X
    [4X[25Xgap>[125X [27XIsIdempotent(e);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xf*e=f;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xe:=LeftOne(f);[127X[104X
    [4X[28XTransformation( [ 1, 2, 3, 1, 5, 5, 7, 8, 9, 2, 11, 1 ] )[128X[104X
    [4X[25Xgap>[125X [27Xe*f=f;  [127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsIdempotent(e);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X53.5-23 TrimTransformation[101X
  
  [29X[2XTrimTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation
  [6XReturns:[106X  [33X[0;10YNothing.[133X
  
  [33X[0;0YIt can happen that the internal representation of a transformation uses more
  memory   than  necessary.  For  example,  this  can  happen  when  composing
  transformations where it is possible that the resulting transformation [3Xf[103X has
  belongs  to  [10XIsTrans4Rep[110X and has its images stored as 32-bit integers, while
  none of its moved points exceeds 65536. The purpose of [10XTrimTransformation[110X is
  to  change  the  internal representation of such an [3Xf[103X to remove the trailing
  fixed points.[133X
  
  [33X[0;0YIf   the   optional  second  argument  [3Xn[103X  is  provided,  then  the  internal
  representation  of  [3Xf[103X  is  reduced  to  the  images  of the first [3Xn[103X positive
  integers.  Please note that it must be the case that [10Xi^[3Xf[103X[10X<=n[110X for all [10Xi[110X in the
  range   [10X[1..[3Xn[103X[10X][110X   otherwise   the   resulting   object   will  not  define  a
  transformation.[133X
  
  [33X[0;0YIf  the  optional  second  argument is not included, then the degree of [3Xf[103X is
  used by default.[133X
  
  [33X[0;0YThe  transformation  [3Xf[103X  is changed in-place, and nothing is returned by this
  function.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation( [ 1 .. 2^16 ], x-> x+1 );[127X[104X
    [4X[28X<transformation on 65537 pts with rank 65536>[128X[104X
    [4X[25Xgap>[125X [27Xg:=Transformation( [ 1 .. 2^16+1 ], function(x)[127X[104X
    [4X[25X>[125X [27Xif x=1 or x=65537 then return x; else return x-1; fi; end);[127X[104X
    [4X[28X<transformation on 65536 pts with rank 65535>[128X[104X
    [4X[25Xgap>[125X [27Xh:=g*f;[127X[104X
    [4X[28XTransformation( [ 2, 2 ] )[128X[104X
    [4X[25Xgap>[125X [27XDegreeOfTransformation(h); IsTrans4Rep(h); MemoryUsage(h);[127X[104X
    [4X[28X65537[128X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X262188[128X[104X
    [4X[25Xgap>[125X [27XTrimTransformation(h); h;[127X[104X
    [4X[28XTransformation( [ 2, 2 ] )[128X[104X
    [4X[25Xgap>[125X [27XDegreeOfTransformation(h); IsTrans4Rep(h); MemoryUsage(h);[127X[104X
    [4X[28X2[128X[104X
    [4X[28Xfalse[128X[104X
    [4X[28X44[128X[104X
  [4X[32X[104X
  
  
  [1X53.6 [33X[0;0YDisplaying transformations[133X[101X
  
  [33X[0;0YIt is possible to change the way that [5XGAP[105X displays transformations using the
  user  preferences [10XTransformationDisplayLimit[110X and [10XNotationForTransformations[110X;
  see   Section   [2XUserPreference[102X  ([14X3.2-3[114X)  for  more  information  about  user
  preferences.[133X
  
  [33X[0;0YIf  [10Xf[110X  is  a  transformation  where  degree  [10Xn[110X exceeds the value of the user
  preference [10XTransformationDisplayLimit[110X, then [10Xf[110X is displayed as:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X<transformation on n pts with rank r>[128X[104X
  [4X[32X[104X
  
  [33X[0;0Ywhere  [10Xr[110X  is  the  rank  of  [10Xf[110X  relative to [10Xn[110X. The idea is to abbreviate the
  display of transformations defined on many points. The default value for the
  [10XTransformationDisplayLimit[110X is [10X100[110X.[133X
  
  [33X[0;0YIf  the degree of [10Xf[110X does not exceed the value of [10XTransformationDisplayLimit[110X,
  then  how  [10Xf[110X  is  displayed  depends  on  the  value  of the user preference
  [10XNotationForTransformations[110X.[133X
  
  [33X[0;0YThere are two possible values for [10XNotationForTransformations[110X:[133X
  
  [8Xinput[108X
        [33X[0;6YWith   this   option   a   transformation   [3Xf[103X   is  displayed  in  as:
        [10XTransformation(ImageListOfTransformation([3Xf[103X[10X,  n)[110X  where [10Xn[110X is the degree
        of  [3Xf[103X.  The  only  exception  is the identity transformation, which is
        displayed as: [10XIdentityTransformation[110X.[133X
  
  [8Xfr[108X
        [33X[0;6YWith   this   option   a   transformation   [3Xf[103X   is  displayed  in  as:
        [10X<transformation:  ImageListOfTransformation([3Xf[103X[10X,  n)>[110X  where  [10Xn[110X  is  the
        largest  moved  point  of  [3Xf[103X.  The  only  exception  is  the  identity
        transformation, which is displayed as: [10X<identity transformation>[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("TransformationDisplayLimit", 12);[127X[104X
    [4X[25Xgap>[125X [27Xf:=Transformation([ 3, 8, 12, 1, 11, 9, 9, 4, 10, 5, 10, 6 ]);[127X[104X
    [4X[28X<transformation on 12 pts with rank 10>[128X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("TransformationDisplayLimit", 100);[127X[104X
    [4X[25Xgap>[125X [27Xf;[127X[104X
    [4X[28XTransformation( [ 3, 8, 12, 1, 11, 9, 9, 4, 10, 5, 10, 6 ] )[128X[104X
    [4X[25Xgap>[125X [27XSetUserPreference("NotationForTransformations", "fr");[127X[104X
    [4X[25Xgap>[125X [27Xf;[127X[104X
    [4X[28X<transformation: 3,8,12,1,11,9,9,4,10,5,10,6>[128X[104X
  [4X[32X[104X
  
  
  [1X53.7 [33X[0;0YSemigroups of transformations[133X[101X
  
  [33X[0;0YAs mentioned at the start of the chapter, every semigroup is isomorphic to a
  semigroup  of transformations, and in this section we describe the functions
  in  [5XGAP[105X  specific  to  transformation semigroups. For more information about
  semigroups in general see Chapter [14X51[114X.[133X
  
  [33X[0;0YThe  [5XSemigroups[105X  package  contains many additional functions and methods for
  computing  with  semigroups  of  transformations.  In particular, [5XSemigroups[105X
  contains more efficient methods than those available in the [5XGAP[105X library (and
  in  many  cases  more  efficient  than  any  other  software)  for  creating
  semigroups  of  transformations,  calculating  their  Green"s classes, size,
  elements,  group  of  units,  minimal  ideal, small generating sets, testing
  membership,  finding the inverses of a regular element, factorizing elements
  over  the  generators,  and more. Since a transformation semigroup is also a
  transformation   collection,  there  are  special  methods  for  [2XMovedPoints[102X
  ([14X53.5-5[114X),     [2XNrMovedPoints[102X     ([14X53.5-6[114X),     [2XLargestMovedPoint[102X    ([14X53.5-8[114X),
  [2XSmallestMovedPoint[102X   ([14X53.5-7[114X),   [2XLargestImageOfMovedPoint[102X   ([14X53.5-10[114X),   and
  [2XSmallestImageOfMovedPoint[102X   ([14X53.5-9[114X),   when  applied  to  a  transformation
  semigroup.[133X
  
  [1X53.7-1 IsTransformationSemigroup[101X
  
  [29X[2XIsTransformationSemigroup[102X( [3Xobj[103X ) [32X Synonym
  [29X[2XIsTransformationMonoid[102X( [3Xobj[103X ) [32X Synonym
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
  
  [33X[0;0YA   [13Xtransformation   semigroup[113X   is   simply   a   semigroup  consisting  of
  transformations.  An  object  [3Xobj[103X is a transformation semigroup in [5XGAP[105X if it
  satisfies [2XIsSemigroup[102X ([14X51.1-1[114X) and [2XIsTransformationCollection[102X ([14X53.1-2[114X).[133X
  
  [33X[0;0YA [13Xtransformation monoid[113X is a monoid consisting of transformations. An object
  [3Xobj[103X  is a transformation monoid in [5XGAP[105X if it satisfies [2XIsMonoid[102X ([14X51.2-1[114X) and
  [2XIsTransformationCollection[102X ([14X53.1-2[114X).[133X
  
  [33X[0;0YNote  that  it  is  possible  for  a  transformation  semigroup  to  have  a
  multiplicative neutral element (i.e. an identity element) but not to satisfy
  [10XIsTransformationMonoid[110X. For example,[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xf := Transformation( [ 2, 6, 7, 2, 6, 9, 9, 1, 1, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(f, One(f));[127X[104X
    [4X[28X<commutative transformation monoid of degree 10 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XIsMonoid(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsTransformationMonoid(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := Semigroup( [127X[104X
    [4X[25X>[125X [27XTransformation( [ 3, 8, 1, 4, 5, 6, 7, 1, 10, 10 ] ), [127X[104X
    [4X[25X>[125X [27XTransformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 10, 10 ] ) );[127X[104X
    [4X[28X<transformation semigroup of degree 10 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XOne(S);[127X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XMultiplicativeNeutralElement(S);[127X[104X
    [4X[28XTransformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 10, 10 ] )[128X[104X
    [4X[25Xgap>[125X [27XIsMonoid(S);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIn  this example [10XS[110X cannot be converted into a monoid using [2XAsMonoid[102X ([14X51.2-5[114X)
  since  the [2XOne[102X ([14X31.10-2[114X) of any element in [10XS[110X differs from the multiplicative
  neutral element.[133X
  
  [33X[0;0YFor more details see [2XIsMagmaWithOne[102X ([14X35.1-2[114X).[133X
  
  [1X53.7-2 DegreeOfTransformationSemigroup[101X
  
  [29X[2XDegreeOfTransformationSemigroup[102X( [3XS[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA non-negative integer.[133X
  
  [33X[0;0YThe  [13Xdegree[113X  of  a  transformation  semigroup  [3XS[103X  is just the maximum of the
  degrees of the elements of [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := Semigroup([127X[104X
    [4X[25X>[125X [27XTransformation( [ 3, 8, 1, 4, 5, 6, 7, 1, 10, 10, 11 ] ),[127X[104X
    [4X[25X>[125X [27XTransformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 1, 11 ] ) );[127X[104X
    [4X[28X<transformation semigroup of degree 10 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XDegreeOfTransformationSemigroup(S);[127X[104X
    [4X[28X10[128X[104X
  [4X[32X[104X
  
  [1X53.7-3 FullTransformationSemigroup[101X
  
  [29X[2XFullTransformationSemigroup[102X( [3Xn[103X ) [32X function
  [29X[2XFullTransformationMonoid[102X( [3Xn[103X ) [32X function
  [6XReturns:[106X  [33X[0;10YThe full transformation semigroup of degree [3Xn[103X.[133X
  
  [33X[0;0YIf  [3Xn[103X  is  a  positive integer, then [10XFullTransformationSemigroup[110X returns the
  monoid  consisting  of all transformations with degree at most [3Xn[103X, called the
  [13Xfull transformation semigroup[113X.[133X
  
  [33X[0;0YThe  full  transformation  semigroup  is  regular,  has [10X[3Xn[103X[10X^[3Xn[103X[10X[110X elements, and is
  generated  by any set containing transformations that generate the symmetric
  group on [3Xn[103X points and any transformation of rank [10X[3Xn[103X[10X-1[110X.[133X
  
  [33X[0;0Y[10XFulTransformationMonoid[110X is a synonym for [10XFullTransformationSemigroup[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XFullTransformationSemigroup(1234); [127X[104X
    [4X[28X<full transformation monoid of degree 1234>[128X[104X
  [4X[32X[104X
  
  [1X53.7-4 IsFullTransformationSemigroup[101X
  
  [29X[2XIsFullTransformationSemigroup[102X( [3XS[103X ) [32X property
  [29X[2XIsFullTransformationMonoid[102X( [3XS[103X ) [32X property
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
  
  [33X[0;0YIf  the transformation semigroup [3XS[103X of degree [10Xn[110X contains every transformation
  of  degree  at  most  [10Xn[110X,  then [10XIsFullTransformationSemigroup[110X return [9Xtrue[109X and
  otherwise it returns [9Xfalse[109X.[133X
  
  [33X[0;0Y[10XIsFullTransformationMonoid[110X is a synonym of [10XIsFullTransformationSemigroup[110X. It
  is  common  in  the  literature  for  the  full  transformation monoid to be
  referred to as the full transformation semigroup.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(AsTransformation((1,3,4,2), 5), [127X[104X
    [4X[25X>[125X [27X                  AsTransformation((1,3,5), 5),[127X[104X
    [4X[25X>[125X [27X                  Transformation( [ 1, 1, 2, 3, 4 ] ));[127X[104X
    [4X[28X<transformation semigroup of degree 5 with 3 generators>[128X[104X
    [4X[25Xgap>[125X [27XIsFullTransformationSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS;[127X[104X
    [4X[28X<full transformation monoid of degree 5>[128X[104X
    [4X[25Xgap>[125X [27XIsFullTransformationMonoid(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := FullTransformationSemigroup(5);; [127X[104X
    [4X[25Xgap>[125X [27XIsFullTransformationSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X53.7-5 IsomorphismTransformationSemigroup[101X
  
  [29X[2XIsomorphismTransformationSemigroup[102X( [3XS[103X ) [32X attribute
  [29X[2XIsomorphismTransformationMonoid[102X( [3XS[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YAn isomorphism to a transformation semigroup or monoid.[133X
  
  [33X[0;0YReturns  an  isomorphism  from  the  finite  semigroup [3XS[103X to a transformation
  semigroup.   For   most   types  of  objects  in  [5XGAP[105X  the  degree  of  this
  transformation semigroup will be equal to the size of [3XS[103X plus [10X1[110X.[133X
  
  [33X[0;0YLet  [10X[3XS[103X[10X^1[110X denote the monoid obtained from [3XS[103X by adjoining an identity element.
  Then [3XS[103X acts faithfully on [10X[3XS[103X[10X^1[110X by right multiplication, i.e. every element of
  [3XS[103X  describes  a  transformation on [10X1,..,|S|+1[110X. The isomorphism from [3XS[103X to the
  transformation  semigroup  described in this way is called the [13Xright regular
  representation[113X  of [3XS[103X. In most cases, [10XIsomorphismTransformationSemigroup[110X will
  return the right regular representation of [3XS[103X.[133X
  
  [33X[0;0YAs exceptions, if [3XS[103X is a permutation group or a partial perm semigroup, then
  the  elements  of  [3XS[103X  act naturally and faithfully by transformations on the
  values from [10X1[110X to the largest moved point of [3XS[103X.[133X
  
  [33X[0;0YIf  [3XS[103X is a finitely presented semigroup, then the Todd-Coxeter approach will
  be attempted.[133X
  
  [33X[0;0Y[10XIsomorphismTransformationMonoid[110X                 differs                 from
  [10XIsomorphismTransformationSemigroup[110X   only   in   that   its   range   is   a
  transformation  monoid,  and not only a semigroup, when the semigroup [3XS[103X is a
  monoid.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xgens := [ [ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3) ^ 0 ] ], [127X[104X
    [4X[25X>[125X [27X [ [ Z(3), Z(3)^0 ], [ Z(3), 0*Z(3) ] ], [127X[104X
    [4X[25X>[125X [27X [ [ Z(3)^0, 0*Z(3) ], [ 0*Z(3), 0*Z(3) ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XS := Semigroup(gens);;[127X[104X
    [4X[25Xgap>[125X [27XSize(S);[127X[104X
    [4X[28X81[128X[104X
    [4X[25Xgap>[125X [27XIsomorphismTransformationSemigroup(S);;[127X[104X
    [4X[25Xgap>[125X [27XS := SymmetricInverseSemigroup(4);[127X[104X
    [4X[28X<symmetric inverse semigroup on 4 pts>[128X[104X
    [4X[25Xgap>[125X [27XIsomorphismTransformationMonoid(S);[127X[104X
    [4X[28XMappingByFunction( <symmetric inverse semigroup on 4 pts>, [128X[104X
    [4X[28X<transformation monoid on 5 pts with 4 generators>[128X[104X
    [4X[28X , function( x ) ... end, <Operation "AsPartialPerm"> )[128X[104X
    [4X[25Xgap>[125X [27XG := Group((1,2,3));[127X[104X
    [4X[28XGroup([ (1,2,3) ])[128X[104X
    [4X[25Xgap>[125X [27XIsomorphismTransformationMonoid(G);[127X[104X
    [4X[28XMappingByFunction( Group([ (1,2,3) ]), <commutative transformation [128X[104X
    [4X[28X monoid on 3 pts with 1 generator>[128X[104X
    [4X[28X , function( x ) ... end, function( x ) ... end )[128X[104X
  [4X[32X[104X
  
  [1X53.7-6 AntiIsomorphismTransformationSemigroup[101X
  
  [29X[2XAntiIsomorphismTransformationSemigroup[102X( [3XS[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YAn anti-isomorphism.[133X
  
  [33X[0;0YIf  [3XS[103X is a semigroup, then [10XAntiIsomorphismTransformationSemigroup[110X returns an
  anti-isomorphism  from  [3XS[103X  to  a  transformation  semigroup. At present, the
  degree  of  the resulting transformation semigroup equals the size of [3XS[103X plus
  [22X1[122X, and, consequently, this function is of limited use.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := Semigroup( Transformation( [ 5, 5, 1, 1, 3 ] ), [127X[104X
    [4X[25X>[125X [27XTransformation( [ 2, 4, 1, 5, 5 ] ) );[127X[104X
    [4X[28X<transformation semigroup of degree 5 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize(S);[127X[104X
    [4X[28X172[128X[104X
    [4X[25Xgap>[125X [27XAntiIsomorphismTransformationSemigroup(S);[127X[104X
    [4X[28XMappingByFunction( <transformation semigroup of size 172, degree 5 [128X[104X
    [4X[28X with 2 generators>, <transformation semigroup of degree 173 with 2 [128X[104X
    [4X[28X generators>, function( x ) ... end, function( x ) ... end )[128X[104X
  [4X[32X[104X
  
