@@ -64,27 +64,34 @@ theorem Fin.snoc_eq_cons_rotate {α : Type*} (v : Fin n → α) (a : α) :
6464theorem finRotate_one : finRotate 1 = Equiv.refl _ :=
6565 Subsingleton.elim _ _
6666
67- @[simp] theorem finRotate_succ_apply (i : Fin (n + 1 )) : finRotate (n + 1 ) i = i + 1 := by
68- cases n
69- · exact @Subsingleton.elim (Fin 1 ) _ _ _
70- obtain rfl | h := Fin.eq_or_lt_of_le i.le_last
71- · simp [finRotate_last]
72- · cases i
73- simp only [Fin.lt_def, Fin.val_last] at h
74- simp [finRotate_of_lt h, Fin.add_def, Nat.mod_eq_of_lt (Nat.succ_lt_succ h)]
67+ @[simp]
68+ theorem finRotate_apply (i : Fin n) : haveI := i.neZero; finRotate n i = i + 1 := by
69+ match n with
70+ | 0 => exact i.elim0
71+ | 1 => exact @Subsingleton.elim (Fin 1 ) _ _ _
72+ | n + 2 =>
73+ obtain rfl | h := Fin.eq_or_lt_of_le i.le_last
74+ · simp [finRotate_last]
75+ · cases i
76+ simp only [Fin.lt_def, Fin.val_last] at h
77+ simp [finRotate_of_lt h, Fin.add_def, Nat.mod_eq_of_lt (Nat.succ_lt_succ h)]
78+
79+ @ [deprecated finRotate_apply (since := "2026-03-29" )]
80+ theorem finRotate_succ_apply (i : Fin (n + 1 )) : finRotate (n + 1 ) i = i + 1 := by
81+ simp
7582
7683theorem finRotate_apply_zero : finRotate n.succ 0 = 1 := by
7784 simp
7885
7986theorem coe_finRotate_of_ne_last {i : Fin n.succ} (h : i ≠ Fin.last n) :
8087 (finRotate (n + 1 ) i : ℕ) = i + 1 := by
81- rw [finRotate_succ_apply ]
88+ rw [finRotate_apply ]
8289 have : (i : ℕ) < n := Fin.val_lt_last h
8390 exact Fin.val_add_one_of_lt this
8491
8592theorem coe_finRotate (i : Fin n.succ) :
8693 (finRotate n.succ i : ℕ) = if i = Fin.last n then (0 : ℕ) else i + 1 := by
87- rw [finRotate_succ_apply , Fin.val_add_one i]
94+ rw [finRotate_apply , Fin.val_add_one i]
8895
8996theorem lt_finRotate_iff_ne_last (i : Fin (n + 1 )) :
9097 i < finRotate _ i ↔ i ≠ Fin.last n := by
@@ -95,14 +102,19 @@ theorem lt_finRotate_iff_ne_neg_one [NeZero n] (i : Fin n) :
95102 obtain ⟨n, rfl⟩ := exists_eq_succ_of_ne_zero (NeZero.ne n)
96103 rw [lt_finRotate_iff_ne_last, ne_eq, not_iff_not, ← Fin.neg_last, neg_neg]
97104
98- @[simp] lemma finRotate_succ_symm_apply [NeZero n] (i : Fin n) : (finRotate _).symm i = i - 1 := by
99- obtain ⟨n, rfl⟩ := exists_eq_succ_of_ne_zero (NeZero.ne n)
105+ @[simp]
106+ lemma finRotate_symm_apply (i : Fin n) : haveI := i.neZero; (finRotate _).symm i = i - 1 := by
107+ obtain ⟨n, rfl⟩ := exists_eq_succ_of_ne_zero i.pos.ne'
100108 apply (finRotate n.succ).symm_apply_eq.mpr
101- rw [finRotate_succ_apply, sub_add_cancel]
109+ rw [finRotate_apply, sub_add_cancel]
110+
111+ @ [deprecated finRotate_symm_apply (since := "2026-03-29" )]
112+ lemma finRotate_succ_symm_apply [NeZero n] (i : Fin n) : (finRotate _).symm i = i - 1 := by
113+ simp
102114
103115lemma coe_finRotate_symm_of_ne_zero [NeZero n] {i : Fin n} (hi : i ≠ 0 ) :
104116 ((finRotate _).symm i : ℕ) = i - 1 := by
105- rwa [finRotate_succ_symm_apply , Fin.val_sub_one_of_ne_zero]
117+ rwa [finRotate_symm_apply , Fin.val_sub_one_of_ne_zero]
106118
107119theorem finRotate_symm_lt_iff_ne_zero [NeZero n] (i : Fin n) :
108120 (finRotate _).symm i < i ↔ i ≠ 0 := by
@@ -128,5 +140,5 @@ lemma finCycle_eq_finRotate_iterate {k : Fin n} : finCycle k = (finRotate n)^[k.
128140 | zero => simp
129141 | succ k ih =>
130142 rw [Fin.val_eq_val, Fin.val_castSucc] at ih
131- rw [Fin.val_succ, Function.iterate_succ', Function.comp_apply, ← ih, finRotate_succ_apply ,
143+ rw [Fin.val_succ, Function.iterate_succ', Function.comp_apply, ← ih, finRotate_apply ,
132144 finCycle_apply, finCycle_apply, add_assoc, Fin.coeSucc_eq_succ]
0 commit comments