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_append {α : Type u_1} {n m : Nat} {xs : Vector α n} {ys : Vector α m} {k : Nat} (h : k < n + m) :
(xs ++ ys).eraseIdx k h = if h' : k < n then Vector.cast (xs.eraseIdx k h' ++ ys) else Vector.cast (xs ++ ys.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_replicate {α : Type u_1} {n : Nat} {a : α} {k : Nat} {h : k < n} :
(replicate n a).eraseIdx k h = replicate (n - 1) a
@[reducible, inline, deprecated Vector.eraseIdx_replicate (since := "2025-03-18")]
abbrev Vector.eraseIdx_mkVector {α : Type u_1} {n : Nat} {a : α} {k : Nat} {h : k < n} :
(replicate n a).eraseIdx k h = replicate (n - 1) a
Equations
Instances For
    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
    theorem Vector.eraseIdx_set {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {a : α} {hi : i < n} {j : Nat} {hj : j < n} :
    (xs.set i a hi).eraseIdx j hj = if h' : j < i then (xs.eraseIdx j hj).set (i - 1) a else if h'' : j = i then xs.eraseIdx i hi else (xs.eraseIdx j hj).set i a
    theorem Vector.set_eraseIdx_le {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {w : i < n} {j : Nat} {a : α} (h : i j) (hj : j < n - 1) :
    (xs.eraseIdx i w).set j a hj = (xs.set (j + 1) a ).eraseIdx i w
    theorem Vector.set_eraseIdx_gt {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {w : i < n} {j : Nat} {a : α} (h : j < i) (hj : j < n - 1) :
    (xs.eraseIdx i w).set j a hj = (xs.set j a ).eraseIdx i w
    theorem Vector.set_eraseIdx {α : Type u_1} {n : Nat} {xs : Vector α n} {i : Nat} {w : i < n} {j : Nat} {a : α} (hj : j < n - 1) :
    (xs.eraseIdx i w).set j a hj = if h' : i j then (xs.set (j + 1) a ).eraseIdx i w else (xs.set j a ).eraseIdx i w
    @[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