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 γ)} :
@[simp]
theorem Subarray.forIn_toArray {α : Type u} {s : Subarray α} {m : Type v → Type w} [Monad m] [LawfulMonad m] {γ : Type v} {init : γ} {f : αγm (ForInStep γ)} :
ForIn.forIn (↑s) init f = ForIn.forIn s init 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
theorem Subarray.size_eq {α : Type u_1} {xs : Subarray α} :
xs.size = xs.stop - xs.start
@[simp]
theorem Subarray.toArray_toList {α : Type u_1} {xs : Subarray α} :
@[simp]
theorem Subarray.toList_toArray {α : Type u_1} {xs : Subarray α} :
@[simp]
theorem Subarray.length_toList {α : Type u_1} {xs : Subarray α} :
@[simp]
theorem Subarray.size_toArray {α : Type u_1} {xs : Subarray α} :
(↑xs).size = xs.size
@[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} :
(Std.Rco.Sliceable.mkSlice xs lo...hi) = xs.extract lo hi
@[simp]
theorem Array.size_mkSlice_rco {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rco.Sliceable.mkSlice xs lo...hi).size = min hi xs.size - lo
@[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} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi) = xs.extract lo (hi + 1)
@[simp]
theorem Array.size_mkSlice_rcc {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi).size = 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]
@[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} :
(Std.Rci.Sliceable.mkSlice xs lo...*) = xs.extract lo
@[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} :
@[simp]
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} :
(Std.Roo.Sliceable.mkSlice xs lo<...hi) = xs.extract (lo + 1) hi
@[simp]
theorem Array.size_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
(Std.Roo.Sliceable.mkSlice xs lo<...hi).size = 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
@[simp]
theorem Array.mkSlice_roc_eq_mkSlice_roo {α : Type u_1} {xs : Array α} {lo hi : Nat} :
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.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.Roc.Sliceable.mkSlice xs lo<...=hi).size = 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} :
@[simp]
theorem Array.mkSlice_roi_eq_mkSlice_rci {α : 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} :
(Std.Roi.Sliceable.mkSlice xs lo<...*) = xs.drop (lo + 1)
@[simp]
theorem Array.size_mkSlice_roi {α : Type u_1} {xs : Array α} {lo : Nat} :
(Std.Roi.Sliceable.mkSlice xs lo<...*).size = xs.size - (lo + 1)
@[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.mkSlice_rio_eq_mkSlice_rco {α : 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} :
(Std.Rio.Sliceable.mkSlice xs *...hi) = xs.extract 0 hi
@[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
@[simp]
theorem Array.mkSlice_ric_eq_mkSlice_rio {α : 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} :
(Std.Ric.Sliceable.mkSlice xs *...=hi) = xs.extract 0 (hi + 1)
@[simp]
theorem Array.size_mkSlice_ric {α : Type u_1} {xs : Array α} {hi : Nat} :
(Std.Ric.Sliceable.mkSlice xs *...=hi).size = min (hi + 1) xs.size
@[simp]
@[simp]
theorem Array.toArray_mkSlice_rii {α : Type u_1} {xs : Array α} :
(Std.Rii.Sliceable.mkSlice xs *...*) = xs
@[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]
theorem Subarray.toArray_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
(Std.Rco.Sliceable.mkSlice xs lo...hi) = (↑xs).extract lo hi
@[simp]
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} :
(Std.Rcc.Sliceable.mkSlice xs lo...=hi) = (↑xs).extract lo (hi + 1)
@[simp]
theorem Subarray.toArray_mkSlice_rci {α : Type u_1} {xs : Subarray α} {lo : Nat} :
(Std.Rci.Sliceable.mkSlice xs lo...*) = (↑xs).extract lo
@[simp]
theorem Subarray.mkSlice_roc_eq_mkSlice_roo {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[simp]
theorem Subarray.mkSlice_roo_eq_mkSlice_rco {α : Type u_1} {xs : Subarray α} {lo hi : Nat} :
@[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} :
(Std.Roo.Sliceable.mkSlice xs lo<...hi) = (↑xs).extract (lo + 1) hi
@[simp]
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} :
(Std.Roc.Sliceable.mkSlice xs lo<...=hi) = (↑xs).extract (lo + 1) (hi + 1)
@[simp]
theorem Subarray.mkSlice_roi_eq_mkSlice_rci {α : Type u_1} {xs : Subarray α} {lo : Nat} :
@[simp]
@[simp]
theorem Subarray.toArray_mkSlice_roi {α : Type u_1} {xs : Subarray α} {lo : Nat} :
(Std.Roi.Sliceable.mkSlice xs lo<...*) = (↑xs).extract (lo + 1)
@[simp]
theorem Subarray.mkSlice_ric_eq_mkSlice_rio {α : Type u_1} {xs : Subarray α} {hi : Nat} :
@[simp]
@[simp]
theorem Subarray.toArray_mkSlice_rio {α : Type u_1} {xs : Subarray α} {hi : Nat} :
(Std.Rio.Sliceable.mkSlice xs *...hi) = (↑xs).extract 0 hi
@[simp]
@[simp]
@[simp]
theorem Subarray.toArray_mkSlice_ric {α : Type u_1} {xs : Subarray α} {hi : Nat} :
(Std.Ric.Sliceable.mkSlice xs *...=hi) = (↑xs).extract 0 (hi + 1)
@[simp]
theorem Subarray.mkSlice_rii {α : Type u_1} {xs : Subarray α} :
@[simp]
theorem Subarray.toArray_mkSlice_rii {α : Type u_1} {xs : Subarray α} :
(Std.Rii.Sliceable.mkSlice xs *...*) = xs