def
Equiv.Perm.decomposeFin
{n : ℕ}
:
Equiv.Perm (Fin (Nat.succ n)) ≃ Fin (Nat.succ n) × Equiv.Perm (Fin n)
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 = ((Equiv.permCongr (finSuccEquiv n)).trans Equiv.Perm.decomposeOption).trans (Equiv.prodCongr (finSuccEquiv n).symm (Equiv.refl (Equiv.Perm (Fin n))))
Instances For
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_of_refl
{n : ℕ}
(p : Fin (n + 1))
:
Equiv.Perm.decomposeFin.symm (p, Equiv.refl (Fin n)) = Equiv.swap 0 p
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_of_one
{n : ℕ}
(p : Fin (n + 1))
:
Equiv.Perm.decomposeFin.symm (p, 1) = Equiv.swap 0 p
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_apply_zero
{n : ℕ}
(p : Fin (n + 1))
(e : Equiv.Perm (Fin n))
:
(Equiv.Perm.decomposeFin.symm (p, e)) 0 = p
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_apply_succ
{n : ℕ}
(e : Equiv.Perm (Fin n))
(p : Fin (n + 1))
(x : Fin n)
:
(Equiv.Perm.decomposeFin.symm (p, e)) (Fin.succ x) = (Equiv.swap 0 p) (Fin.succ (e x))
@[simp]
theorem
Equiv.Perm.decomposeFin_symm_apply_one
{n : ℕ}
(e : Equiv.Perm (Fin (n + 1)))
(p : Fin (n + 2))
:
(Equiv.Perm.decomposeFin.symm (p, e)) 1 = (Equiv.swap 0 p) (Fin.succ (e 0))
@[simp]
theorem
Finset.univ_perm_fin_succ
{n : ℕ}
:
Finset.univ = Finset.map (Equiv.toEmbedding Equiv.Perm.decomposeFin.symm) Finset.univ
The set of all permutations of Fin (n + 1)
can be constructed by augmenting the set of
permutations of Fin n
by each element of Fin (n + 1)
in turn.
cycleRange
section #
Define the permutations Fin.cycleRange i
, the cycle (0 1 2 ... i)
.
@[simp]
@[simp]
Fin.cycleRange i
is the cycle (0 1 2 ... i)
leaving (i+1 ... (n-1))
unchanged.
Equations
- Fin.cycleRange i = Equiv.Perm.extendDomain (finRotate (↑i + 1)) (Equiv.ofLeftInverse' (⇑(Fin.castLEEmb ⋯).toEmbedding) (fun (x : Fin n) => ↑↑x) ⋯)
Instances For
theorem
Fin.cycleRange_of_gt
{n : ℕ}
{i : Fin (Nat.succ n)}
{j : Fin (Nat.succ n)}
(h : i < j)
:
(Fin.cycleRange i) j = j
theorem
Fin.cycleRange_of_eq
{n : ℕ}
{i : Fin (Nat.succ n)}
{j : Fin (Nat.succ n)}
(h : j = i)
:
(Fin.cycleRange i) j = 0
@[simp]
@[simp]
@[simp]
theorem
Fin.succAbove_cycleRange
{n : ℕ}
(i : Fin n)
(j : Fin n)
:
Fin.succAbove (Fin.succ i) ((Fin.cycleRange i) j) = (Equiv.swap 0 (Fin.succ i)) (Fin.succ j)
@[simp]
theorem
Fin.cycleRange_succAbove
{n : ℕ}
(i : Fin (n + 1))
(j : Fin n)
:
(Fin.cycleRange i) (Fin.succAbove i j) = Fin.succ j
@[simp]
@[simp]
theorem
Fin.cycleRange_symm_succ
{n : ℕ}
(i : Fin (n + 1))
(j : Fin n)
:
(Fin.cycleRange i).symm (Fin.succ j) = Fin.succAbove i j
@[simp]
theorem
Fin.cycleType_cycleRange
{n : ℕ}
{i : Fin (n + 1)}
(h0 : i ≠ 0)
:
Equiv.Perm.cycleType (Fin.cycleRange i) = {↑i + 1}