Documentation

Init.Data.Slice.Array.Lemmas

@[simp]
theorem Subarray.forIn_toList {α : Type u} {s : Subarray α} {m : Type v → Type w} [Monad m] [LawfulMonad m] {γ : Type v} {init : γ} {f : αγm (ForInStep γ)} :
theorem Subarray.forIn_eq_forIn_toList {α : Type u} {s : Subarray α} {m : Type v → Type w} [Monad m] [LawfulMonad m] {γ : Type v} {init : γ} {f : αγm (ForInStep γ)} :
@[simp]
theorem Subarray.forIn_toArray {α : Type u} {s : Subarray α} {m : Type v → Type w} [Monad m] [LawfulMonad m] {γ : Type v} {init : γ} {f : αγm (ForInStep γ)} :
theorem Subarray.sliceFoldlM_eq_foldlM {β : Type u_1} {init : β} {m : Type u_1 → Type u_2} [Monad m] {α : Type u} {s : Subarray α} {f : βαm β} :
theorem Subarray.sliceFoldl_eq_foldl {β : Type u_1} {init : β} {α : Type u} {s : Subarray α} {f : βαβ} :
theorem Subarray.foldlM_toList {a✝ : Type u_1} {init : a✝} {m : Type u_1 → Type u_2} [Monad m] {α : Type u} {s : Subarray α} {f : a✝αm a✝} [LawfulMonad m] :
theorem Subarray.foldl_toList {α✝ : Type u_1} {init : α✝} {α : Type u} {s : Subarray α} {f : α✝αα✝} :
theorem Array.toSubarray_eq_toSubarray_of_min_eq_min {α : Type u_1} {xs : Array α} {start stop stop' : Nat} (h : min stop xs.size = min stop' xs.size) :
xs.toSubarray start stop = xs.toSubarray start stop'
theorem Array.toSubarray_eq_min {α : Type u_1} {xs : Array α} {lo hi : Nat} :
xs.toSubarray lo hi = { internalRepresentation := { array := xs, start := min lo (min hi xs.size), stop := min hi xs.size, start_le_stop := , stop_le_array_size := } }
@[simp]
theorem Array.array_toSubarray {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(xs.toSubarray lo hi).array = xs
@[simp]
theorem Array.start_toSubarray {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(xs.toSubarray lo hi).start = min lo (min hi xs.size)
@[simp]
theorem Array.stop_toSubarray {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(xs.toSubarray lo hi).stop = min hi xs.size
@[simp]
theorem Subarray.size_drop {α : Type u_1} {i : Nat} {xs : Subarray α} :
@[simp]
theorem Subarray.size_take {α : Type u_1} {i : Nat} {xs : Subarray α} :
theorem Subarray.getElem_eq_getElem_array {α : Type u_1} {i : Nat} {xs : Subarray α} {h : i < Std.Slice.size xs} :
xs[i] = xs.array[xs.start + i]
theorem Subarray.getElem_toList {α : Type u_1} {i : Nat} {xs : Subarray α} {h : i < (Std.Slice.toList xs).length} :
theorem Subarray.getElem_eq_getElem_toList {α : Type u_1} {i : Nat} {xs : Subarray α} {h : i < Std.Slice.size xs} :
@[simp]
theorem Subarray.toList_drop {α : Type u_1} {n : Nat} {xs : Subarray α} :
@[simp]
theorem Subarray.toList_take {α : Type u_1} {n : Nat} {xs : Subarray α} :
@[simp]
@[simp]
@[simp]
theorem Array.array_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.start_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rco.Sliceable.mkSlice xs lo...hi).start = min lo (min hi xs.size)
@[simp]
theorem Array.stop_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
theorem Array.mkSlice_rco_eq_mkSlice_rco_min {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.toList_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.size_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.mkSlice_rcc_eq_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
theorem Array.mkSlice_rcc_eq_mkSlice_rco_min {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi) = Std.Rco.Sliceable.mkSlice xs (min lo (min (hi + 1) xs.size))...min (hi + 1) xs.size
@[simp]
theorem Array.array_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.start_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi).start = min lo (min (hi + 1) xs.size)
@[simp]
theorem Array.stop_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi).stop = min (hi + 1) xs.size
@[simp]
theorem Array.toList_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.size_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
Std.Slice.size (Std.Rcc.Sliceable.mkSlice xs lo...=hi) = min (hi + 1) xs.size - lo
@[simp]
theorem Array.array_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.start_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.stop_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.toList_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.toArray_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.size_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.array_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.start_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roo.Sliceable.mkSlice xs lo<...hi).start = min (lo + 1) (min hi xs.size)
@[simp]
theorem Array.stop_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
theorem Array.mkSlice_roo_eq_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
theorem Array.mkSlice_roo_eq_mkSlice_roo_min {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roo.Sliceable.mkSlice xs lo<...hi) = Std.Rco.Sliceable.mkSlice xs (min (lo + 1) (min hi xs.size))...min hi xs.size
@[simp]
theorem Array.toList_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.size_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
Std.Slice.size (Std.Roo.Sliceable.mkSlice xs lo<...hi) = min hi xs.size - (lo + 1)
@[simp]
theorem Array.array_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.start_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi).start = min (lo + 1) (min (hi + 1) xs.size)
@[simp]
theorem Array.stop_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi).stop = min (hi + 1) xs.size
theorem Array.mkSlice_roc_eq_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
theorem Array.mkSlice_roc_eq_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi) = Std.Rco.Sliceable.mkSlice xs (lo + 1)...hi + 1
theorem Array.mkSlice_roc_eq_mkSlice_roo_min {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi) = Std.Rco.Sliceable.mkSlice xs (min (lo + 1) (min (hi + 1) xs.size))...min (hi + 1) xs.size
@[simp]
theorem Array.toList_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
Std.Slice.toArray (Std.Roc.Sliceable.mkSlice xs lo<...=hi) = xs.extract (lo + 1) (hi + 1)
@[simp]
theorem Array.size_mkSlice_roc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
Std.Slice.size (Std.Roc.Sliceable.mkSlice xs lo<...=hi) = min (hi + 1) xs.size - (lo + 1)
@[simp]
theorem Array.array_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.start_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
(Std.Roi.Sliceable.mkSlice xs lo<...*).start = min (lo + 1) xs.size
@[simp]
theorem Array.stop_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
theorem Array.mkSlice_roi_eq_mkSlice_rci {α : Type u_1} {xs : Array α} {lo : Nat} :
theorem Array.mkSlice_roi_eq_mkSlice_rco {α : Type u_1} {xs : Array α} {lo : Nat} :
theorem Array.mkSlice_roi_eq_mkSlice_roo_min {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.toList_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.toArray_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.size_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
@[simp]
theorem Array.array_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.start_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.stop_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.toList_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.size_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.array_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.start_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.stop_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
(Std.Ric.Sliceable.mkSlice xs *...=hi).stop = min (hi + 1) xs.size
theorem Array.mkSlice_ric_eq_mkSlice_rio {α : Type u_1} {xs : Array α} {hi : Nat} :
theorem Array.mkSlice_ric_eq_mkSlice_rco {α : Type u_1} {xs : Array α} {hi : Nat} :
theorem Array.mkSlice_ric_eq_mkSlice_rio_min {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.toList_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.toArray_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
theorem Array.size_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
@[simp]
@[simp]
@[simp]
theorem Array.size_mkSlice_rii {α : Type u_1} {xs : Array α} :
@[simp]
theorem Array.array_mkSlice_rii {α : Type u_1} {xs : Array α} :
@[simp]
theorem Array.start_mkSlice_rii {α : Type u_1} {xs : Array α} :
@[simp]
theorem Array.stop_mkSlice_rii {α : Type u_1} {xs : Array α} :
@[simp]
@[simp]
@[simp]
theorem Subarray.size_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
theorem Subarray.mkSlice_rcc_eq_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.toList_mkSlice_rcc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.toArray_mkSlice_rcc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.size_mkSlice_rcc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.mkSlice_roc_eq_mkSlice_roo {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
theorem Subarray.mkSlice_roo_eq_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
theorem Subarray.mkSlice_roc_eq_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi) = Std.Rco.Sliceable.mkSlice xs (lo + 1)...hi + 1
@[simp]
theorem Subarray.toList_mkSlice_roo {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.toArray_mkSlice_roo {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.size_mkSlice_roo {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
theorem Subarray.mkSlice_roc_eq_mkSlice_rcc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.toList_mkSlice_roc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.toArray_mkSlice_roc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.size_mkSlice_roc {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
Std.Slice.size (Std.Roc.Sliceable.mkSlice xs lo<...=hi) = min (hi + 1) (Std.Slice.size xs) - (lo + 1)
@[simp]
@[simp]
@[simp]
theorem Subarray.size_mkSlice_roi {α : Type u_1} {xs : Subarray α} {lo : Nat} :
@[simp]
theorem Subarray.size_mkSlice_rio {α : Type u_1} {xs : Subarray α} {hi : Nat} :
@[simp]
@[simp]
@[simp]
theorem Subarray.size_mkSlice_ric {α : Type u_1} {xs : Subarray α} {hi : Nat} :
@[simp]
theorem Subarray.mkSlice_rii {α : Type u_1} {xs : Subarray α} :