File tree 1 file changed +23
-0
lines changed
1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -71,5 +71,28 @@ theorem umodifyF_eq_modifyF [Functor f] (a : DArray n α) (i : USize) (h : i.toN
71
71
theorem umodify_eq_modify (a : DArray n α) (i : USize) (h : i.toNat < n)
72
72
(t : α ⟨i.toNat, h⟩ → α ⟨i.toNat, h⟩) : a.umodify i h t = a.modify ⟨i.toNat, h⟩ t := rfl
73
73
74
+ theorem foldlM_eq_fin_foldlM [Monad m] (a : DArray n α) (f : β → {i : Fin n} → α i → m β) (init) :
75
+ a.foldlM f init = Fin.foldlM n (f · <| a.get ·) init := rfl
76
+
77
+ theorem foldl_eq_foldlM (a : DArray n α) (f : β → {i : Fin n} → α i → β) (init) :
78
+ a.foldl f init = a.foldlM (m:=Id) f init := rfl
79
+
80
+ theorem foldrM_eq_fin_foldrM [Monad m] (a : DArray n α) (f : {i : Fin n} → α i → β → m β) (init) :
81
+ a.foldrM f init = Fin.foldrM n (f <| a.get ·) init := rfl
82
+
83
+ theorem foldr_eq_foldrM (a : DArray n α) (f : {i : Fin n} → α i → β → β) (init) :
84
+ a.foldr f init = a.foldrM (m:=Id) f init := rfl
85
+
74
86
@[simp]
75
87
theorem copy_eq (a : DArray n α) : a.copy = a := rfl
88
+
89
+ theorem get_map {β : Fin n → Type _} (f : {i : Fin n} → α i → β i) (a : DArray n α) (i : Fin n) :
90
+ (a.map f).get i = f (a.get i) := rfl
91
+
92
+ @[simp]
93
+ theorem size_amap (f : {i : Fin n} → α i → β) (a : DArray n α) :
94
+ (a.amap f).size = n := Array.size_ofFn ..
95
+
96
+ theorem getElem_amap (f : {i : Fin n} → α i → β) (a : DArray n α) (i : Fin n)
97
+ (h : i.val < (a.amap f).size := (a.size_amap f).symm ▸ i.is_lt) :
98
+ (a.amap f)[i] = f (a.get i) := by simp [amap]
You can’t perform that action at this time.
0 commit comments