Permutation specific functions
Base.isodd — Method
isodd(g::AbstractPermutation) -> BoolReturn true if g is an odd permutation and false otherwise.
An odd permutation decomposes into an odd number of transpositions.
Base.iseven — Method
isodd(g::AbstractPermutation) -> BoolReturn true if g is an even permutation and false otherwise.
An even permutation decomposes into an even number of transpositions.
AbstractPermutations.permtype — Function
permtype(g::AbstractPermutation)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.
AbstractPermutations.cycles — Function
cycles(g::AbstractPermutation)::CycleDecompositionReturn an iterator over cycles in the disjoint cycle decomposition of g.
Base.permute! — Method
permute!(dest::AbstractArray, v::AbstractArray, p::AbstractPermutation)Permute array v in-place, storing the result in dest, according to permutation p.
For the out-of-place version use v[p].
Permutations can be applied to any sufficiently long (length(v) ≥ degree(p)) 1-based array.
Base.permute! — Method
permute!(v::AbstractArray, cycledec::CycleDecomposition)Permute array v in-place, according to the permutation represented by cycledec.
For the out-of-place version use v[p].
Permutations can be applied to any sufficiently long (length(v) ≥ degree(p)) 1-based array.
AbstractPermutations.Lex — Type
Lex <: Base.Order.OrderingLexicographical ordering of permutations.
The comparison of permutations σ and τ in Lexicographical ordering returns true when there exists k ≥ 1 such that
i^σ == i^τfor alli < kandk^σ < k^τ
and false otherwise.
The method isless(σ::AbstractPermutation, τ::AbstractPermutation) defaults to the lexicographical order, i.e. calling Base.lt(Lex(), σ, τ).
See also DegLex.
AbstractPermutations.DegLex — Type
DegLex <: Base.Order.OrderingDegree-then-lexicographical ordering of permutations.
The comparison of σ and τ is made by comparing degrees first, and by the lexicographical ordering among permutations of the same degree.
See also Lex.
Function specific to actions on 1:n
AbstractPermutations.firstmoved — Function
firstmoved(g::AbstractPermutation, range)Return the first point from range that is moved by g, or nothing if g fixes range point-wise.
AbstractPermutations.fixedpoints — Function
fixedpoints(g::AbstractPermutation, range)Return the vector of points in range fixed by g.
AbstractPermutations.nfixedpoints — Function
nfixedpoints(g::AbstractPermutation, range)Return the number of points in range fixed by g.
The @perm macro
AbstractPermutations.@perm — Macro
@perm P cycles_stringMacro 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.
Examples:
Using the exemplary implementation from test/perms_by_images.jl
julia> p = @perm Perm{UInt16} "(1,3)(2,4)"
(1,3)(2,4)
julia> typeof(p)
Perm{UInt16}
julia> q = @perm Perm "(1,3)(2,4)(3,5)(8)"
(1,5,3)(2,4)