The group of permutations (self-equivalences) of a type α #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines the group structure on equiv.perm α.
Equations
- equiv.perm.perm_group = {mul := λ (f g : equiv.perm α), equiv.trans g f, mul_assoc := _, one := equiv.refl α, one_mul := _, mul_one := _, npow := div_inv_monoid.npow._default (equiv.refl α) (λ (f g : equiv.perm α), equiv.trans g f) equiv.trans_refl equiv.refl_trans, npow_zero' := _, npow_succ' := _, inv := equiv.symm α, div := div_inv_monoid.div._default (λ (f g : equiv.perm α), equiv.trans g f) equiv.perm.perm_group._proof_4 (equiv.refl α) equiv.trans_refl equiv.refl_trans (div_inv_monoid.npow._default (equiv.refl α) (λ (f g : equiv.perm α), equiv.trans g f) equiv.trans_refl equiv.refl_trans) equiv.perm.perm_group._proof_5 equiv.perm.perm_group._proof_6 equiv.symm, div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default (λ (f g : equiv.perm α), equiv.trans g f) equiv.perm.perm_group._proof_8 (equiv.refl α) equiv.trans_refl equiv.refl_trans (div_inv_monoid.npow._default (equiv.refl α) (λ (f g : equiv.perm α), equiv.trans g f) equiv.trans_refl equiv.refl_trans) equiv.perm.perm_group._proof_9 equiv.perm.perm_group._proof_10 equiv.symm, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
The permutation of a type is equivalent to the units group of the endomorphisms monoid of this type.
Lift a monoid homomorphism f : G →* function.End α to a monoid homomorphism
f : G →* equiv.perm α.
Equations
Lemmas about mixing perm with equiv. Because we have multiple ways to express
equiv.refl, equiv.symm, and equiv.trans, we want simp lemmas for every combination.
The assumption made here is that if you're using the group structure, you want to preserve it after
simp.
Lemmas about equiv.perm.sum_congr re-expressed via the group structure.
equiv.perm.sum_congr as a monoid_hom, with its two arguments bundled into a single prod.
This is particularly useful for its monoid_hom.range projection, which is the subgroup of
permutations which do not exchange elements between α and β.
Equations
- equiv.perm.sum_congr_hom α β = {to_fun := λ (a : equiv.perm α × equiv.perm β), a.fst.sum_congr a.snd, map_one' := _, map_mul' := _}
Lemmas about equiv.perm.sigma_congr_right re-expressed via the group structure.
equiv.perm.sigma_congr_right as a monoid_hom.
This is particularly useful for its monoid_hom.range projection, which is the subgroup of
permutations which do not exchange elements between fibers.
Equations
- equiv.perm.sigma_congr_right_hom β = {to_fun := equiv.perm.sigma_congr_right (λ (a : α), β a), map_one' := _, map_mul' := _}
equiv.perm.subtype_congr as a monoid_hom.
Equations
- equiv.perm.subtype_congr_hom p = {to_fun := λ (pair : equiv.perm {a // p a} × equiv.perm {a // ¬p a}), pair.fst.subtype_congr pair.snd, map_one' := _, map_mul' := _}
If e is also a permutation, we can write perm_congr
completely in terms of the group structure.
Lemmas about equiv.perm.extend_domain re-expressed via the group structure.
extend_domain as a group homomorphism
Equations
- equiv.perm.extend_domain_hom f = {to_fun := λ (e : equiv.perm α), e.extend_domain f, map_one' := _, map_mul' := _}
If the permutation f fixes the subtype {x // p x}, then this returns the permutation
on {x // p x} induced by f.
The inclusion map of permutations on a subtype of α into permutations of α,
fixing the other points.
Equations
- equiv.perm.of_subtype = {to_fun := λ (f : equiv.perm (subtype p)), f.extend_domain (equiv.refl (subtype p)), map_one' := _, map_mul' := _}
Permutations on a subtype are equivalent to permutations on the original type that fix pointwise the rest.
Equations
- equiv.perm.subtype_equiv_subtype_perm p = {to_fun := λ (f : equiv.perm (subtype p)), ⟨⇑equiv.perm.of_subtype f, _⟩, inv_fun := λ (f : {f // ∀ (a : α), ¬p a → ⇑f a = a}), ↑f.subtype_perm _, left_inv := _, right_inv := _}
Left-multiplying a permutation with swap i j twice gives the original permutation.
This specialization of swap_mul_self is useful when using cosets of permutations.
Right-multiplying a permutation with swap i j twice gives the original permutation.
This specialization of swap_mul_self is useful when using cosets of permutations.
A stronger version of mul_right_injective
A stronger version of mul_left_injective
Alias of the forward direction of set.bij_on_perm_inv.
Alias of the reverse direction of set.bij_on_perm_inv.