Documentation

Init.Data.Vector.Erase

Lemmas about Vector.eraseIdx. #

eraseIdx #

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