@[simp]
cycleRange section #
Define the permutations Fin.cycleRange i, the cycle (0 1 2 ... i).
Fin.cycleRange i is the cycle (0 1 2 ... i) leaving (i+1 ... (n-1)) unchanged.
Equations
- i.cycleRange = (finRotate (↑i + 1)).extendDomain (Fin.castLEEmb ⋯).toEquivRange
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
The permutation cycleIcc #
In this section, we define the permutation cycleIcc i j, which is the cycle (i i+1 .... j)
leaving (0 ... i-1) and (j+1 ... n-1) unchanged when i ≤ j and returning the dummy value id
when i > j. In other words, it rotates elements in [i, j] one step to the right.
cycleIcc i j is the cycle (i i+1 ... j) leaving (0 ... i-1) and (j+1 ... n-1)
unchanged when i < j and returning the dummy value id when i > j.
In other words, it rotates elements in [i, j] one step to the right.
Equations
- i.cycleIcc j = if hij : i ≤ j then ((j - i).castLT ⋯).cycleRange.extendDomain (Fin.natAdd_castLEEmb ⋯).toEquivRange else 1
Instances For
@[simp]
theorem
Fin.cycleIcc_to_cycleRange
{n : ℕ}
{i j k : Fin n}
(hij : i ≤ j)
(kin : k ∈ Set.range ⇑(natAdd_castLEEmb ⋯))
:
(i.cycleIcc j) k = (natAdd_castLEEmb ⋯) (((j - i).castLT ⋯).cycleRange ((natAdd_castLEEmb ⋯).toEquivRange.symm ⟨k, kin⟩))