@[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⟩))