
| Current Path : /usr/share/gap/doc/ref/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //usr/share/gap/doc/ref/chap53.txt |
[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 that of 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
pairs [10X(i, j)[110X of positive integers 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 [13Xflat kernel[113X of [10Xf[110X. For any given transformation [10Xf[110X and
value [10Xn[110X, there is a unique transformation [10Xg[110X 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 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 for all values of [10Xi[110X less than a value which is at least the degree of
[10Xf[110X and which is determined at the time of the creation of [10Xf[110X. 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
[33X[1;0Y[29X[2XIsTransformation[102X( [3Xobj[103X ) [32X Category[133X
[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
[33X[1;0Y[29X[2XIsTransformationCollection[102X( [3Xobj[103X ) [32X Category[133X
[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
[33X[1;0Y[29X[2XTransformationFamily[102X[32X family[133X
[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
[33X[1;0Y[29X[2XTransformation[102X( [3Xlist[103X ) [32X operation[133X
[33X[1;0Y[29X[2XTransformation[102X( [3Xlist[103X, [3Xfunc[103X ) [32X operation[133X
[33X[1;0Y[29X[2XTransformationList[102X( [3Xlist[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA transformation.[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. An error will occur in [10XTransformationList[110X 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;0Y[10XTransformationList[110X 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
[33X[1;0Y[29X[2XTransformation[102X( [3Xsrc[103X, [3Xdst[103X ) [32X operation[133X
[33X[1;0Y[29X[2XTransformationListList[102X( [3Xsrc[103X, [3Xdst[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA transformation.[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;0Y[10XTransformationListList[110X 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
[33X[1;0Y[29X[2XTransformationByImageAndKernel[102X( [3Xim[103X, [3Xker[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA transformation or [9Xfail[109X.[133X
[33X[0;0YThis operation returns the transformation [10Xf[110X where [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
[33X[1;0Y[29X[2XIdempotent[102X( [3Xim[103X, [3Xker[103X ) [32X operation[133X
[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. More
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
[33X[1;0Y[29X[2XTransformationOp[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation[133X
[33X[1;0Y[29X[2XTransformationOpNC[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation[133X
[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 ], [127X[104X
[4X[25X>[125X [27X [ 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
[33X[1;0Y[29X[2XTransformationNumber[102X( [3Xm[103X, [3Xn[103X ) [32X operation[133X
[33X[1;0Y[29X[2XNumberTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation[133X
[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
[33X[1;0Y[29X[2XRandomTransformation[102X( [3Xn[103X ) [32X operation[133X
[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
[33X[1;0Y[29X[2XIdentityTransformation[102X[32X global variable[133X
[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 [27XIdentityTransformation;[127X[104X
[4X[28XIdentityTransformation[128X[104X
[4X[32X[104X
[1X53.2-9 ConstantTransformation[101X
[33X[1;0Y[29X[2XConstantTransformation[102X( [3Xm[103X, [3Xn[103X ) [32X operation[133X
[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-6[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
[33X[1;0Y[29X[2XAsTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute[133X
[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 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, [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
[33X[1;0Y[29X[2XRestrictedTransformation[102X( [3Xf[103X, [3Xlist[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10YA transformation.[133X
[33X[0;0Y[10XRestrictedTransformation[110X returns the new transformation [10Xg[110X such that [10X i ^ 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
[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
[33X[1;0Y[29X[2XPermutationOfImage[102X( [3Xf[103X ) [32X function[133X
[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[8X[10X ^ [3Xf[103X[8X[10X[110X[8X[108X
[33X[0;6Yreturns the image of the positive integer [3Xi[103X under the transformation
[3Xf[103X.[133X
[8X[10X[3Xf[103X[8X[10X ^ [3Xg[103X[8X[10X[110X[8X[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 product with [3Xf[103X, and then the product with [3Xg[103X.[133X
[8X[10X[3Xf[103X[8X[10X * [3Xg[103X[8X[10X[110X[8X[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[8X[10X / [3Xg[103X[8X[10X[110X[8X[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 product
with [3Xf[103X.[133X
[8X[10XLQUO( [3Xg[103X[8X[10X, [3Xf[103X[8X[10X )[110X[8X[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 product
with [3Xf[103X.[133X
[8X[10X[3Xf[103X[8X[10X < [3Xg[103X[8X[10X[110X[8X[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[8X[10X = [3Xg[103X[8X[10X[110X[8X[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
[33X[1;0Y[29X[2XPermLeftQuoTransformation[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
[33X[1;0Y[29X[2XPermLeftQuoTransformationNC[102X( [3Xf[103X, [3Xg[103X ) [32X function[133X
[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
[33X[1;0Y[29X[2XIsInjectiveListTrans[102X( [3Xlist[103X, [3Xobj[103X ) [32X function[133X
[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
[33X[1;0Y[29X[2XComponentTransformationInt[102X( [3Xf[103X, [3Xn[103X ) [32X operation[133X
[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
[33X[1;0Y[29X[2XPreImagesOfTransformation[102X( [3Xf[103X, [3Xn[103X ) [32X operation[133X
[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
[33X[1;0Y[29X[2XDegreeOfTransformation[102X( [3Xf[103X ) [32X function[133X
[33X[1;0Y[29X[2XDegreeOfTransformationCollection[102X( [3Xcoll[103X ) [32X attribute[133X
[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.[133X
[33X[0;0YThe degree of 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([127X[104X
[4X[25X>[125X [27X[ Transformation( [ 1, 3, 4, 1 ] ), [127X[104X
[4X[25X>[125X [27X Transformation( [ 3, 1, 1, 3, 4 ] ), [127X[104X
[4X[25X>[125X [27X Transformation( [ 2, 4, 1, 2 ] ) ] );[127X[104X
[4X[28X5[128X[104X
[4X[32X[104X
[1X53.5-2 ImageListOfTransformation[101X
[33X[1;0Y[29X[2XImageListOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation[133X
[33X[1;0Y[29X[2XListTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation[133X
[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
[33X[1;0Y[29X[2XImageSetOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XRankOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute[133X
[33X[1;0Y[29X[2XRankOfTransformation[102X( [3Xf[103X[, [3Xlist[103X] ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XMovedPoints[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XMovedPoints[102X( [3Xcoll[103X ) [32X attribute[133X
[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.[133X
[33X[0;0Y[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
[33X[1;0Y[29X[2XNrMovedPoints[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XNrMovedPoints[102X( [3Xcoll[103X ) [32X attribute[133X
[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.[133X
[33X[0;0Y[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
[33X[1;0Y[29X[2XSmallestMovedPoint[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XSmallestMovedPoint[102X( [3Xcoll[103X ) [32X method[133X
[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
[33X[1;0Y[29X[2XLargestMovedPoint[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XLargestMovedPoint[102X( [3Xcoll[103X ) [32X method[133X
[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
[33X[1;0Y[29X[2XSmallestImageOfMovedPoint[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XSmallestImageOfMovedPoint[102X( [3Xcoll[103X ) [32X method[133X
[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
[33X[1;0Y[29X[2XLargestImageOfMovedPoint[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XLargestImageOfMovedPoint[102X( [3Xcoll[103X ) [32X method[133X
[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
[33X[1;0Y[29X[2XFlatKernelOfTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XKernelOfTransformation[102X( [3Xf[103X[, [3Xn[103X, [3Xbool[103X] ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XInverseOfTransformation[102X( [3Xf[103X ) [32X function[133X
[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.[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
[33X[1;0Y[29X[2XInverse[102X( [3Xf[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XIndexPeriodOfTransformation[102X( [3Xf[103X ) [32X function[133X
[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
[33X[1;0Y[29X[2XSmallestIdempotentPower[102X( [3Xf[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XComponentsOfTransformation[102X( [3Xf[103X ) [32X attribute[133X
[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, 6, 4, 9 ], [ 2, 12, 3, 11, 5, 7, 10 ], [ 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, 8, 2, 4, 11, 5, 10 ], [ 3, 7 ], [ 6 ], [ 9, 12 ] ][128X[104X
[4X[32X[104X
[1X53.5-18 NrComponentsOfTransformation[101X
[33X[1;0Y[29X[2XNrComponentsOfTransformation[102X( [3Xf[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XComponentRepsOfTransformation[102X( [3Xf[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XCyclesOfTransformation[102X( [3Xf[103X[, [3Xlist[103X] ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XCycleTransformationInt[102X( [3Xf[103X, [3Xn[103X ) [32X operation[133X
[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
[33X[1;0Y[29X[2XLeftOne[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XRightOne[102X( [3Xf[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XTrimTransformation[102X( [3Xf[103X[, [3Xn[103X] ) [32X operation[133X
[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
belongs to [10XIsTrans4Rep[110X and stores its images 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 in the internal representation of [3Xf[103X.[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 ], [127X[104X
[4X[25X>[125X [27Xfunction( x )[127X[104X
[4X[25X>[125X [27X if x = 1 or x = 65537 then [127X[104X
[4X[25X>[125X [27X return x; [127X[104X
[4X[25X>[125X [27X else [127X[104X
[4X[25X>[125X [27X return x - 1; [127X[104X
[4X[25X>[125X [27X fi; [127X[104X
[4X[25X>[125X [27Xend );[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 the degree [10Xn[110X of [10Xf[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
[33X[1;0Y[29X[2XIsTransformationSemigroup[102X( [3Xobj[103X ) [32X Synonym[133X
[33X[1;0Y[29X[2XIsTransformationMonoid[102X( [3Xobj[103X ) [32X Synonym[133X
[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
[33X[1;0Y[29X[2XDegreeOfTransformationSemigroup[102X( [3XS[103X ) [32X attribute[133X
[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
[33X[1;0Y[29X[2XFullTransformationSemigroup[102X( [3Xn[103X ) [32X function[133X
[33X[1;0Y[29X[2XFullTransformationMonoid[102X( [3Xn[103X ) [32X function[133X
[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
[33X[1;0Y[29X[2XIsFullTransformationSemigroup[102X( [3XS[103X ) [32X property[133X
[33X[1;0Y[29X[2XIsFullTransformationMonoid[102X( [3XS[103X ) [32X property[133X
[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 returns [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
[33X[1;0Y[29X[2XIsomorphismTransformationSemigroup[102X( [3XS[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XIsomorphismTransformationMonoid[102X( [3XS[103X ) [32X attribute[133X
[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 [27XS := Semigroup( [ [ [ 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 [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 monoid of degree 4>[128X[104X
[4X[25Xgap>[125X [27XIsomorphismTransformationMonoid( S );[127X[104X
[4X[28XMappingByFunction( <symmetric inverse monoid of degree 4>,[128X[104X
[4X[28X<transformation monoid of degree 5 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 of degree 3 with 1 generator>[128X[104X
[4X[28X , function( x ) ... end, function( x ) ... end )[128X[104X
[4X[32X[104X
[1X53.7-6 AntiIsomorphismTransformationSemigroup[101X
[33X[1;0Y[29X[2XAntiIsomorphismTransformationSemigroup[102X( [3XS[103X ) [32X attribute[133X
[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 [27X Transformation( [ 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