Permutation specific functions

isodd(g::AbstractPermutation) -> Bool

Return true if g is an odd permutation and false otherwise.

An odd permutation decomposes into an odd number of transpositions.

isodd(g::AbstractPermutation) -> Bool

Return true if g is an even permutation and false otherwise.

An even permutation decomposes into an even number of transpositions.


Return the sign of a permutation as an integer ±1.

sign represents the homomorphism from the permutation group to the unit group of whose kernel is the alternating group.


Return the group-theoretic type of permutation g, i.e. the vector of lengths of cycles in the (disjoint) cycle decomposition of g.

The lengths are sorted in decreasing order and cycles of length 1 are omitted. permtype(g) fully determines the conjugacy class of g in the full symmetric group.


Return an iterator over cycles in the disjoint cycle decomposition of g.

Lex <: Base.Order.Ordering

Lexicographical ordering of permutations.

The comparison of permutations σ and τ in Lexicographical ordering returns true when there exists k ≥ 1 such that

  • i^σ == i^τ for all i < k and
  • k^σ < k^τ

and false otherwise.

The method isless(σ::AbstractPermutation, τ::AbstractPermutation) defaults to the lexicographical order, i.e. calling, σ, τ).

See also DegLex.

Function specific to actions on 1:n

firstmoved(g::AbstractPermutation, range)

Return the first point from range that is moved by g, or nothing if g fixes range point-wise.

The @perm macro

@perm P cycles_string

Macro to parse cycles decomposition as a string into a permutation of type P.

Strings for the output of e.g. GAP could be copied directly into @perm, as long as they are not elided. Cycles of length 1 are not necessary, but can be included.


Using the exemplary implementation from test/perms_by_images.jl

julia> p = @perm Perm{UInt16} "(1,3)(2,4)"

julia> typeof(p)

julia> q = @perm Perm "(1,3)(2,4)(3,5)(8)"