
| 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/chap54.txt |
[1X54 [33X[0;0YPartial permutations[133X[101X
[33X[0;0YThis chapter describes the functions in [5XGAP[105X for partial permutations.[133X
[33X[0;0YA [13Xpartial permutation[113X in [5XGAP[105X is simply an injective function from any finite
set of positive integers to any other finite set of positive integers. The
largest point on which a partial permutation can be defined, and the largest
value that the image of such a point can have, are defined by certain
architecture dependent limits.[133X
[33X[0;0YEvery inverse semigroup is isomorphic to an inverse semigroup of partial
permutations and, as such, partial permutations are to inverse semigroup
theory what permutations are to group theory and transformations are to
semigroup theory. In this way, partial permutations are the elements of
inverse partial permutation semigroups.[133X
[33X[0;0YA partial permutations in [5XGAP[105X acts on a finite set of positive integers on
the right. The image of a point [10Xi[110X under a partial permutation [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). The preimage of a point [10Xi[110X under the partial permutation [10Xf[110X can be
computed using [10Xi/f[110X without constructing the inverse of [10Xf[110X. Partial
permutations in [5XGAP[105X are created using the operations described in Section
[14X54.2[114X. Partial permutations are, by default, displayed in component notation,
which is described in Section [14X54.6[114X.[133X
[33X[0;0YThe fundamental attributes of a partial permutation are:[133X
[8XDomain[108X
[33X[0;6YThe [13Xdomain[113X of a partial permutation is just the set of positive
integers where it is defined; see [2XDomainOfPartialPerm[102X ([14X54.3-4[114X). We
will denote the domain of a partial permutation [10Xf[110X by dom([10Xf[110X).[133X
[8XDegree[108X
[33X[0;6YThe [13Xdegree[113X of a partial permutation [10Xf[110X is just the largest positive
integer where [10Xf[110X is defined. In other words, the degree of [10Xf[110X is the
largest element in the domain of [10Xf[110X; see [2XDegreeOfPartialPerm[102X ([14X54.3-1[114X).[133X
[8XImage list[108X
[33X[0;6YThe [13Ximage list[113X of a partial permutation [10Xf[110X is the list [10X[i_1^f, i_2^f,
.. , i_n^f][110X where the domain of [10Xf[110X is [10X[i_1, i_2, .., i_n][110X see
[2XImageListOfPartialPerm[102X ([14X54.3-6[114X). For example, the partial perm sending
[10X1[110X to [10X5[110X and [10X2[110X to [10X4[110X has image list [10X[ 5, 4 ][110X.[133X
[8XImage set[108X
[33X[0;6YThe [13Ximage set[113X of a partial permutation [10Xf[110X is just the set of points in
the image list (i.e. the image list after it has been sorted into
increasing order); see [2XImageSetOfPartialPerm[102X ([14X54.3-7[114X). We will denote
the image set of a partial permutation [10Xf[110X by im([10Xf[110X).[133X
[8XCodegree[108X
[33X[0;6YThe [13Xcodegree[113X of a partial permutation [10Xf[110X is just the largest positive
integer of the form [10Xi^f[110X for any [10Xi[110X in the domain of [10Xf[110X. In other words,
the codegree of [10Xf[110X is the largest element in the image of [10Xf[110X; see
[2XCodegreeOfPartialPerm[102X ([14X54.3-2[114X).[133X
[8XRank[108X
[33X[0;6YThe [13Xrank[113X of a partial permutation [10Xf[110X is the size of its domain, or
equivalently the size of its image set or image list; see
[2XRankOfPartialPerm[102X ([14X54.3-3[114X).[133X
[33X[0;0YA [13Xfunctional digraph[113X is a directed graph where every vertex has out-degree
[10X1[110X. A partial permutation [3Xf[103X can be thought of as a functional digraph with
vertices [10X[1..DegreeOfPartialPerm(f)][110X and edges from [10Xi[110X to [10Xi^f[110X for every [10Xi[110X. A
[13Xcomponent[113X of a partial permutation 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 [10Xk[110X.[133X
[33X[0;0YIf [10XS[110X is a semigroup and [10Xs[110X is an element of [10XS[110X, then an element [10Xt[110X in [10XS[110X is a
[13Xsemigroup inverse[113X for [10Xs[110X if [10Xs*t*s=s[110X and [10Xt*s*t=t[110X; see, for example,
[2XInverseOfTransformation[102X ([14X53.5-13[114X). A semigroup in which every element has a
unique semigroup inverse is called an [13Xinverse semigroup[113X.[133X
[33X[0;0YEvery partial permutation belongs to a symmetric inverse monoid; see
[2XSymmetricInverseSemigroup[102X ([14X54.7-3[114X). Inverse semigroups of partial
permutations are hence inverse subsemigroups of the symmetric inverse
monoids.[133X
[33X[0;0YThe inverse [10Xf^-1[110X of a partial permutation [10Xf[110X is simply the partial
permutation that maps [10Xi^f[110X to [10Xi[110X for all [10Xi[110X in the image of [10Xf[110X. It follows that
the domain of [10Xf^-1[110X equals the image of [10Xf[110X and that the image of [10Xf^-1[110X equals
the domain of [10Xf[110X. The inverse [10Xf^-1[110X is the unique partial permutation with the
property that [10Xf*f^-1*f=f[110X and [10Xf^-1*f*f^-1=f^-1[110X. In other words, [10Xf^-1[110X is the
unique semigroup inverse of [10Xf[110X in the symmetric inverse monoid.[133X
[33X[0;0YIf [10Xf[110X and [10Xg[110X are partial permutations, then the domain and image of the
product are:[133X
[24X[33X[0;6Ydom(fg)=(im(f)\cap dom(g))f^-1 and im(fg)=(im(f)\cap dom(g))g[133X
[124X
[33X[0;0YA partial permutation is an idempotent if and only if it is the identity
function on its domain. The products [10Xf*f^-1[110X and [10Xf^-1*f[110X are just the identity
functions on the domain and image of [10Xf[110X, respectively. It follows that [10Xf*f^-1[110X
is a left identity for [10Xf[110X and [10Xf^-1*f[110X is a right identity. These products will
be referred to here as the [13Xleft one[113X and [13Xright one[113X of the partial permutation
[10Xf[110X; see [2XLeftOne[102X ([14X54.3-21[114X). The [13Xone[113X of a partial permutation is just the
identity on the union of its domain and its image, and the [13Xzero[113X of a partial
permutation is just the empty partial permutation; see [2XOne[102X ([14X54.3-22[114X) and
[2XMultiplicativeZero[102X ([14X54.3-23[114X).[133X
[33X[0;0YIf [10XS[110X is an arbitrary inverse semigroup, the [13Xnatural partial order[113X on [10XS[110X is
defined as follows: for elements [10Xx[110X and [10Xy[110X of [10XS[110X we say [10Xx[110X[22X≤[122X[10Xy[110X if there exists an
idempotent element [10Xe[110X in [10XS[110X such that [10Xx=ey[110X. In the context of the symmetric
inverse monoid, a partial permutation [10Xf[110X is less than or equal to a partial
permutation [10Xg[110X in the natural partial order if and only if [10Xf[110X is a restriction
of [10Xg[110X. The natural partial order is a meet semilattice, in other words, every
pair of elements has a greatest lower bound; see [2XMeetOfPartialPerms[102X
([14X54.2-5[114X).[133X
[33X[0;0YNote that unlike permutations, partial permutations do not fix unspecified
points but are simply undefined on such points; see Chapter [14X42[114X. Similar to
permutations, and unlike transformations, it is possible to multiply any two
partial permutations in [5XGAP[105X.[133X
[33X[0;0YInternally, [5XGAP[105X stores a partial permutation [10Xf[110X as a list consisting of the
codegree of [10Xf[110X and the images [10Xi^f[110X of the points [10Xi[110X that are less than or equal
to the degree of [10Xf[110X; the value [10X0[110X is stored where [10Xi^f[110X is undefined. The domain
and image set of [10Xf[110X are also stored after either of these values is computed.
When the codegree of a partial permutation [10Xf[110X is less than 65536, the
codegree and images [10Xi^f[110X are stored as 16-bit integers, the domain and image
set are subobjects of [10Xf[110X which are immutable plain lists of [5XGAP[105X integers.
When the codegree of [10Xf[110X is greater than or equal to 65536, the codegree and
images are stored as 32-bit integers; the domain and image set are stored in
the same way as before. A partial permutation belongs to [10XIsPPerm2Rep[110X if it
is stored using 16-bit integers and to [10XIsPPerm4Rep[110X otherwise.[133X
[33X[0;0YIn the names of the [5XGAP[105X functions that deal with partial permutations, the
word [21XPermutation[121X is usually abbreviated to [21XPerm[121X, to save typing. For
example, the category test function for partial permutations is
[2XIsPartialPerm[102X ([14X54.1-1[114X).[133X
[1X54.1 [33X[0;0YThe family and categories of partial permutations[133X[101X
[1X54.1-1 IsPartialPerm[101X
[33X[1;0Y[29X[2XIsPartialPerm[102X( [3Xobj[103X ) [32X Category[133X
[6XReturns:[106X [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
[33X[0;0YEvery partial permutation in [5XGAP[105X belongs to the category [10XIsPartialPerm[110X.
Basic operations for partial permutations are [2XDomainOfPartialPerm[102X ([14X54.3-4[114X),
[2XImageListOfPartialPerm[102X ([14X54.3-6[114X), [2XImageSetOfPartialPerm[102X ([14X54.3-7[114X),
[2XRankOfPartialPerm[102X ([14X54.3-3[114X), [2XDegreeOfPartialPerm[102X ([14X54.3-1[114X), multiplication of
two partial permutations is via [9X*[109X, and exponentiation with the first
argument a positive integer [10Xi[110X and second argument a partial permutation [10Xf[110X
where the result is the image [10Xi^f[110X of the point [10Xi[110X under [10Xf[110X. The inverse of a
partial permutation [10Xf[110X can be obtains using [10Xf^-1[110X.[133X
[1X54.1-2 IsPartialPermCollection[101X
[33X[1;0Y[29X[2XIsPartialPermCollection[102X( [3Xobj[103X ) [32X Category[133X
[33X[0;0YEvery collection of partial permutations belongs to the category
[10XIsPartialPermCollection[110X. For example, a semigroup of partial permutations
belongs in [10XIsPartialPermCollection[110X.[133X
[1X54.1-3 PartialPermFamily[101X
[33X[1;0Y[29X[2XPartialPermFamily[102X[32X family[133X
[33X[0;0YThe family of all partial permutations is [10XPartialPermFamily[110X[133X
[1X54.2 [33X[0;0YCreating partial permutations[133X[101X
[33X[0;0YThere are several ways of creating partial permutations in [5XGAP[105X, which are
described in this section.[133X
[1X54.2-1 PartialPerm[101X
[33X[1;0Y[29X[2XPartialPerm[102X( [3Xdom[103X, [3Ximg[103X ) [32X function[133X
[33X[1;0Y[29X[2XPartialPerm[102X( [3Xlist[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10YA partial permutation.[133X
[33X[0;0YPartial permutations can be created in two ways: by giving the domain and
the image, or the dense image list.[133X
[8XDomain and image[108X
[33X[0;6YThe partial permutation defined by a domain [3Xdom[103X and image [3Ximg[103X, where
[3Xdom[103X is a set of positive integers and [3Ximg[103X is a duplicate free list of
positive integers, maps [3Xdom[103X[10X[i][110X to [3Ximg[103X[10X[i][110X. For example, the partial
permutation mapping [10X1[110X and [10X5[110X to [10X20[110X and [10X2[110X can be created using:[133X
[4X [32X Example [32X[104X
[4X[28XPartialPerm([1,5],[20,2]); [128X[104X
[4X[32X[104X
[33X[0;6YIn this setting, [10XPartialPerm[110X is the analogue in the context of partial
permutations of [2XMappingPermListList[102X ([14X42.5-3[114X).[133X
[8XDense image list[108X
[33X[0;6YThe partial permutation defined by a dense image list [3Xlist[103X, maps the
positive integer [10Xi[110X to [3Xlist[103X[10X[i][110X if [3Xlist[103X[10X[i]<>0[110X and is undefined at [10Xi[110X if
[3Xlist[103X[10X[i]=0[110X. For example, the partial permutation mapping [10X1[110X and [10X5[110X to [10X20[110X
and [10X2[110X can be created using:[133X
[4X [32X Example [32X[104X
[4X[28XPartialPerm([20,0,0,0,2]);[128X[104X
[4X[32X[104X
[33X[0;6YIn this setting, [10XPartialPerm[110X is the analogue in the context of partial
permutations of [2XPermList[102X ([14X42.5-2[114X).[133X
[33X[0;0YRegardless of which of these two methods are used to create a partial
permutation in [5XGAP[105X the internal representation is the same.[133X
[33X[0;0YIf the largest point in the domain is larger than the rank of the partial
permutation, then using the dense image list to define the partial
permutation will require less typing; otherwise using the domain and the
image will require less typing. For example, the partial permutation mapping
[10X10000[110X to [10X1[110X can be defined using:[133X
[4X[32X Example [32X[104X
[4X[28XPartialPerm([10000], [1]);[128X[104X
[4X[32X[104X
[33X[0;0Ybut using the dense image list would require a list with [10X9999[110X entries equal
to [10X0[110X and the final entry equal to [10X1[110X. On the other hand, the identity on
[10X[1,2,3,4,6][110X can be defined using:[133X
[4X[32X Example [32X[104X
[4X[28XPartialPerm([1,2,3,4,0,6]);[128X[104X
[4X[32X[104X
[33X[0;0YPlease note that a partial permutation in [5XGAP[105X is never a permutation nor is
a permutation ever a partial permutation. For example, the permutation
[10X(1,4,2)[110X fixes [10X3[110X but the partial permutation [10XPartialPerm([4,1,0,2]);[110X is not
defined on [10X3[110X.[133X
[1X54.2-2 PartialPermOp[101X
[33X[1;0Y[29X[2XPartialPermOp[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation[133X
[33X[1;0Y[29X[2XPartialPermOpNC[102X( [3Xobj[103X, [3Xlist[103X[, [3Xfunc[103X] ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA partial permutation or [9Xfail[109X.[133X
[33X[0;0Y[2XPartialPermOp[102X returns the partial permutation 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 partial permutation
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 partial permutations of
[2XPermutation[102X ([14XReference: Permutation for a group, an action domain, etc.[114X) or
[2XTransformationOp[102X ([14X53.2-5[114X).[133X
[33X[0;0YIf [3Xobj[103X does not map the elements of [3Xlist[103X injectively, then [9Xfail[109X is returned.[133X
[33X[0;0Y[2XPartialPermOpNC[102X does not check that [3Xobj[103X maps elements of [3Xlist[103X injectively or
that a partial permutation is defined by the action of [3Xobj[103X on [3Xlist[103X via [3Xfunc[103X.
This function should be used only with caution, in situations where it is
guaranteed that the arguments have the required properties.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=Transformation( [ 9, 10, 4, 2, 10, 5, 9, 10, 9, 6 ] );;[127X[104X
[4X[25Xgap>[125X [27XPartialPermOp(f, [ 6 .. 8 ], OnPoints);[127X[104X
[4X[28X[1,4][2,5][3,6][128X[104X
[4X[32X[104X
[1X54.2-3 RestrictedPartialPerm[101X
[33X[1;0Y[29X[2XRestrictedPartialPerm[102X( [3Xf[103X, [3Xset[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA partial permutation.[133X
[33X[0;0Y[10XRestrictedPartialPerm[110X returns a new partial permutation that acts on the
points in the set of positive integers [3Xset[103X in the same way as the partial
permutation [3Xf[103X, and that is undefined on those points that are not in [3Xset[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 3, 4, 7, 8, 9 ], [ 9, 4, 1, 6, 2, 8 ] );;[127X[104X
[4X[25Xgap>[125X [27XRestrictedPartialPerm(f, [ 2, 3, 6, 10 ] );[127X[104X
[4X[28X[3,4][128X[104X
[4X[32X[104X
[1X54.2-4 JoinOfPartialPerms[101X
[33X[1;0Y[29X[2XJoinOfPartialPerms[102X( [3Xarg[103X ) [32X function[133X
[33X[1;0Y[29X[2XJoinOfIdempotentPartialPermsNC[102X( [3Xarg[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10YA partial permutation or [9Xfail[109X.[133X
[33X[0;0YThe join of partial permutations [3Xf[103X and [3Xg[103X is just the join, or supremum, of [3Xf[103X
and [3Xg[103X under the natural partial ordering of partial permutations.[133X
[33X[0;0Y[10XJoinOfPartialPerms[110X returns the union of the partial permutations in its
argument if this defines a partial permutation, and [9Xfail[109X if it is not. The
argument [3Xarg[103X can be a partial permutation collection or a number of partial
permutations.[133X
[33X[0;0YThe function [10XJoinOfIdempotentPartialPermsNC[110X returns the join of its argument
which is assumed to be a collection of idempotent partial permutations or a
number of idempotent partial permutations. It is not checked that the
arguments are idempotents. The performance of this function is higher than
[10XJoinOfPartialPerms[110X when it is known [13Xa priori[113X that the argument consists of
idempotents.[133X
[33X[0;0YThe union of [3Xf[103X and [3Xg[103X is a partial permutation if and only if [3Xf[103X and [3Xg[103X agree
on the intersection dom([3Xf[103X)[22X∩[122X dom([3Xg[103X) of their domains and the images of
dom([3Xf[103X)[22X∖[122X dom([3Xg[103X) and dom([3Xg[103X)[22X∖[122X dom([3Xf[103X) under [3Xf[103X and [3Xg[103X, respectively, are disjoint.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 6, 8, 10 ], [ 2, 6, 7, 9, 1, 5 ] );[127X[104X
[4X[28X[3,7][8,1,2,6,9][10,5][128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 11, 12, 14, 16, 18, 19 ], [127X[104X
[4X[25X>[125X [27X[ 17, 20, 11, 19, 14, 12 ] );[127X[104X
[4X[28X[16,19,12,20][18,14,11,17][128X[104X
[4X[25Xgap>[125X [27XJoinOfPartialPerms(f, g);[127X[104X
[4X[28X[3,7][8,1,2,6,9][10,5][16,19,12,20][18,14,11,17][128X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 4, 5, 6, 7 ], [ 5, 7, 3, 1, 4 ] );[127X[104X
[4X[28X[6,1,5,3](4,7)[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 100 ], [ 1 ] );[127X[104X
[4X[28X[100,1][128X[104X
[4X[25Xgap>[125X [27XJoinOfPartialPerms(f, g);[127X[104X
[4X[28Xfail[128X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 3, 4 ], [ 3, 2, 4 ] );[127X[104X
[4X[28X[1,3,2](4)[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 4 ], [ 2, 3, 4 ] );[127X[104X
[4X[28X[1,2,3](4)[128X[104X
[4X[25Xgap>[125X [27XJoinOfPartialPerms(f, g);[127X[104X
[4X[28Xfail[128X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1 ], [ 2 ] ); [127X[104X
[4X[28X[1,2][128X[104X
[4X[25Xgap>[125X [27XJoinOfPartialPerms(f, f^-1);[127X[104X
[4X[28X(1,2)[128X[104X
[4X[32X[104X
[1X54.2-5 MeetOfPartialPerms[101X
[33X[1;0Y[29X[2XMeetOfPartialPerms[102X( [3Xarg[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10YA partial permutation.[133X
[33X[0;0YThe meet of partial permutations [3Xf[103X and [3Xg[103X is just the meet, or infimum, of [3Xf[103X
and [3Xg[103X under the natural partial ordering of partial permutations. In other
words, the meet is the greatest partial permuation which is a restriction of
both [3Xf[103X and [3Xg[103X.[133X
[33X[0;0YNote that unlike the join of partial permutations, the meet always exists.[133X
[33X[0;0Y[2XMeetOfPartialPerms[102X returns the meet of the partial permutations in its
argument. The argument [3Xarg[103X can be a partial permutation collection or a
number of partial permutations.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 6, 100000 ], [ 2, 6, 7, 1, 5 ] );[127X[104X
[4X[28X[3,7][100000,5](1,2,6)[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 3, 4, 6 ], [ 2, 4, 6, 1, 5 ] );[127X[104X
[4X[28X[3,6,5](1,2,4)[128X[104X
[4X[25Xgap>[125X [27XMeetOfPartialPerms(f, g);[127X[104X
[4X[28X[1,2][128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 3, 5, 6, 7, 9, 10 ], [127X[104X
[4X[25X>[125X [27X[ 4, 10, 5, 6, 7, 1, 3, 2 ] );[127X[104X
[4X[28X[9,3,5,6,7,1,4](2,10)[128X[104X
[4X[25Xgap>[125X [27XMeetOfPartialPerms(f, g);[127X[104X
[4X[28X<empty partial perm>[128X[104X
[4X[32X[104X
[1X54.2-6 EmptyPartialPerm[101X
[33X[1;0Y[29X[2XEmptyPartialPerm[102X( ) [32X function[133X
[6XReturns:[106X [33X[0;10YThe empty partial permutation.[133X
[33X[0;0YThe empty partial permutation is returned by this function when it is called
with no arguments. This is just short hand for [10XPartialPerm([]);[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XEmptyPartialPerm();[127X[104X
[4X[28X<empty partial perm>[128X[104X
[4X[32X[104X
[1X54.2-7 [33X[0;0YRandomPartialPerm[133X[101X
[33X[1;0Y[29X[2XRandomPartialPerm[102X( [3Xn[103X ) [32X function[133X
[33X[1;0Y[29X[2XRandomPartialPerm[102X( [3Xset[103X ) [32X function[133X
[33X[1;0Y[29X[2XRandomPartialPerm[102X( [3Xdom[103X, [3Ximg[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10YA random partial permutation.[133X
[33X[0;0YIn its first form, [10XRandomPartialPerm[110X returns a randomly chosen partial
permutation where points in the domain and image are bounded above by the
positive integer [3Xn[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XRandomPartialPerm(10); [127X[104X
[4X[28X[2,9][4,1,6,5][7,3](8)[128X[104X
[4X[32X[104X
[33X[0;0YIn its second form, [10XRandomPartialPerm[110X returns a randomly chosen partial
permutation with points in the domain and image contained in the set of
positive integers [3Xset[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XRandomPartialPerm([1,2,3,1000]);[127X[104X
[4X[28X[2,3,1000](1)[128X[104X
[4X[32X[104X
[33X[0;0YIn its third form, [10XRandomPartialPerm[110X creates a randomly chosen partial
permutation with domain contained in the set of positive integers [3Xdom[103X and
image contained in the set of positive integers [3Ximg[103X. The arguments [3Xdom[103X and
[3Ximg[103X do not have to have equal length.[133X
[33X[0;0YNote that it is not guarenteed in either of these cases that partial
permutations are chosen with a uniform distribution.[133X
[1X54.3 [33X[0;0YAttributes for partial permutations[133X[101X
[33X[0;0YIn this section we describe the functions available in [5XGAP[105X for finding
various attributes of partial permutations.[133X
[1X54.3-1 DegreeOfPartialPerm[101X
[33X[1;0Y[29X[2XDegreeOfPartialPerm[102X( [3Xf[103X ) [32X function[133X
[33X[1;0Y[29X[2XDegreeOfPartialPermCollection[102X( [3Xcoll[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA non-negative integer.[133X
[33X[0;0YThe [13Xdegree[113X of a partial permutation [3Xf[103X is the largest positive integer where
it is defined, i.e. the maximum element in the domain of [3Xf[103X.[133X
[33X[0;0YThe degree a collection of partial permutations [3Xcoll[103X is the largest degree
of any partial permutation in [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 6, 8, 10 ], [ 2, 6, 7, 9, 1, 5 ] );[127X[104X
[4X[28X[3,7][8,1,2,6,9][10,5][128X[104X
[4X[25Xgap>[125X [27XDegreeOfPartialPerm(f);[127X[104X
[4X[28X10[128X[104X
[4X[32X[104X
[1X54.3-2 CodegreeOfPartialPerm[101X
[33X[1;0Y[29X[2XCodegreeOfPartialPerm[102X( [3Xf[103X ) [32X function[133X
[33X[1;0Y[29X[2XCodegreeOfPartialPermCollection[102X( [3Xcoll[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA non-negative integer.[133X
[33X[0;0YThe [13Xcodegree[113X of a partial permutation [3Xf[103X is the largest positive integer in
its image.[133X
[33X[0;0YThe codegree a collection of partial permutations [3Xcoll[103X is the largest
codegree of any partial permutation in [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 8, 10 ], [ 7, 1, 4, 3, 2, 6, 5 ] );[127X[104X
[4X[28X[8,6][10,5,2,1,7](3,4)[128X[104X
[4X[25Xgap>[125X [27XCodegreeOfPartialPerm(f);[127X[104X
[4X[28X7[128X[104X
[4X[32X[104X
[1X54.3-3 RankOfPartialPerm[101X
[33X[1;0Y[29X[2XRankOfPartialPerm[102X( [3Xf[103X ) [32X function[133X
[33X[1;0Y[29X[2XRankOfPartialPermCollection[102X( [3Xcoll[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA non-negative integer.[133X
[33X[0;0YThe [13Xrank[113X of a partial permutation [3Xf[103X is the size of its domain, or
equivalently the size of its image set or image list.[133X
[33X[0;0YThe rank of a partial permutation collection [3Xcoll[103X is the size of the union
of the domains of the elements of [3Xcoll[103X, or equivalently, the total number of
points on which the elements of [3Xcoll[103X act. Note that this is value may not
the same as the size of the union of the images of the elements in [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 4, 6, 8, 9 ], [ 7, 10, 1, 9, 4, 2 ] );[127X[104X
[4X[28X[6,9,2,10][8,4,1,7][128X[104X
[4X[25Xgap>[125X [27XRankOfPartialPerm(f);[127X[104X
[4X[28X6[128X[104X
[4X[32X[104X
[1X54.3-4 DomainOfPartialPerm[101X
[33X[1;0Y[29X[2XDomainOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XDomainOfPartialPermCollection[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA set of positive integers (maybe empty).[133X
[33X[0;0YThe [13Xdomain[113X of a partial permutation [3Xf[103X is the set of positive integers where
[3Xf[103X is defined.[133X
[33X[0;0YThe domain of a partial permutation collection [3Xcoll[103X is the union of the
domains of its elements.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 6, 8, 10 ], [ 2, 6, 7, 9, 1, 5 ] );[127X[104X
[4X[28X[3,7][8,1,2,6,9][10,5][128X[104X
[4X[25Xgap>[125X [27XDomainOfPartialPerm(f);[127X[104X
[4X[28X[ 1, 2, 3, 6, 8, 10 ][128X[104X
[4X[32X[104X
[1X54.3-5 ImageOfPartialPermCollection[101X
[33X[1;0Y[29X[2XImageOfPartialPermCollection[102X( [3Xcoll[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA set of positive integers (maybe empty).[133X
[33X[0;0YThe [13Ximage[113X of a partial permutation collection [3Xcoll[103X is the union of the
images of its elements.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := SymmetricInverseSemigroup(5); [127X[104X
[4X[28X<symmetric inverse monoid of degree 5>[128X[104X
[4X[25Xgap>[125X [27XImageOfPartialPermCollection(GeneratorsOfInverseSemigroup(S));[127X[104X
[4X[28X[ 1 .. 5 ][128X[104X
[4X[32X[104X
[1X54.3-6 ImageListOfPartialPerm[101X
[33X[1;0Y[29X[2XImageListOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YThe list of images of a partial permutation.[133X
[33X[0;0YThe [13Ximage list[113X of a partial permutation [3Xf[103X is the list of images of the
elements of the domain [3Xf[103X where
[10XImageListOfPartialPerm([3Xf[103X[10X)[i]=DomainOfPartialPerm([3Xf[103X[10X)[i]^[3Xf[103X[10X[110X for any [10Xi[110X in the
range from [10X1[110X to the rank of [3Xf[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 8, 10 ], [ 7, 1, 4, 3, 2, 6, 5 ] );[127X[104X
[4X[28X[8,6][10,5,2,1,7](3,4)[128X[104X
[4X[25Xgap>[125X [27XImageListOfPartialPerm(f);[127X[104X
[4X[28X[ 7, 1, 4, 3, 2, 6, 5 ][128X[104X
[4X[32X[104X
[1X54.3-7 ImageSetOfPartialPerm[101X
[33X[1;0Y[29X[2XImageSetOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YThe image set of a partial permutation.[133X
[33X[0;0YThe [13Ximage set[113X of a partial permutation [10Xf[110X is just the set of points in the
image list (i.e. the image list after it has been sorted into increasing
order).[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 5, 7, 10 ], [ 10, 2, 3, 5, 7, 6 ] );[127X[104X
[4X[28X[1,10,6](2)(3)(5)(7)[128X[104X
[4X[25Xgap>[125X [27XImageSetOfPartialPerm(f);[127X[104X
[4X[28X[ 2, 3, 5, 6, 7, 10 ][128X[104X
[4X[32X[104X
[1X54.3-8 FixedPointsOfPartialPerm[101X
[33X[1;0Y[29X[2XFixedPointsOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XFixedPointsOfPartialPerm[102X( [3Xcoll[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA set of positive integers.[133X
[33X[0;0Y[10XFixedPointsOfPartialPerm[110X returns the set of points [10Xi[110X in the domain of the
partial permutation [3Xf[103X such that [10Xi^[3Xf[103X[10X=i[110X.[133X
[33X[0;0YWhen the argument is a collection of partial permutations [3Xcoll[103X,
[10XFixedPointsOfPartialPerm[110X returns the set of points fixed by every element of
the collection of partial permutations [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 6, 7 ], [ 1, 3, 4, 7, 5 ] );[127X[104X
[4X[28X[2,3,4][6,7,5](1)[128X[104X
[4X[25Xgap>[125X [27XFixedPointsOfPartialPerm(f);[127X[104X
[4X[28X[ 1 ][128X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm([1 .. 10]);;[127X[104X
[4X[25Xgap>[125X [27XFixedPointsOfPartialPerm(f);[127X[104X
[4X[28X[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ][128X[104X
[4X[32X[104X
[1X54.3-9 MovedPoints[101X
[33X[1;0Y[29X[2XMovedPoints[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XMovedPoints[102X( [3Xcoll[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA set of positive integers.[133X
[33X[0;0Y[10XMovedPoints[110X returns the set of points [10Xi[110X in the domain of the partial
permutation [3Xf[103X such that [10Xi^[3Xf[103X[10X<>i[110X.[133X
[33X[0;0YWhen the argument is a collection of partial permutations [3Xcoll[103X, [10XMovedPoints[110X
returns the set of points moved by some element of the collection of partial
permutations [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 4 ], [ 5, 7, 1, 6 ] );[127X[104X
[4X[28X[2,7][3,1,5][4,6][128X[104X
[4X[25Xgap>[125X [27XMovedPoints(f);[127X[104X
[4X[28X[ 1, 2, 3, 4 ][128X[104X
[4X[25Xgap>[125X [27XFixedPointsOfPartialPerm(f);[127X[104X
[4X[28X[ ][128X[104X
[4X[25Xgap>[125X [27XFixedPointsOfPartialPerm(PartialPerm([1 .. 4]));[127X[104X
[4X[28X[ 1, 2, 3, 4 ][128X[104X
[4X[32X[104X
[1X54.3-10 NrFixedPoints[101X
[33X[1;0Y[29X[2XNrFixedPoints[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XNrFixedPoints[102X( [3Xcoll[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA positive integer.[133X
[33X[0;0Y[10XNrFixedPoints[110X returns the number of points [10Xi[110X in the domain of the partial
permutation [3Xf[103X such that [10Xi^[3Xf[103X[10X=i[110X.[133X
[33X[0;0YWhen the argument is a collection of partial permutations [3Xcoll[103X,
[10XNrFixedPoints[110X returns the number of points fixed by every element of the
collection of partial permutations [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 4, 5 ], [ 3, 2, 4, 6, 1 ] );[127X[104X
[4X[28X[5,1,3,4,6](2)[128X[104X
[4X[25Xgap>[125X [27XNrFixedPoints(f);[127X[104X
[4X[28X1[128X[104X
[4X[25Xgap>[125X [27XNrFixedPoints(PartialPerm([1 .. 10]));[127X[104X
[4X[28X10[128X[104X
[4X[32X[104X
[1X54.3-11 NrMovedPoints[101X
[33X[1;0Y[29X[2XNrMovedPoints[102X( [3Xf[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XNrMovedPoints[102X( [3Xcoll[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA positive integer.[133X
[33X[0;0Y[10XNrMovedPoints[110X returns the number of points [10Xi[110X in the domain of the partial
permutation [3Xf[103X such that [10Xi^[3Xf[103X[10X<>i[110X.[133X
[33X[0;0YWhen the argument is a collection of partial permutations [3Xcoll[103X,
[10XNrMovedPoints[110X returns the number of points moved by some element of the
collection of partial permutations [3Xcoll[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 4, 5, 7, 8 ], [ 4, 5, 6, 7, 1, 3, 2 ] );[127X[104X
[4X[28X[8,2,5,1,4,7,3,6][128X[104X
[4X[25Xgap>[125X [27XNrMovedPoints(f);[127X[104X
[4X[28X7[128X[104X
[4X[25Xgap>[125X [27XNrMovedPoints(PartialPerm([1 .. 4]));[127X[104X
[4X[28X0[128X[104X
[4X[32X[104X
[1X54.3-12 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 an identity partial permutation, then [9Xinfinity[109X
is returned.[133X
[33X[0;0YIf the argument is a collection of partial permutations [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 partial permutations,
then [10XSmallestMovedPoint[110X returns [9Xinfinity[109X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 3 ], [ 4, 3 ] );[127X[104X
[4X[28X[1,4](3)[128X[104X
[4X[25Xgap>[125X [27XSmallestMovedPoint(f);[127X[104X
[4X[28X1[128X[104X
[4X[25Xgap>[125X [27XSmallestMovedPoint(PartialPerm([1 .. 10]));[127X[104X
[4X[28Xinfinity[128X[104X
[4X[32X[104X
[1X54.3-13 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 or [9Xinfinity[109X.[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 partial permutation, then [10X0[110X is
returned.[133X
[33X[0;0YIf the argument is a collection of partial permutations [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 partial permutations,
then [10XLargestMovedPoint[110X returns [10X0[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 3, 4, 5 ], [ 5, 1, 6, 4 ] );[127X[104X
[4X[28X[3,1,5,4,6][128X[104X
[4X[25Xgap>[125X [27XLargestMovedPoint(f);[127X[104X
[4X[28X5[128X[104X
[4X[25Xgap>[125X [27XLargestMovedPoint(PartialPerm([1 .. 10]));[127X[104X
[4X[28X0[128X[104X
[4X[32X[104X
[1X54.3-14 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 partial permutation,
then [9Xinfinity[109X is returned.[133X
[33X[0;0YIf the argument is a collection of partial permutations [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
partial permutations, then [10XSmallestImageOfMovedPoint[110X returns [9Xinfinity[109X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := SymmetricInverseSemigroup(5);[127X[104X
[4X[28X<symmetric inverse monoid of degree 5>[128X[104X
[4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(S);[127X[104X
[4X[28X1[128X[104X
[4X[25Xgap>[125X [27XS := Semigroup(PartialPerm([10 .. 100], [10 .. 100]));;[127X[104X
[4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(S);[127X[104X
[4X[28Xinfinity[128X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 6 ] );[127X[104X
[4X[28X[4,6](1)(2)(3)[128X[104X
[4X[25Xgap>[125X [27XSmallestImageOfMovedPoint(f);[127X[104X
[4X[28X6[128X[104X
[4X[32X[104X
[1X54.3-15 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 an identity partial permutation, then [10X0[110X
is returned.[133X
[33X[0;0YIf the argument is a collection of partial permutations [3Xcoll[103X, then the
largest integer which is the image of a point moved by at least one element
of [3Xcoll[103X is returned, if such a point exists. If [3Xcoll[103X only contains identity
partial permutations, then [10XLargestImageOfMovedPoint[110X returns [10X0[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := SymmetricInverseSemigroup(5);[127X[104X
[4X[28X<symmetric inverse monoid of degree 5>[128X[104X
[4X[25Xgap>[125X [27XLargestImageOfMovedPoint(S);[127X[104X
[4X[28X5[128X[104X
[4X[25Xgap>[125X [27XS := Semigroup(PartialPerm([10 .. 100], [10 .. 100]));;[127X[104X
[4X[25Xgap>[125X [27XLargestImageOfMovedPoint(S);[127X[104X
[4X[28X0[128X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 6 ] );;[127X[104X
[4X[25Xgap>[125X [27XLargestImageOfMovedPoint(f);[127X[104X
[4X[28X6[128X[104X
[4X[32X[104X
[1X54.3-16 IndexPeriodOfPartialPerm[101X
[33X[1;0Y[29X[2XIndexPeriodOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA pair of positive integers.[133X
[33X[0;0YReturns the least positive integers [10Xm, r[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 partial permutation [3Xf[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 5, 6, 7, 8, 11, 12, 16, 19 ], [127X[104X
[4X[25X>[125X [27X[ 9, 18, 20, 11, 5, 16, 8, 19, 14, 13, 1 ] );[127X[104X
[4X[28X[2,18][3,20][6,5,11,19,1,9][7,16,13][12,14](8)[128X[104X
[4X[25Xgap>[125X [27XIndexPeriodOfPartialPerm(f);[127X[104X
[4X[28X[ 6, 1 ][128X[104X
[4X[25Xgap>[125X [27Xf^6=f^7;[127X[104X
[4X[28Xtrue[128X[104X
[4X[32X[104X
[1X54.3-17 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 partial
permutation [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 [2XIndexPeriodOfPartialPerm[102X ([14X54.3-16[114X).[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 18, 19, 20 ], [127X[104X
[4X[25X>[125X [27X[ 5, 1, 7, 3, 10, 2, 12, 14, 11, 16, 6, 9, 15 ] );[127X[104X
[4X[28X[4,3,7,2,1,5,10,14][8,12][13,16][18,6][19,9][20,15](11)[128X[104X
[4X[25Xgap>[125X [27XSmallestIdempotentPower(f);[127X[104X
[4X[28X8[128X[104X
[4X[25Xgap>[125X [27Xf^8;[127X[104X
[4X[28X<identity partial perm on [ 11 ]>[128X[104X
[4X[32X[104X
[1X54.3-18 ComponentsOfPartialPerm[101X
[33X[1;0Y[29X[2XComponentsOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA list of lists of positive integer.[133X
[33X[0;0Y[10XComponentsOfPartialPerm[110X returns a list of the components of the partial
permutation [3Xf[103X. Each component is a subset of the domain of [3Xf[103X, and the union
of the components equals the domain.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 19 ], [127X[104X
[4X[25X>[125X [27X[ 20, 4, 6, 19, 9, 14, 3, 12, 17, 5, 15, 13 ] );[127X[104X
[4X[28X[1,20][2,4,19,13,15][7,14][8,3,6][10,12,5,9][11,17][128X[104X
[4X[25Xgap>[125X [27XComponentsOfPartialPerm(f);[127X[104X
[4X[28X[ [ 1, 20 ], [ 2, 4, 19, 13, 15 ], [ 7, 14 ], [ 8, 3, 6 ], [128X[104X
[4X[28X [ 10, 12, 5, 9 ], [ 11, 17 ] ][128X[104X
[4X[32X[104X
[1X54.3-19 NrComponentsOfPartialPerm[101X
[33X[1;0Y[29X[2XNrComponentsOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA positive integer.[133X
[33X[0;0Y[10XNrComponentsOfPartialPerm[110X returns the number of components of the partial
permutation [3Xf[103X on its domain.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 19 ], [127X[104X
[4X[25X>[125X [27X[ 20, 4, 6, 19, 9, 14, 3, 12, 17, 5, 15, 13 ] );[127X[104X
[4X[28X[1,20][2,4,19,13,15][7,14][8,3,6][10,12,5,9][11,17][128X[104X
[4X[25Xgap>[125X [27XNrComponentsOfPartialPerm(f);[127X[104X
[4X[28X6[128X[104X
[4X[32X[104X
[1X54.3-20 ComponentRepsOfPartialPerm[101X
[33X[1;0Y[29X[2XComponentRepsOfPartialPerm[102X( [3Xf[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA list of positive integers.[133X
[33X[0;0Y[10XComponentRepsOfPartialPerm[110X returns the representatives, in the following
sense, of the components of the partial permutation [3Xf[103X. Every component of [3Xf[103X
contains a unique element in the domain but not the image of [3Xf[103X; this element
is called the [13Xrepresentative[113X of the component. If [10Xi[110X is a representative of a
component of [3Xf[103X, then for every [10Xj[110X[22Xnot=[122X[10Xi[110X in the component of [10Xi[110X, there exists a
positive integer [10Xk[110X such that [10Xi ^ ([3Xf[103X[10X ^ k) = j[110X. Unlike transformations, there
is exactly one representative for every component of [3Xf[103X.
[10XComponentRepsOfPartialPerm[110X returns the least number of representatives.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 19 ], [127X[104X
[4X[25X>[125X [27X[ 20, 4, 6, 19, 9, 14, 3, 12, 17, 5, 15, 13 ] );[127X[104X
[4X[28X[1,20][2,4,19,13,15][7,14][8,3,6][10,12,5,9][11,17][128X[104X
[4X[25Xgap>[125X [27XComponentRepsOfPartialPerm(f);[127X[104X
[4X[28X[ 1, 2, 7, 8, 10, 11 ][128X[104X
[4X[32X[104X
[1X54.3-21 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 partial permutation.[133X
[33X[0;0Y[10XLeftOne[110X returns the identity partial permutation [10Xe[110X such that the domain and
image of [10Xe[110X equal the domain of the partial permutation [3Xf[103X and such that
[10Xe*[3Xf[103X[10X=f[110X.[133X
[33X[0;0Y[10XRightOne[110X returns the identity partial permutation [10Xe[110X such that the domain and
image of [10Xe[110X equal the image of [3Xf[103X and such that [10X[3Xf[103X[10X*e=f[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 4, 5, 6, 7 ], [ 10, 1, 6, 5, 8, 7 ] ); [127X[104X
[4X[28X[2,1,10][4,6,8](5)(7)[128X[104X
[4X[25Xgap>[125X [27XRightOne(f);[127X[104X
[4X[28X<identity partial perm on [ 1, 5, 6, 7, 8, 10 ]>[128X[104X
[4X[25Xgap>[125X [27XLeftOne(f);[127X[104X
[4X[28X<identity partial perm on [ 1, 2, 4, 5, 6, 7 ]>[128X[104X
[4X[32X[104X
[1X54.3-22 One[101X
[33X[1;0Y[29X[2XOne[102X( [3Xf[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA partial permutation.[133X
[33X[0;0YAs described in [2XOneImmutable[102X ([14XReference: OneImmutable[114X), [10XOne[110X returns the
multiplicative neutral element of the partial permutation [3Xf[103X, which is the
identity partial permutation on the union of the domain and image of [3Xf[103X.
Equivalently, the one of [3Xf[103X is the join of the right one and left one of [3Xf[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm([ 1, 2, 3, 4, 5, 7, 10 ], [ 3, 7, 9, 6, 1, 10, 2 ]);;[127X[104X
[4X[25Xgap>[125X [27XOne(f);[127X[104X
[4X[28X<identity partial perm on [ 1, 2, 3, 4, 5, 6, 7, 9, 10 ]>[128X[104X
[4X[32X[104X
[1X54.3-23 MultiplicativeZero[101X
[33X[1;0Y[29X[2XMultiplicativeZero[102X( [3Xf[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YThe empty partial permutation.[133X
[33X[0;0YAs described in [2XMultiplicativeZero[102X ([14XReference: MultiplicativeZero[114X), [10XZero[110X
returns the multiplicative zero element of the partial permutation [3Xf[103X, which
is the empty partial permutation.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm([ 1, 2, 3, 4, 5, 7, 10 ], [ 3, 7, 9, 6, 1, 10, 2 ]);;[127X[104X
[4X[25Xgap>[125X [27XMultiplicativeZero(f);[127X[104X
[4X[28X<empty partial perm>[128X[104X
[4X[32X[104X
[1X54.4 [33X[0;0YChanging the representation of a partial permutation[133X[101X
[33X[0;0YIt is possible that a partial permutation in [5XGAP[105X can be represented by other
types of objects, or that other types of [5XGAP[105X objects can be represented by
partial permutations. Partial permutations which are mathematically
permutations can be converted into permutations in [5XGAP[105X using the function
[2XAsPermutation[102X ([14X42.5-6[114X). Similarly, a partial permutation can be converted
into a transformation using [2XAsTransformation[102X ([14X53.3-1[114X).[133X
[33X[0;0YIn this section we describe functions for converting other types of objects
in [5XGAP[105X into partial permutations.[133X
[1X54.4-1 AsPartialPerm[101X
[33X[1;0Y[29X[2XAsPartialPerm[102X( [3Xf[103X, [3Xset[103X ) [32X operation[133X
[33X[1;0Y[29X[2XAsPartialPerm[102X( [3Xf[103X ) [32X method[133X
[33X[1;0Y[29X[2XAsPartialPerm[102X( [3Xf[103X, [3Xn[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA partial permutation.[133X
[33X[0;0YA permutation [3Xf[103X defines a partial permutation when it is restricted to any
finite set of positive integers. [10XAsPartialPerm[110X can be used to obtain this
partial permutation.[133X
[33X[0;0YThere are several possible arguments for [10XAsPartialPerm[110X:[133X
[8Xfor a permutation and set of positive integers[108X
[33X[0;6Y[10XAsPartialPerm[110X returns the partial permutation that equals [3Xf[103X on the set
of positive integers [3Xset[103X and that is undefined on every other positive
integer.[133X
[33X[0;6YNote that as explained in [2XPartialPerm[102X ([14X54.2-1[114X) [13Xa permutation is never
a partial permutation[113X in [5XGAP[105X, please keep this in mind when using
[10XAsPartialPerm[110X.[133X
[8Xfor a permutation[108X
[33X[0;6Y[10XAsPartialPerm[110X returns the partial permutation that agrees with [3Xf[103X on
[10X[1..LargestMovedPoint([3Xf[103X[10X)][110X and that is not defined on any other
positive integer.[133X
[8Xfor a permutation and a positive integer[108X
[33X[0;6Y[10XAsPartialPerm[110X returns the partial permutation that agrees with [3Xf[103X on
[10X[1..[3Xn[103X[10X][110X, when [3Xn[103X is a positive integer, and that is not defined on any
other positive integer.[133X
[33X[0;0YThe operation [2XPartialPermOp[102X ([14X54.2-2[114X) can also be used to convert
permutations into partial permutations.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=(2,8,19,9,14,10,20,17,4,13,12,3,5,7,18,16);;[127X[104X
[4X[25Xgap>[125X [27XAsPartialPerm(f);[127X[104X
[4X[28X(1)(2,8,19,9,14,10,20,17,4,13,12,3,5,7,18,16)(6)(11)(15)[128X[104X
[4X[25Xgap>[125X [27XAsPartialPerm(f, [ 1, 2, 3 ] );[127X[104X
[4X[28X[2,8][3,5](1)[128X[104X
[4X[32X[104X
[1X54.4-2 AsPartialPerm[101X
[33X[1;0Y[29X[2XAsPartialPerm[102X( [3Xf[103X, [3Xset[103X ) [32X operation[133X
[33X[1;0Y[29X[2XAsPartialPerm[102X( [3Xf[103X, [3Xn[103X ) [32X method[133X
[6XReturns:[106X [33X[0;10YA partial permutation or [9Xfail[109X.[133X
[33X[0;0YA transformation [3Xf[103X defines a partial permutation when it is restricted to a
set of positive integers where it is injective. [10XAsPartialPerm[110X can be used to
obtain this partial permutation.[133X
[33X[0;0YThere are several possible arguments for [10XAsPartialPerm[110X:[133X
[8Xfor a transformation and set of positive integers[108X
[33X[0;6Y[10XAsPartialPerm[110X returns the partial permutation obtained by restricting
[3Xf[103X to the set of positive integers [3Xset[103X when:[133X
[30X [33X[0;12Y[3Xset[103X contains no elements exceeding the degree of [3Xf[103X;[133X
[30X [33X[0;12Y[3Xf[103X is injective on [3Xset[103X.[133X
[8Xfor a transformation and a positive integer[108X
[33X[0;6Y[10XAsPartialPerm[110X returns the partial permutation that agrees with [3Xf[103X on
[10X[1..[3Xn[103X[10X][110X when [3XA[103X is a positive integer and this set satisfies the
conditions given above.[133X
[33X[0;0YThe operation [2XPartialPermOp[102X ([14X54.2-2[114X) can also be used to convert
transformations into partial permutations.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=Transformation( [ 8, 3, 5, 9, 6, 2, 9, 7, 9 ] );;[127X[104X
[4X[25Xgap>[125X [27XAsPartialPerm(f, [1, 2, 3, 5, 8]);[127X[104X
[4X[28X[1,8,7][2,3,5,6][128X[104X
[4X[25Xgap>[125X [27XAsPartialPerm(f, 3);[127X[104X
[4X[28X[1,8][2,3,5][128X[104X
[4X[25Xgap>[125X [27XAsPartialPerm(f, [ 2 .. 4 ] );[127X[104X
[4X[28X[2,3,5][4,9][128X[104X
[4X[32X[104X
[1X54.5 [33X[0;0YOperators and operations for partial permutations[133X[101X
[8X[10X[3Xf[103X[8X[10X ^ -1[110X[8X[108X
[33X[0;6Yreturns the inverse of the partial permutation [3Xf[103X.[133X
[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 partial
permutation [3Xf[103X if it is defined and [10X0[110X if it is not.[133X
[8X[10X[3Xi[103X[8X[10X / [3Xf[103X[8X[10X[110X[8X[108X
[33X[0;6Yreturns the preimage of the positive integer [3Xi[103X under the partial
permutation [3Xf[103X if it is defined and [10X0[110X if it is not. Note that the
inverse of [3Xf[103X is not calculated to find the preimage of [3Xi[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 partial permutation and [3Xg[103X is a
permutation or partial permutation; see [2X\^[102X ([14X31.12-1[114X). This operation
requires essentially the same number of steps as multiplying partial
permutations, which is around one third as many as inverting and
multiplying twice.[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 partial
permutations or permutations. The product of a permutation and a
partial permutation is returned as a partial permutation.[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 partial permutation and [3Xg[103X is a permutation
or partial permutation. This operation requires essentially the same
number of steps as multiplying partial permutations, which is
approximately half that 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 partial permutation and [3Xg[103X is a permutation
or partial permutation. This operation requires essentially the same
number of steps as multiplying partial permutations, which is
approximately half that 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 of [3Xf[103X on the range from 1 to the degree of [3Xf[103X
is lexicographically less than the corresponding image for [3Xg[103X and [9Xfalse[109X
if it is not. See [2XNaturalLeqPartialPerm[102X ([14X54.5-4[114X) and
[2XShortLexLeqPartialPerm[102X ([14X54.5-5[114X) for additional orders for partial
permutations.[133X
[8X[10X[3Xf[103X[8X[10X = [3Xg[103X[8X[10X[110X[8X[108X
[33X[0;6Yreturns [9Xtrue[109X if the partial permutation [3Xf[103X equals the partial
permutation [3Xg[103X and returns [9Xfalse[109X if it does not.[133X
[1X54.5-1 PermLeftQuoPartialPerm[101X
[33X[1;0Y[29X[2XPermLeftQuoPartialPerm[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
[33X[1;0Y[29X[2XPermLeftQuoPartialPermNC[102X( [3Xf[103X, [3Xg[103X ) [32X operation[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
partial permutations [3Xf[103X and [3Xg[103X have equal domain and image set.[133X
[33X[0;0Y[10XPermLeftQuoPartialPerm[110X verifies that [3Xf[103X and [3Xg[103X have equal domains and image
sets, and returns an error if they do not. [10XPermLeftQuoPartialPermNC[110X does no
checks.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 5, 7 ], [ 7, 9, 10, 4, 2, 5 ] );[127X[104X
[4X[28X[1,7,5,2,9][3,10](4)[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 3, 4, 5, 7 ], [ 7, 4, 9, 2, 5, 10 ] );[127X[104X
[4X[28X[1,7,10][3,9](2,4)(5)[128X[104X
[4X[25Xgap>[125X [27XPermLeftQuoPartialPerm(f, g);[127X[104X
[4X[28X(2,5,10,9,4)[128X[104X
[4X[32X[104X
[1X54.5-2 PreImagePartialPerm[101X
[33X[1;0Y[29X[2XPreImagePartialPerm[102X( [3Xf[103X, [3Xi[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA positive integer or [9Xfail[109X.[133X
[33X[0;0Y[10XPreImagePartialPerm[110X returns the preimage of the positive integer [3Xi[103X under the
partial permutation [3Xf[103X if [3Xi[103X belongs to the image of [3Xf[103X. If [3Xi[103X does not belong
to the image of [3Xf[103X, then [9Xfail[109X is returned.[133X
[33X[0;0YThe same result can be obtained by using [10X[3Xi[103X[10X/[3Xf[103X[10X[110X as described in Section [14X54.5[114X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 5, 9, 10 ], [ 5, 10, 7, 8, 9, 1 ] );[127X[104X
[4X[28X[2,10,1,5,8][3,7](9)[128X[104X
[4X[25Xgap>[125X [27XPreImagePartialPerm(f, 8);[127X[104X
[4X[28X5[128X[104X
[4X[25Xgap>[125X [27XPreImagePartialPerm(f, 5);[127X[104X
[4X[28X1[128X[104X
[4X[25Xgap>[125X [27XPreImagePartialPerm(f, 1);[127X[104X
[4X[28X10[128X[104X
[4X[25Xgap>[125X [27XPreImagePartialPerm(f, 10);[127X[104X
[4X[28X2[128X[104X
[4X[25Xgap>[125X [27XPreImagePartialPerm(f, 2); [127X[104X
[4X[28Xfail[128X[104X
[4X[32X[104X
[1X54.5-3 ComponentPartialPermInt[101X
[33X[1;0Y[29X[2XComponentPartialPermInt[102X( [3Xf[103X, [3Xi[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YA set of positive integers.[133X
[33X[0;0Y[10XComponentPartialPermInt[110X returns the elements of the component of [3Xf[103X
containing [3Xi[103X that can be obtained by repeatedly applying [3Xf[103X to [3Xi[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 4, 5, 6, 7, 8, 10, 14, 15, 16, 17, 18 ], [127X[104X
[4X[25X>[125X [27X[ 11, 4, 14, 16, 15, 3, 20, 8, 17, 19, 1, 6, 12 ] );[127X[104X
[4X[28X[2,4,14,17,6,15,19][5,16,1,11][7,3][10,8,20][18,12][128X[104X
[4X[25Xgap>[125X [27XComponentPartialPermInt(f, 4);[127X[104X
[4X[28X[ 4, 14, 17, 6, 15, 19 ][128X[104X
[4X[25Xgap>[125X [27XComponentPartialPermInt(f, 3);[127X[104X
[4X[28X[ ][128X[104X
[4X[25Xgap>[125X [27XComponentPartialPermInt(f, 10);[127X[104X
[4X[28X[ 10, 8, 20 ][128X[104X
[4X[25Xgap>[125X [27XComponentPartialPermInt(f, 100);[127X[104X
[4X[28X[ ][128X[104X
[4X[32X[104X
[1X54.5-4 NaturalLeqPartialPerm[101X
[33X[1;0Y[29X[2XNaturalLeqPartialPerm[102X( [3Xf[103X, [3Xg[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
[33X[0;0YThe [13Xnatural partial order[113X [22X≤[122X on an inverse semigroup [10XS[110X is defined by [10Xs[110X[22X≤[122X[10Xt[110X if
there exists an idempotent [10Xe[110X in [10XS[110X such that [10Xs=et[110X. Hence if [3Xf[103X and [3Xg[103X are
partial permutations, then [3Xf[103X[22X≤[122X[3Xg[103X if and only if [3Xf[103X is a restriction of [3Xg[103X; see
[2XRestrictedPartialPerm[102X ([14X54.2-3[114X).[133X
[33X[0;0Y[10XNaturalLeqPartialPerm[110X returns [9Xtrue[109X if [3Xf[103X is a restriction of [3Xg[103X and [9Xfalse[109X if
it is not. Note that since this is a partial order and not a total order, it
is possible that [3Xf[103X and [3Xg[103X are incomparable with respect to the natural
partial order.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [127X[104X
[4X[25X>[125X [27X[ 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19 ], [127X[104X
[4X[25X>[125X [27X[ 3, 12, 14, 4, 11, 18, 17, 2, 9, 5, 15, 8, 20, 10, 19 ] );;[127X[104X
[4X[25Xgap>[125X [27Xg:=RestrictedPartialPerm(f, [ 1, 2, 3, 9, 13, 20 ] );[127X[104X
[4X[28X[1,3,14][2,12][128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(g,f);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(f,g);[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 3, 4, 5, 8, 10 ], [127X[104X
[4X[25X>[125X [27X[ 7, 1, 4, 3, 2, 6, 5 ] );;[127X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(f, g);[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(g, f);[127X[104X
[4X[28Xfalse[128X[104X
[4X[32X[104X
[1X54.5-5 ShortLexLeqPartialPerm[101X
[33X[1;0Y[29X[2XShortLexLeqPartialPerm[102X( [3Xf[103X, [3Xg[103X ) [32X function[133X
[6XReturns:[106X [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
[33X[0;0Y[10XShortLexLeqPartialPerm[110X returns [9Xtrue[109X if the concatenation of the domain and
image list of [3Xf[103X is short-lex less than the corresponding concatenation for [3Xg[103X
and [9Xfalse[109X otherwise.[133X
[33X[0;0YNote that this is not the natural partial order on partial permutation or
the same as comparing [3Xf[103X and [3Xg[103X using [10X\<[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 4, 6, 7, 8, 10 ], [127X[104X
[4X[25X>[125X [27X[ 3, 8, 1, 9, 4, 10, 5, 6 ] );[127X[104X
[4X[28X[2,8,5][7,10,6,4,9](1,3)[128X[104X
[4X[25Xgap>[125X [27Xg:=PartialPerm( [ 1, 2, 3, 4, 5, 8, 10 ], [127X[104X
[4X[25X>[125X [27X[ 7, 1, 4, 3, 2, 6, 5 ] );[127X[104X
[4X[28X[8,6][10,5,2,1,7](3,4)[128X[104X
[4X[25Xgap>[125X [27Xf<g;[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xg<f;[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XShortLexLeqPartialPerm(f, g);[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XShortLexLeqPartialPerm(g, f);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(f, g);[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(g, f);[127X[104X
[4X[28Xfalse[128X[104X
[4X[32X[104X
[1X54.5-6 TrimPartialPerm[101X
[33X[1;0Y[29X[2XTrimPartialPerm[102X( [3Xf[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YNothing.[133X
[33X[0;0YIt can happen that the internal representation of a partial permutation uses
more memory than necessary. For example, by composing a partial permutation
with codegree less than 65536 with a partial permutation with codegree
greater than 65535. It is possible that the resulting partial permutation [3Xf[103X
has its codegree and images stored as 32-bit integers, while none of its
image points exceeds 65536. The purpose of this function is to change the
internal representation of such an [3Xf[103X from using 32-bit to using 16-bit
integers.[133X
[33X[0;0YNote that the partial permutation [3Xf[103X is changed in-place, and nothing is
returned by this function.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2 ], [ 3, 4 ] )[127X[104X
[4X[25X>[125X [27X*PartialPerm( [ 3, 5 ], [ 3, 100000 ] );[127X[104X
[4X[28X[1,3][128X[104X
[4X[25Xgap>[125X [27XIsPPerm4Rep(f);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XTrimPartialPerm(f); f;[127X[104X
[4X[28X[1,3][128X[104X
[4X[25Xgap>[125X [27XIsPPerm4Rep(f);[127X[104X
[4X[28Xfalse[128X[104X
[4X[32X[104X
[1X54.6 [33X[0;0YDisplaying partial permutations[133X[101X
[33X[0;0YIt is possible to change the way that [5XGAP[105X displays partial permutations
using the user preferences [10XPartialPermDisplayLimit[110X and
[10XNotationForPartialPerms[110X; see Section [2XUserPreference[102X ([14X3.2-3[114X) for more
information about user preferences.[133X
[33X[0;0YIf [10Xf[110X is a partial permutation of rank [10Xr[110X exceeding the value of the user
preference [10XPartialPermDisplayLimit[110X, then [10Xf[110X is displayed as:[133X
[4X[32X Example [32X[104X
[4X[28X<partial perm on r pts with degree m, codegree n>[128X[104X
[4X[32X[104X
[33X[0;0Ywhere the degree and codegree are [10Xm[110X and [10Xn[110X, respectively. The idea is to
abbreviate the display of partial permutations defined on many points. The
default value for the [10XPartialPermDisplayLimit[110X is [10X100[110X.[133X
[33X[0;0YIf the rank of [10Xf[110X does not exceed the value of [10XPartialPermDisplayLimit[110X, then
how [10Xf[110X is displayed depends on the value of the user preference
[10XNotationForPartialPerms[110X except in the case that [10Xf[110X is the empty partial
permutation or an identity partial permutation.[133X
[33X[0;0YThere are three possible values for [10XNotationForPartialPerms[110X user preference,
which are described below.[133X
[8Xcomponent[108X
[33X[0;6YSimilar to permutations, and unlike transformations, partial
permutations can be expressed as products of disjoint permutations and
chains. A [13Xchain[113X is a list [10Xc[110X of some length [10Xn[110X such that:[133X
[30X [33X[0;12Y[10Xc[1][110X is an element of the domain of [3Xf[103X but not the image[133X
[30X [33X[0;12Y[10Xc[i]^[3Xf[103X[10X=c[i+1][110X for all [10Xi[110X in the range from [10X1[110X to [10Xn-1[110X.[133X
[30X [33X[0;12Y[10Xc[n][110X is in the image of [3Xf[103X but not the domain.[133X
[33X[0;6YIn the display, permutations are displayed as they usually are in [5XGAP[105X,
except that fixed points are displayed enclosed in round brackets, and
chains are displayed enclosed in square brackets.[133X
[4X [32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm([ 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19 ],[127X[104X
[4X[25X>[125X [27X[ 3, 12, 14, 4, 11, 18, 17, 2, 9, 5, 15, 8, 20, 10, 19 ]);[127X[104X
[4X[28X[1,3,14][16,8,2,12,15](4)(5,11)[6,18,10,9][7,17,20](19)[128X[104X
[4X[32X[104X
[33X[0;6YThis option is the most compact way to display a partial permutation
and is the default value of the user preference
[10XNotationForPartialPerms[110X.[133X
[8Xdomainimage[108X
[33X[0;6YWith this option a partial permutation [10Xf[110X is displayed in the format:
[10XDomainOfPartialPerm([3Xf[103X[10X)-> ImageListOfPartialPerm([3Xf[103X[10X)[110X.[133X
[4X [32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 4, 5, 6, 7 ], [ 10, 1, 6, 5, 8, 7 ]);[127X[104X
[4X[28X[ 1, 2, 4, 5, 6, 7 ] -> [ 10, 1, 6, 5, 8, 7 ][128X[104X
[4X[32X[104X
[8Xinput[108X
[33X[0;6YWith this option a partial permutation [3Xf[103X is displayed as:
[10XPartialPerm(DomainOfPartialPerm([3Xf[103X[10X), ImageListOfPartialPerm([3Xf[103X[10X))[110X which
corresponds to the input (of the first type described in [2XPartialPerm[102X
([14X54.2-1[114X)).[133X
[4X [32X Example [32X[104X
[4X[25Xgap>[125X [27Xf:=PartialPerm( [ 1, 2, 3, 5, 6, 9, 10 ], [127X[104X
[4X[25X>[125X [27X[ 4, 7, 3, 8, 2, 1, 6 ] );[127X[104X
[4X[28XPartialPerm( [ 1, 2, 3, 5, 6, 9, 10 ], [ 4, 7, 3, 8, 2, 1, 6 ] )[128X[104X
[4X[32X[104X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XSetUserPreference("PartialPermDisplayLimit", 12); [127X[104X
[4X[25Xgap>[125X [27XUserPreference("PartialPermDisplayLimit");[127X[104X
[4X[28X12[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 [27Xf:=PartialPerm( [127X[104X
[4X[25X>[125X [27X[ 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19 ], [127X[104X
[4X[25X>[125X [27X[ 3, 12, 14, 4, 11, 18, 17, 2, 9, 5, 15, 8, 20, 10, 19 ] );[127X[104X
[4X[28X<partial perm on 15 pts with degree 19, codegree 20>[128X[104X
[4X[25Xgap>[125X [27XSetUserPreference("PartialPermDisplayLimit", 100);[127X[104X
[4X[25Xgap>[125X [27Xf;[127X[104X
[4X[28X[1,3,14][6,18,10,9][7,17,20][16,8,2,12,15](4)(5,11)(19)[128X[104X
[4X[25Xgap>[125X [27XUserPreference("NotationForPartialPerms");[127X[104X
[4X[28X"component"[128X[104X
[4X[25Xgap>[125X [27XSetUserPreference("NotationForPartialPerms", "domainimage");[127X[104X
[4X[25Xgap>[125X [27Xf;[127X[104X
[4X[28X[ 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19 ] -> [128X[104X
[4X[28X[ 3, 12, 14, 4, 11, 18, 17, 2, 9, 5, 15, 8, 20, 10, 19 ][128X[104X
[4X[25Xgap>[125X [27XSetUserPreference("NotationForPartialPerms", "input");[127X[104X
[4X[25Xgap>[125X [27Xf;[127X[104X
[4X[28XPartialPerm( [128X[104X
[4X[28X[ 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19 ], [128X[104X
[4X[28X[ 3, 12, 14, 4, 11, 18, 17, 2, 9, 5, 15, 8, 20, 10, 19 ] )[128X[104X
[4X[32X[104X
[1X54.7 [33X[0;0YSemigroups and inverse semigroups of partial permutations[133X[101X
[33X[0;0YAs mentioned at the start of the chapter, every inverse semigroup is
isomorphic to a semigroup of partial permutations, and in this section we
describe the functions in [5XGAP[105X specific to partial permutation semigroups.
For more information about semigroups and inverse semigroups see Chapter [14X51[114X.[133X
[33X[0;0YThe [5XSemigroups[105X package contains many additional functions and methods for
computing with semigroups of partial permutations. 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.[133X
[33X[0;0YSince a partial permutation semigroup is also a partial permutation
collection, there are special methods for [2XDomainOfPartialPermCollection[102X
([14X54.3-4[114X), [2XImageOfPartialPermCollection[102X ([14X54.3-5[114X), [2XFixedPointsOfPartialPerm[102X
([14X54.3-8[114X), [2XMovedPoints[102X ([14X54.3-9[114X), [2XNrFixedPoints[102X ([14X54.3-10[114X), [2XNrMovedPoints[102X
([14X54.3-11[114X), [2XLargestMovedPoint[102X ([14X54.3-13[114X), and [2XSmallestMovedPoint[102X ([14X54.3-12[114X)
when applied to a partial permutation semigroup.[133X
[1X54.7-1 IsPartialPermSemigroup[101X
[33X[1;0Y[29X[2XIsPartialPermSemigroup[102X( [3Xobj[103X ) [32X filter[133X
[33X[1;0Y[29X[2XIsPartialPermMonoid[102X( [3Xobj[103X ) [32X filter[133X
[6XReturns:[106X [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
[33X[0;0YA [13Xpartial perm semigroup[113X is simply a semigroup consisting of partial
permutations, which may or may not be an inverse semigroup. An object [3Xobj[103X in
[5XGAP[105X is a partial perm semigroup if and only if it satisfies [2XIsSemigroup[102X
([14X51.1-1[114X) and [2XIsPartialPermCollection[102X ([14X54.1-2[114X).[133X
[33X[0;0YA [13Xpartial perm monoid[113X is a monoid consisting of partial permutations. An
object in [5XGAP[105X is a partial perm monoid if it satisfies [2XIsMonoid[102X ([14X51.2-1[114X) and
[2XIsPartialPermCollection[102X ([14X54.1-2[114X).[133X
[33X[0;0YNote that it is possible for a partial perm semigroup to have a
multiplicative neutral element (i.e. an identity element) but not to satisfy
[10XIsPartialPermMonoid[110X. For example,[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27Xf := PartialPerm( [ 1, 2, 3, 6, 8, 10 ], [ 2, 6, 7, 9, 1, 5 ] );;[127X[104X
[4X[25Xgap>[125X [27XS := Semigroup(f, One(f));[127X[104X
[4X[28X<commutative partial perm monoid of rank 9 with 1 generator>[128X[104X
[4X[25Xgap>[125X [27XIsMonoid(S);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XIsPartialPermMonoid(S);[127X[104X
[4X[28Xtrue[128X[104X
[4X[32X[104X
[33X[0;0YNote that unlike transformation semigroups, the [2XOne[102X ([14X31.10-2[114X) of a partial
permutation semigroup must coincide with the multiplicative neutral element,
if either exists.[133X
[33X[0;0YFor more details see [2XIsMagmaWithOne[102X ([14X35.1-2[114X).[133X
[1X54.7-2 DegreeOfPartialPermSemigroup[101X
[33X[1;0Y[29X[2XDegreeOfPartialPermSemigroup[102X( [3XS[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XCodegreeOfPartialPermSemigroup[102X( [3XS[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XRankOfPartialPermSemigroup[102X( [3XS[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YA non-negative integer.[133X
[33X[0;0YThe [13Xdegree[113X of a partial permutation semigroup [3XS[103X is the largest degree of any
partial permutation in [3XS[103X.[133X
[33X[0;0YThe [13Xcodegree[113X of a partial permutation semigroup [3XS[103X is the largest positive
integer in its image.[133X
[33X[0;0YThe [13Xrank[113X of a partial permutation semigroup [3XS[103X is the number of points on
which it acts.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := Semigroup( PartialPerm( [ 1, 5 ], [ 10000, 3 ] ) );[127X[104X
[4X[28X<commutative partial perm semigroup of rank 2 with 1 generator>[128X[104X
[4X[25Xgap>[125X [27XDegreeOfPartialPermSemigroup(S);[127X[104X
[4X[28X5[128X[104X
[4X[25Xgap>[125X [27XCodegreeOfPartialPermSemigroup(S);[127X[104X
[4X[28X10000[128X[104X
[4X[25Xgap>[125X [27XRankOfPartialPermSemigroup(S);[127X[104X
[4X[28X2[128X[104X
[4X[32X[104X
[1X54.7-3 SymmetricInverseSemigroup[101X
[33X[1;0Y[29X[2XSymmetricInverseSemigroup[102X( [3Xn[103X ) [32X operation[133X
[33X[1;0Y[29X[2XSymmetricInverseMonoid[102X( [3Xn[103X ) [32X operation[133X
[6XReturns:[106X [33X[0;10YThe symmetric inverse semigroup of degree [3Xn[103X.[133X
[33X[0;0YIf [3Xn[103X is a non-negative integer, then [10XSymmetricInverseSemigroup[110X returns the
inverse semigroup consisting of all partial permutations with degree and
codegree at most [3Xn[103X. Note that [3Xn[103X must be non-negative, but in particular, can
equal [10X0[110X.[133X
[33X[0;0YThe symmetric inverse semigroup is generated by any set that of partial
permutations that generate the symmetric group on [3Xn[103X points and any partial
permutation of rank [10X[3Xn[103X[10X-1[110X.[133X
[33X[0;0Y[10XSymmetricInverseMonoid[110X is a synonym for [10XSymmetricInverseSemigroup[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := SymmetricInverseSemigroup(5);[127X[104X
[4X[28X<symmetric inverse monoid of degree 5>[128X[104X
[4X[25Xgap>[125X [27XSize(S);[127X[104X
[4X[28X1546[128X[104X
[4X[25Xgap>[125X [27XGeneratorsOfInverseMonoid(S);[127X[104X
[4X[28X[ (1,2,3,4,5), (1,2)(3)(4)(5), [5,4,3,2,1] ][128X[104X
[4X[32X[104X
[1X54.7-4 IsSymmetricInverseSemigroup[101X
[33X[1;0Y[29X[2XIsSymmetricInverseSemigroup[102X( [3XS[103X ) [32X property[133X
[33X[1;0Y[29X[2XIsSymmetricInverseMonoid[102X( [3XS[103X ) [32X property[133X
[6XReturns:[106X [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
[33X[0;0YIf the partial perm semigroup [3XS[103X of degree and codegree [3Xn[103X equals the
symmetric inverse semigroup on [3Xn[103X points, then [10XIsSymmetricInverseSemigroup[110X
return [9Xtrue[109X and otherwise it returns [9Xfalse[109X.[133X
[33X[0;0Y[10XIsSymmetricInverseMonoid[110X is a synonym of [10XIsSymmetricInverseSemigroup[110X. It is
common in the literature for the symmetric inverse monoid to be referred to
as the symmetric inverse semigroup.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := Semigroup(AsPartialPerm((1, 3, 4, 2), 5), AsPartialPerm((1, 3, 5), 5),[127X[104X
[4X[25X>[125X [27XPartialPerm( [ 1, 2, 3, 4 ] ) );[127X[104X
[4X[28X<partial perm semigroup of rank 5 with 3 generators>[128X[104X
[4X[25Xgap>[125X [27XIsSymmetricInverseSemigroup(S);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XS;[127X[104X
[4X[28X<symmetric inverse monoid of degree 5>[128X[104X
[4X[32X[104X
[1X54.7-5 NaturalPartialOrder[101X
[33X[1;0Y[29X[2XNaturalPartialOrder[102X( [3XS[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XReverseNaturalPartialOrder[102X( [3XS[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YThe natural partial order on an inverse semigroup.[133X
[33X[0;0YThe [13Xnatural partial order[113X [22X≤[122X on an inverse semigroup [3XS[103X is defined by [10Xs[110X[22X≤[122X[10Xt[110X if
there exists an idempotent [10Xe[110X in [3XS[103X such that [10Xs=et[110X. Hence if [10Xf[110X and [10Xg[110X are
partial permutations, then [10Xf[110X[22X≤[122X[10Xg[110X if and only if [10Xf[110X is a restriction of [10Xg[110X; see
[2XRestrictedPartialPerm[102X ([14X54.2-3[114X).[133X
[33X[0;0Y[10XNaturalPartialOrder[110X returns the natural partial order on the inverse
semigroup of partial permutations [3XS[103X as a list of sets of positive integers
where entry [10Xi[110X in [10XNaturalPartialOrder([3XS[103X[10X)[110X is the set of positions in
[10XElements([3XS[103X[10X)[110X of elements which are less than [10XElements([3XS[103X[10X)[i][110X. See also
[2XNaturalLeqPartialPerm[102X ([14X54.5-4[114X).[133X
[33X[0;0Y[10XReverseNaturalPartialOrder[110X returns the reverse of the natural partial order
on the inverse semigroup of partial permutations [3XS[103X as a list of sets of
positive integers where entry [10Xi[110X in [10XReverseNaturalPartialOrder([3XS[103X[10X)[110X is the set
of positions in [10XElements([3XS[103X[10X)[110X of elements which are greater than
[10XElements([3XS[103X[10X)[i][110X. See also [2XNaturalLeqPartialPerm[102X ([14X54.5-4[114X).[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := InverseSemigroup([ PartialPerm( [ 1, 3 ], [ 1, 3 ] ),[127X[104X
[4X[25X>[125X [27XPartialPerm( [ 1, 2 ], [ 3, 2 ] ) ] );[127X[104X
[4X[28X<inverse partial perm semigroup of rank 3 with 2 generators>[128X[104X
[4X[25Xgap>[125X [27XSize(S);[127X[104X
[4X[28X11[128X[104X
[4X[25Xgap>[125X [27XNaturalPartialOrder(S);[127X[104X
[4X[28X[ [ ], [ 1 ], [ 1 ], [ 1 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 1 ], [ 1 ], [128X[104X
[4X[28X [ 1, 4, 7 ], [ 1, 4, 8 ], [ 1, 2, 8 ] ][128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(Elements(S)[4], Elements(S)[10]);[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XNaturalLeqPartialPerm(Elements(S)[4], Elements(S)[1]); [127X[104X
[4X[28Xfalse[128X[104X
[4X[32X[104X
[1X54.7-6 IsomorphismPartialPermSemigroup[101X
[33X[1;0Y[29X[2XIsomorphismPartialPermSemigroup[102X( [3XS[103X ) [32X attribute[133X
[33X[1;0Y[29X[2XIsomorphismPartialPermMonoid[102X( [3XS[103X ) [32X attribute[133X
[6XReturns:[106X [33X[0;10YAn isomorphism.[133X
[33X[0;0Y[10XIsomorphismPartialPermSemigroup([3XS[103X[10X)[110X returns an isomorphism from the inverse
semigroup [3XS[103X to an inverse semigroup of partial permutations.[133X
[33X[0;0Y[10XIsomorphismPartialPermMonoid([3XS[103X[10X)[110X returns an isomorphism from the inverse
semigroup [3XS[103X to an inverse monoid of partial permutations, if possible.[133X
[33X[0;0YWe only describe [10XIsomorphismPartialPermMonoid[110X, the corresponding statements
for [10XIsomorphismPartialPermSemigroup[110X also hold.[133X
[8XPartial permutation semigroups[108X
[33X[0;6YIf [3XS[103X is a partial permutation semigroup that does not satisfy [2XIsMonoid[102X
([14XReference: IsMonoid[114X) but where [10XMultiplicativeNeutralElement([3XS[103X[10X)<>fail[110X,
then [10XIsomorphismPartialPermMonoid([3XS[103X[10X)[110X returns an isomorphism from [3XS[103X to
an inverse monoid of partial permutations.[133X
[8XPermutation groups[108X
[33X[0;6YIf [3XS[103X is a permutation group, then [10XIsomorphismPartialPermMonoid[110X returns
an isomorphism from [3XS[103X to an inverse monoid of partial permutations on
the set [10XMovedPoints([3XS[103X[10X)[110X obtained using [2XAsPartialPerm[102X ([14X54.4-1[114X). The
inverse of this isomorphism is obtained using [2XAsPermutation[102X ([14X42.5-6[114X).[133X
[8XTransformation semigroups[108X
[33X[0;6YIf [3XS[103X is a transformation semigroup which is mathematically a monoid
but which does not necessarily belong to the category [2XIsMonoid[102X
([14X51.2-1[114X), then [10XIsomorphismPartialPermMonoid[110X returns an isomorphism
from [3XS[103X to an inverse monoid of partial permutations.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XS := InverseSemigroup( [127X[104X
[4X[25X>[125X [27XPartialPerm( [ 1, 2, 3, 4, 5 ], [ 4, 2, 3, 1, 5 ] ),[127X[104X
[4X[25X>[125X [27XPartialPerm( [ 1, 2, 4, 5 ], [ 3, 1, 4, 2 ] ) );;[127X[104X
[4X[25Xgap>[125X [27XIsMonoid(S); [127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XSize(S);[127X[104X
[4X[28X508[128X[104X
[4X[25Xgap>[125X [27Xiso := IsomorphismPartialPermMonoid(S);[127X[104X
[4X[28XMappingByFunction( <inverse partial perm semigroup of size 508, [128X[104X
[4X[28X rank 5 with 2 generators>, <inverse partial perm monoid of size 508, [128X[104X
[4X[28X rank 5 with 2 generators>[128X[104X
[4X[28X , function( object ) ... end, function( object ) ... end )[128X[104X
[4X[25Xgap>[125X [27XSize(S);[127X[104X
[4X[28X508[128X[104X
[4X[25Xgap>[125X [27XSize(Range(iso));[127X[104X
[4X[28X508[128X[104X
[4X[25Xgap>[125X [27XG := Group((1,2)(3,8)(4,6)(5,7), (1,3,4,7)(2,5,6,8), (1,4)(2,6)(3,7)(5,8));;[127X[104X
[4X[25Xgap>[125X [27XIsomorphismPartialPermSemigroup(G);[127X[104X
[4X[28XMappingByFunction( Group([ (1,2)(3,8)(4,6)(5,7), (1,3,4,7)[128X[104X
[4X[28X(2,5,6,8), (1,4)(2,6)(3,7)[128X[104X
[4X[28X(5,8) ]), <partial perm group of rank 8 with 3 generators>[128X[104X
[4X[28X, function( p ) ... end, <Attribute "AsPermutation"> )[128X[104X
[4X[25Xgap>[125X [27XS := Semigroup(Transformation( [ 2, 5, 1, 7, 3, 7, 7 ] ), [127X[104X
[4X[25X>[125X [27XTransformation( [ 3, 6, 5, 7, 2, 1, 7 ] ) );;[127X[104X
[4X[25Xgap>[125X [27Xiso := IsomorphismPartialPermMonoid(S);;[127X[104X
[4X[25Xgap>[125X [27XMultiplicativeNeutralElement(S) ^ iso;[127X[104X
[4X[28X<identity partial perm on [ 1, 2, 3, 4, 5, 6 ]>[128X[104X
[4X[25Xgap>[125X [27XOne(Range(iso));[127X[104X
[4X[28X<identity partial perm on [ 1, 2, 3, 4, 5, 6 ]>[128X[104X
[4X[25Xgap>[125X [27XMovedPoints(Range(iso));[127X[104X
[4X[28X[ 1 .. 5 ][128X[104X
[4X[32X[104X