Sign of a permutation #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
The main definition of this file is equiv.perm.sign
, associating a ℤˣ
sign with a
permutation.
This file also contains miscellaneous lemmas about equiv.perm
and equiv.swap
, building on top
of those in data/equiv/basic
and other files in group_theory/perm/*
.
mod_swap i j
contains permutations up to swapping i
and j
.
We use this to partition permutations in matrix.det_zero_of_row_eq
, such that each partition
sums up to 0
.
Equations
- equiv.perm.mod_swap i j = {r := λ (σ τ : equiv.perm α), σ = τ ∨ σ = equiv.swap i j * τ, iseqv := _}
Equations
- equiv.perm.r.decidable_rel i j = λ (σ τ : equiv.perm α), or.decidable
If the permutation f
maps {x // p x}
into itself, then this returns the permutation
on {x // p x}
induced by f
. Note that the h
hypothesis is weaker than for
equiv.perm.subtype_perm
.
Given a list l : list α
and a permutation f : perm α
such that the nonfixed points of f
are in l
, recursively factors f
as a product of transpositions.
Equations
- equiv.perm.swap_factors_aux (x :: l) = λ (f : equiv.perm α) (h : ∀ {x_1 : α}, ⇑f x_1 ≠ x_1 → x_1 ∈ x :: l), dite (x = ⇑f x) (λ (hfx : x = ⇑f x), equiv.perm.swap_factors_aux l f _) (λ (hfx : ¬x = ⇑f x), let m : {l // l.prod = equiv.swap x (⇑f x) * f ∧ ∀ (g : equiv.perm α), g ∈ l → g.is_swap} := equiv.perm.swap_factors_aux l (equiv.swap x (⇑f x) * f) _ in ⟨equiv.swap x (⇑f x) :: m.val, _⟩)
- equiv.perm.swap_factors_aux list.nil = λ (f : equiv.perm α) (h : ∀ {x : α}, ⇑f x ≠ x → x ∈ list.nil), ⟨list.nil (equiv.perm α), _⟩
swap_factors
represents a permutation as a product of a list of transpositions.
The representation is non unique and depends on the linear order structure.
For types without linear order trunc_swap_factors
can be used.
Equations
This computably represents the fact that any permutation can be represented as the product of a list of transpositions.
Equations
- f.trunc_swap_factors = quotient.rec_on_subsingleton finset.univ.val (λ (l : list α) (h : ∀ (x : α), ⇑f x ≠ x → x ∈ ⟦l⟧), trunc.mk (equiv.perm.swap_factors_aux l f h)) _
An induction principle for permutations. If P
holds for the identity permutation, and
is preserved under composition with a non-trivial swap, then P
holds for all permutations.
Like swap_induction_on
, but with the composition on the right of f
.
An induction principle for permutations. If P
holds for the identity permutation, and
is preserved under composition with a non-trivial swap, then P
holds for all permutations.
set of all pairs (⟨a, b⟩ : Σ a : fin n, fin n) such that b < a
Equations
- equiv.perm.fin_pairs_lt n = finset.univ.sigma (λ (a : fin n), (finset.range ↑a).attach_fin _)
sign_aux σ
is the sign of a permutation on fin n
, defined as the parity of the number of
pairs (x₁, x₂)
such that x₂ < x₁
but σ x₁ ≤ σ x₂
sign_bij_aux f ⟨a, b⟩
returns the pair consisting of f a
and f b
in decreasing order.
When the list l : list α
contains all nonfixed points of the permutation f : perm α
,
sign_aux2 l f
recursively calculates the sign of f
.
Equations
- equiv.perm.sign_aux2 (x :: l) f = ite (x = ⇑f x) (equiv.perm.sign_aux2 l f) (-equiv.perm.sign_aux2 l (equiv.swap x (⇑f x) * f))
- equiv.perm.sign_aux2 list.nil f = 1
When the multiset s : multiset α
contains all nonfixed points of the permutation f : perm α
,
sign_aux2 f _
recursively calculates the sign of f
.
Equations
- f.sign_aux3 = quotient.hrec_on s (λ (l : list α) (h : ∀ (x : α), x ∈ ⟦l⟧), equiv.perm.sign_aux2 l f) _
sign
of a permutation returns the signature or parity of a permutation, 1
for even
permutations, -1
for odd permutations. It is the unique surjective group homomorphism from
perm α
to the group with two elements.
Equations
- equiv.perm.sign = monoid_hom.mk' (λ (f : equiv.perm α), f.sign_aux3 finset.mem_univ) equiv.perm.sign._proof_1
If we apply prod_extend_right a (σ a)
for all a : α
in turn,
we get prod_congr_right σ
.