Permutations of Fin (n + 1)
are equivalent to fixing a single
Fin (n + 1)
and permuting the remaining with a Perm (Fin n)
.
The fixed Fin (n + 1)
is swapped with 0
.
Equations
- Equiv.Perm.decomposeFin = ((finSuccEquiv n).permCongr.trans Equiv.Perm.decomposeOption).trans ((finSuccEquiv n).symm.prodCongr (Equiv.refl (Equiv.Perm (Fin n))))
Instances For
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_of_refl
{n : ℕ}
(p : Fin (n + 1))
:
decomposeFin.symm (p, Equiv.refl (Fin n)) = swap 0 p
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_of_one
{n : ℕ}
(p : Fin (n + 1))
:
decomposeFin.symm (p, 1) = swap 0 p
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_apply_zero
{n : ℕ}
(p : Fin (n + 1))
(e : Perm (Fin n))
:
(decomposeFin.symm (p, e)) 0 = p
cycleRange
section #
Define the permutations Fin.cycleRange i
, the cycle (0 1 2 ... i)
.
theorem
finRotate_succ_eq_decomposeFin
{n : ℕ}
:
finRotate n.succ = Equiv.Perm.decomposeFin.symm (1, finRotate n)
Fin.cycleRange i
is the cycle (0 1 2 ... i)
leaving (i+1 ... (n-1))
unchanged.
Equations
- i.cycleRange = (finRotate (↑i + 1)).extendDomain (Equiv.ofLeftInverse' (⇑(Fin.castLEEmb ⋯)) (fun (x : Fin n) => ↑↑x) ⋯)
Instances For
@[simp]
theorem
Fin.succAbove_cycleRange
{n : ℕ}
(i j : Fin n)
:
i.succ.succAbove (i.cycleRange j) = (Equiv.swap 0 i.succ) j.succ
@[simp]
@[simp]
theorem
Fin.cycleRange_symm_succ
{n : ℕ}
(i : Fin (n + 1))
(j : Fin n)
:
(Equiv.symm i.cycleRange) j.succ = i.succAbove j