Documentation

Init.Data.Vector.Erase

Lemmas about Vector.eraseIdx. #

eraseIdx #

theorem Vector.eraseIdx_eq_take_drop_succ {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (h : i < n) :
xs.eraseIdx i h = Vector.cast (xs.take i ++ xs.drop (i + 1))
theorem Vector.getElem?_eraseIdx {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (h : i < n) (j : Nat) :
(xs.eraseIdx i h)[j]? = if j < i then xs[j]? else xs[j + 1]?
theorem Vector.getElem?_eraseIdx_of_lt {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (h : i < n) (j : Nat) (h' : j < i) :
(xs.eraseIdx i h)[j]? = xs[j]?
theorem Vector.getElem?_eraseIdx_of_ge {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (h : i < n) (j : Nat) (h' : i j) :
(xs.eraseIdx i h)[j]? = xs[j + 1]?
theorem Vector.getElem_eraseIdx {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (h : i < n) (j : Nat) (h' : j < n - 1) :
(xs.eraseIdx i h)[j] = if h'' : j < i then xs[j] else xs[j + 1]
theorem Vector.mem_of_mem_eraseIdx {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {h : i < n} {a : α} :
a xs.eraseIdx i ha xs
theorem Vector.eraseIdx_append_of_lt_size {α : Type u_1} {n : Nat} {xs : Vector α n} {k : Nat} (hk : k < n) (xs' : Vector α n) (h : k < n + n) :
(xs ++ xs').eraseIdx k h = Vector.cast (xs.eraseIdx k hk ++ xs')
theorem Vector.eraseIdx_append_of_length_le {α : Type u_1} {n : Nat} {xs : Vector α n} {k : Nat} (hk : n k) (xs' : Vector α n) (h : k < n + n) :
(xs ++ xs').eraseIdx k h = Vector.cast (xs ++ xs'.eraseIdx (k - n) )
theorem Vector.eraseIdx_cast {α : Type u_1} {n m : Nat} {w : n = m} {xs : Vector α n} {k : Nat} (h : k < m) :
(Vector.cast w xs).eraseIdx k h = Vector.cast (xs.eraseIdx k )
theorem Vector.eraseIdx_mkVector {α : Type u_1} {n : Nat} {a : α} {k : Nat} {h : k < n} :
(mkVector n a).eraseIdx k h = mkVector (n - 1) a
theorem Vector.mem_eraseIdx_iff_getElem {α : Type u_1} {n : Nat} {x : α} {xs : Vector α n} {k : Nat} {h : k < n} :
x xs.eraseIdx k h (i : Nat), (w : i < n), i k xs[i] = x
theorem Vector.mem_eraseIdx_iff_getElem? {α : Type u_1} {n : Nat} {x : α} {xs : Vector α n} {k : Nat} {h : k < n} :
x xs.eraseIdx k h (i : Nat), i k xs[i]? = some x
theorem Vector.getElem_eraseIdx_of_lt {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (w : i < n) (j : Nat) (h : j < n - 1) (h' : j < i) :
(xs.eraseIdx i w)[j] = xs[j]
theorem Vector.getElem_eraseIdx_of_ge {α : Type u_1} {n : Nat} (xs : Vector α n) (i : Nat) (w : i < n) (j : Nat) (h : j < n - 1) (h' : i j) :
(xs.eraseIdx i w)[j] = xs[j + 1]
theorem Vector.eraseIdx_set_eq {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {a : α} {h : i < n} :
(xs.set i a h).eraseIdx i h = xs.eraseIdx i h
theorem Vector.eraseIdx_set_lt {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {w : i < n} {j : Nat} {a : α} (h : j < i) :
(xs.set i a w).eraseIdx j = (xs.eraseIdx j ).set (i - 1) a
theorem Vector.eraseIdx_set_gt {α : Type u_1} {n : Nat} {xs : Vector α n} {i j : Nat} {a : α} (h : i < j) {w : j < n} :
(xs.set i a ).eraseIdx j w = (xs.eraseIdx j w).set i a
@[simp]
theorem Vector.set_getElem_succ_eraseIdx_succ {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} (h : i + 1 < n) :
(xs.eraseIdx (i + 1) h).set i xs[i + 1] = xs.eraseIdx i