The group of permutations (self-equivalences) of a type α
#
This file defines the Group
structure on Equiv.Perm α
.
The permutation of a type is equivalent to the units group of the endomorphisms monoid of this type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a monoid homomorphism f : G →* Function.End α
to a monoid homomorphism
f : G →* Equiv.Perm α
.
Equations
- MonoidHom.toHomPerm f = MonoidHom.comp (MulEquiv.toMonoidHom (MulEquiv.symm Equiv.Perm.equivUnitsEnd)) (MonoidHom.toHomUnits f)
Instances For
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.sumCongr
re-expressed via the group structure.
Equiv.Perm.sumCongr
as a MonoidHom
, with its two arguments bundled into a single prod
.
This is particularly useful for its MonoidHom.range
projection, which is the subgroup of
permutations which do not exchange elements between α
and β
.
Equations
- Equiv.Perm.sumCongrHom α β = { toOneHom := { toFun := fun (a : Equiv.Perm α × Equiv.Perm β) => Equiv.Perm.sumCongr a.1 a.2, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
Lemmas about Equiv.Perm.sigmaCongrRight
re-expressed via the group structure.
Equiv.Perm.sigmaCongrRight
as a MonoidHom
.
This is particularly useful for its MonoidHom.range
projection, which is the subgroup of
permutations which do not exchange elements between fibers.
Equations
- Equiv.Perm.sigmaCongrRightHom β = { toOneHom := { toFun := Equiv.Perm.sigmaCongrRight, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
Equiv.Perm.subtypeCongr
as a MonoidHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If e
is also a permutation, we can write permCongr
completely in terms of the group structure.
Lemmas about Equiv.Perm.extendDomain
re-expressed via the group structure.
extendDomain
as a group homomorphism
Equations
- Equiv.Perm.extendDomainHom f = { toOneHom := { toFun := fun (e : Equiv.Perm α) => Equiv.Perm.extendDomain e f, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
If the permutation f
fixes the subtype {x // p x}
, then this returns the permutation
on {x // p x}
induced by f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inclusion map of permutations on a subtype of α
into permutations of α
,
fixing the other points.
Equations
- Equiv.Perm.ofSubtype = { toOneHom := { toFun := fun (f : Equiv.Perm (Subtype p)) => Equiv.Perm.extendDomain f (Equiv.refl (Subtype p)), map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
Permutations on a subtype are equivalent to permutations on the original type that fix pointwise the rest.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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