File tree Expand file tree Collapse file tree 3 files changed +9
-6
lines changed
Expand file tree Collapse file tree 3 files changed +9
-6
lines changed Original file line number Diff line number Diff line change @@ -23,10 +23,10 @@ Examples:
2323 -/
2424protected def finRange (n : Nat) : Array (Fin n) := ofFn fun i => i
2525
26- @[simp] theorem size_finRange {n} : (Array.finRange n).size = n := by
26+ @[simp, grind = ] theorem size_finRange {n} : (Array.finRange n).size = n := by
2727 simp [Array.finRange]
2828
29- @[simp] theorem getElem_finRange {i : Nat} (h : i < (Array.finRange n).size) :
29+ @[simp, grind = ] theorem getElem_finRange {i : Nat} (h : i < (Array.finRange n).size) :
3030 (Array.finRange n)[i] = Fin.cast size_finRange ⟨i, h⟩ := by
3131 simp [Array.finRange]
3232
@@ -49,6 +49,7 @@ theorem finRange_succ_last {n} :
4949 · simp_all
5050 omega
5151
52+ @[grind _=_]
5253theorem finRange_reverse {n} : (Array.finRange n).reverse = (Array.finRange n).map Fin.rev := by
5354 ext i h
5455 · simp
Original file line number Diff line number Diff line change @@ -23,14 +23,14 @@ Examples:
2323 -/
2424def finRange (n : Nat) : List (Fin n) := ofFn fun i => i
2525
26- @[simp] theorem length_finRange {n : Nat} : (List.finRange n).length = n := by
26+ @[simp, grind = ] theorem length_finRange {n : Nat} : (List.finRange n).length = n := by
2727 simp [List.finRange]
2828
29- @[simp] theorem getElem_finRange {i : Nat} (h : i < (List.finRange n).length) :
29+ @[simp, grind = ] theorem getElem_finRange {i : Nat} (h : i < (List.finRange n).length) :
3030 (finRange n)[i] = Fin.cast length_finRange ⟨i, h⟩ := by
3131 simp [List.finRange]
3232
33- @[simp] theorem finRange_zero : finRange 0 = [] := by simp [finRange]
33+ @[simp, grind = ] theorem finRange_zero : finRange 0 = [] := by simp [finRange]
3434
3535theorem finRange_succ {n} : finRange (n+1 ) = 0 :: (finRange n).map Fin.succ := by
3636 apply List.ext_getElem; simp; intro i; cases i <;> simp
@@ -46,6 +46,7 @@ theorem finRange_succ_last {n} :
4646 · rfl
4747 · next h => exact Fin.eq_last_of_not_lt h
4848
49+ @[grind _=_]
4950theorem finRange_reverse {n} : (finRange n).reverse = (finRange n).map Fin.rev := by
5051 induction n with
5152 | zero => simp
Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ namespace Vector
1717/-- `finRange n` is the vector of all elements of `Fin n` in order. -/
1818protected def finRange (n : Nat) : Vector (Fin n) n := ofFn fun i => i
1919
20- @[simp] theorem getElem_finRange {i : Nat} (h : i < n) :
20+ @[simp, grind = ] theorem getElem_finRange {i : Nat} (h : i < n) :
2121 (Vector.finRange n)[i] = ⟨i, h⟩ := by
2222 simp [Vector.finRange]
2323
@@ -39,6 +39,7 @@ theorem finRange_succ_last {n} :
3939 · simp_all
4040 omega
4141
42+ @[grind _=_]
4243theorem finRange_reverse {n} : (Vector.finRange n).reverse = (Vector.finRange n).map Fin.rev := by
4344 ext i h
4445 simp
You can’t perform that action at this time.
0 commit comments