|
Calling Sequence
|
|
PermApply( n, p )
PermDegree( p )
PermOrder( p )
PermIsInvolution( p )
PermParity( p )
PermProduct( p, q )
PermInverse( p )
PermPower( p, n )
PermLeftQuotient( p, q )
PermRightQuotient( p, q )
PermConjugate( p, q )
PermCommutator( p, q )
PermCycleType( p )
PermFixed( p )
PermSupport( p )
PermMinSupport( p )
PermMaxSupport( p )
PermRestrict( p, dom )
PermShift( p, n )
PermCompare( p, q )
PermAltSplit( p )
PermRandom( n )
PermRandom( n, exact )
|
|
Parameters
|
|
p, q
|
-
|
Perm : permutations
|
n
|
-
|
integer : an integer
|
dom
|
-
|
{set,list}(posint) : set or list of positive integers
|
|
|
|
|
Description
|
|
•
|
A permutation is a bijective mapping from the set to itself, for some positive integer .
|
•
|
The set of all such permutations forms the symmetric group of degree , and subgroups of symmetric groups are permutation groups.
|
•
|
Permutations are typically represented as products of disjoint cycles, each of which is an orbit of the permutation. This is a list of the form in which each is itself a list representing a cycle of the form .
|
•
|
The Perm constructor creates a permutation, given a specification of its disjoint cycle structure in the form of a list of lists. You can also use a permutation list, which is just the representation of the permutation as a list L of points in which L[ i ] specifies the image of i under the permutation.
|
•
|
The image of a point i under a permutation p is returned by the indexed expression p[ i ]. You can also use the procedure PermApply for this purpose. The expression PermApply( p, i ) returns the image of i under the permutation p. The PermApply command is primarily intended for use with procedures such as map and map2.
|
•
|
The procedures described in this help page operate on permutation objects returned by the Perm constructor, and are part of the GroupTheory package (whereas Perm itself is global).
|
•
|
The degree of a permutation is the number of points upon which it acts. The PermDegree( p ) command returns the degree of the permutation p.
|
•
|
The product of two permutations a and b can be computed by using the PermProduct( a, b ) command. Note that permutation multiplication is non-commutative; that is, in general, PermProduct( a, b ) and PermProduct( b, a ) are different. You can also compute the product of the permutations a and b by using the non-commutative multiplication operator `.`, as a . b.
|
•
|
The inverse of the permutation p is computed using the command PermInverse( p ). It can also be computed using the syntax p^(-1).
|
•
|
An integral power of a permutation p is computed using the command PermPower( p, n ), which computes the n-th power of p, defined in the natural way. You can also use the syntax p^n.
|
•
|
The PermOrder( p ) command computes the order of a permutation p. That is the least positive integer k for which p^k is the identity.
|
•
|
The identity permutation can be constructed using the expression Perm( [] ).
|
•
|
Every permutation can be written as a product of transpositions, permutations which interchange exactly two points. Although this factorization is not unique, the number of transpositions in such a product is either always even or always odd. A permutation is said to be even (respectively, odd) according to whether is has a decomposition as a product of an even (respectively, odd) number of transpositions. An even permutation is defined to have parity equal to , while an odd permutation is defined to have parity equal to . (This defines a homomorphism from the full symmetric group onto the multiplicative group , whose kernel, consisting of the even permutations, is the alternating group.) The parity of a permutation p is returned by the PermParity( p ) command.
|
•
|
A transposition is a particular example of an involution, that is, an element of order . An involution is its own inverse. The PermIsInvolution( p ) command returns true if the permutation p is an involution, and false otherwise.
|
•
|
The left quotient of permutations p and q is computed using the PermLeftQuotient( p, q ) command. Similarly, the command PermRightQuotient( p, q ) computes the right quotient of p and q.
|
•
|
The conjugate of by is defined to be and may be computed by the PermConjugate( p, q ) command. The syntax p^q is also available for this computation.
|
•
|
The commutator of permutations p and q is defined to be the permutation and is computed using the command PermCommutator( p, q ).
|
•
|
The PermCycleType( p ) command returns the cycle type of the permutation p. This is defined to be the list consisting of the lengths of the cycles of p, in sorted order.
|
•
|
A point is fixed by a permutation if ; its complement (in the domain of the permutation) is called the support of . The set of fixed points of a permutation p is returned by the command PermFixed( p ), and the support of p is returned by the command PermSupport( p ). The smallest positive integer in the support of p is returned by the command PermMinSupport( p ), while the command PermMaxSupport( p ) returns the largest member of the support of p.
|
•
|
If an invariant subset dom of a permutation p exists (i.e., a union of cycles of p), then the restriction of p to dom is a permutation that can be computed by using the PermRestrict( p, dom ) command.
|
•
|
The PermShift( p, n ) command returns a permutation conjugate to p but acting on the result of adding the integer n to each point of the support of p, provided that the result is a set of positive integers.
|
•
|
The conjugacy class of an even permutation p in the symmetric group to which it belongs may or may not split into two conjugacy classes in the alternating group. The PermAltSplit( p ) command returns the value true if this happens, and returns the value false otherwise.
|
•
|
The PermCompare( a, b ) command compares two permutations a and b, according to the lexicographic plus degree ordering. The PermCompare command is intended for use as the second argument in a a call to sort on a list of permutations.
|
•
|
To generate a random permutation of degree n, use the PermRandom( n ) command. Because the resulting permutation p is randomly produced, the degree of p will be at most n, but may not be exactly n. To ensure that the resulting permutation p has degree exactly equal to n, use the exact = true (or just exact) option.
|
|
|
Examples
|
|
>
|
|
| (1) |
>
|
|
>
|
|
| (11) |
| (12) |
| (13) |
>
|
|
| (14) |
| (15) |
>
|
|
| (16) |
| (17) |
>
|
|
| (20) |
| (21) |
>
|
|
| (22) |
| (28) |
| (33) |
| (34) |
>
|
|
A shift value of is not valid in the following example, since the result of shifting by would result in a non-negative integer point.
>
|
|
| (41) |
>
|
|
| (44) |
| (45) |
>
|
|
| (46) |
|
|
Compatibility
|
|
•
|
The GroupTheory[PermApply], GroupTheory[PermAltSplit], GroupTheory[PermDegree], GroupTheory[PermOrder], GroupTheory[PermParity], GroupTheory[PermProduct], GroupTheory[PermInverse], GroupTheory[PermIsInvolution], GroupTheory[PermPower], GroupTheory[PermLeftQuotient], GroupTheory[PermRightQuotient], GroupTheory[PermConjugate], GroupTheory[PermCommutator], GroupTheory[PermCycleType], GroupTheory[PermFixed], GroupTheory[PermRestrict], GroupTheory[PermShift], GroupTheory[PermSupport], GroupTheory[PermMinSupport], GroupTheory[PermMaxSupport] and GroupTheory[PermRandom] commands were introduced in Maple 17.
|
•
|
The GroupTheory[PermCompare] command was introduced in Maple 2017.
|
|
|
|