Documentation
Init
.
Data
.
Array
.
Erase
Search
return to top
source
Imports
Init.Data.Array.Lemmas
Init.Data.List.Nat.Basic
Init.Data.List.Nat.Erase
Imported by
Array
.
eraseP_empty
Array
.
eraseP_of_forall_mem_not
Array
.
eraseP_of_forall_getElem_not
Array
.
eraseP_eq_empty_iff
Array
.
eraseP_ne_empty_iff
Array
.
exists_of_eraseP
Array
.
exists_or_eq_self_of_eraseP
Array
.
size_eraseP_of_mem
Array
.
size_eraseP
Array
.
size_eraseP_le
Array
.
le_size_eraseP
Array
.
mem_of_mem_eraseP
Array
.
mem_eraseP_of_neg
Array
.
eraseP_eq_self_iff
Array
.
eraseP_map
Array
.
eraseP_filterMap
Array
.
eraseP_filter
Array
.
eraseP_append_left
Array
.
eraseP_append_right
Array
.
eraseP_append
Array
.
eraseP_mkArray
Array
.
eraseP_mkArray_of_pos
Array
.
eraseP_mkArray_of_neg
Array
.
eraseP_eq_iff
Array
.
eraseP_comm
Array
.
erase_of_not_mem
Array
.
erase_eq_eraseP'
Array
.
erase_eq_eraseP
Array
.
erase_eq_empty_iff
Array
.
erase_ne_empty_iff
Array
.
exists_erase_eq
Array
.
size_erase_of_mem
Array
.
size_erase
Array
.
size_erase_le
Array
.
le_size_erase
Array
.
mem_of_mem_erase
Array
.
mem_erase_of_ne
Array
.
erase_eq_self_iff
Array
.
erase_filter
Array
.
erase_append_left
Array
.
erase_append_right
Array
.
erase_append
Array
.
erase_mkArray
Array
.
erase_comm
Array
.
erase_eq_iff
Array
.
erase_mkArray_self
Array
.
erase_mkArray_ne
Array
.
eraseIdx_eq_take_drop_succ
Array
.
getElem?_eraseIdx
Array
.
getElem?_eraseIdx_of_lt
Array
.
getElem?_eraseIdx_of_ge
Array
.
getElem_eraseIdx
Array
.
eraseIdx_eq_empty_iff
Array
.
eraseIdx_ne_empty_iff
Array
.
mem_of_mem_eraseIdx
Array
.
eraseIdx_append_of_lt_size
Array
.
eraseIdx_append_of_length_le
Array
.
eraseIdx_mkArray
Array
.
mem_eraseIdx_iff_getElem
Array
.
mem_eraseIdx_iff_getElem?
Array
.
erase_eq_eraseIdx_of_idxOf
Array
.
getElem_eraseIdx_of_lt
Array
.
getElem_eraseIdx_of_ge
Array
.
eraseIdx_set_eq
Array
.
eraseIdx_set_lt
Array
.
eraseIdx_set_gt
Array
.
set_getElem_succ_eraseIdx_succ
Lemmas about
Array.eraseP
,
Array.erase
, and
Array.eraseIdx
.
#
eraseP
#
source
@[simp]
theorem
Array
.
eraseP_empty
{α✝ :
Type
u_1}
{p :
α✝
→
Bool
}
:
#[
]
.
eraseP
p
=
#[
]
source
theorem
Array
.
eraseP_of_forall_mem_not
{α :
Type
u_1}
{p :
α
→
Bool
}
{l :
Array
α
}
(h :
∀ (
a
:
α
),
a
∈
l
→
¬
p
a
=
true
)
:
l
.
eraseP
p
=
l
source
theorem
Array
.
eraseP_of_forall_getElem_not
{α :
Type
u_1}
{p :
α
→
Bool
}
{l :
Array
α
}
(h :
∀ (
i
:
Nat
) (
h
:
i
<
l
.
size
),
¬
p
l
[
i
]
=
true
)
:
l
.
eraseP
p
=
l
source
@[simp]
theorem
Array
.
eraseP_eq_empty_iff
{α :
Type
u_1}
{xs :
Array
α
}
{p :
α
→
Bool
}
:
xs
.
eraseP
p
=
#[
]
↔
xs
=
#[
]
∨
∃
(
x
:
α
)
,
p
x
=
true
∧
xs
=
#[
x
]
source
theorem
Array
.
eraseP_ne_empty_iff
{α :
Type
u_1}
{xs :
Array
α
}
{p :
α
→
Bool
}
:
xs
.
eraseP
p
≠
#[
]
↔
xs
≠
#[
]
∧
∀ (
x
:
α
),
p
x
=
true
→
xs
≠
#[
x
]
source
theorem
Array
.
exists_of_eraseP
{α :
Type
u_1}
{p :
α
→
Bool
}
{l :
Array
α
}
{a :
α
}
(hm :
a
∈
l
)
(hp :
p
a
=
true
)
:
∃
(
a
:
α
)
,
∃
(
l₁
:
Array
α
)
,
∃
(
l₂
:
Array
α
)
,
(∀ (
b
:
α
),
b
∈
l₁
→
¬
p
b
=
true
)
∧
p
a
=
true
∧
l
=
l₁
.
push
a
++
l₂
∧
l
.
eraseP
p
=
l₁
++
l₂
source
theorem
Array
.
exists_or_eq_self_of_eraseP
{α :
Type
u_1}
(p :
α
→
Bool
)
(l :
Array
α
)
:
l
.
eraseP
p
=
l
∨
∃
(
a
:
α
)
,
∃
(
l₁
:
Array
α
)
,
∃
(
l₂
:
Array
α
)
,
(∀ (
b
:
α
),
b
∈
l₁
→
¬
p
b
=
true
)
∧
p
a
=
true
∧
l
=
l₁
.
push
a
++
l₂
∧
l
.
eraseP
p
=
l₁
++
l₂
source
@[simp]
theorem
Array
.
size_eraseP_of_mem
{α :
Type
u_1}
{a :
α
}
{p :
α
→
Bool
}
{l :
Array
α
}
(al :
a
∈
l
)
(pa :
p
a
=
true
)
:
(
l
.
eraseP
p
)
.
size
=
l
.
size
-
1
source
theorem
Array
.
size_eraseP
{α :
Type
u_1}
{p :
α
→
Bool
}
{l :
Array
α
}
:
(
l
.
eraseP
p
)
.
size
=
if
l
.
any
p
=
true
then
l
.
size
-
1
else
l
.
size
source
theorem
Array
.
size_eraseP_le
{α :
Type
u_1}
{p :
α
→
Bool
}
(l :
Array
α
)
:
(
l
.
eraseP
p
)
.
size
≤
l
.
size
source
theorem
Array
.
le_size_eraseP
{α :
Type
u_1}
{p :
α
→
Bool
}
(l :
Array
α
)
:
l
.
size
-
1
≤
(
l
.
eraseP
p
)
.
size
source
theorem
Array
.
mem_of_mem_eraseP
{α :
Type
u_1}
{p :
α
→
Bool
}
{a :
α
}
{l :
Array
α
}
:
a
∈
l
.
eraseP
p
→
a
∈
l
source
@[simp]
theorem
Array
.
mem_eraseP_of_neg
{α :
Type
u_1}
{p :
α
→
Bool
}
{a :
α
}
{l :
Array
α
}
(pa :
¬
p
a
=
true
)
:
a
∈
l
.
eraseP
p
↔
a
∈
l
source
@[simp]
theorem
Array
.
eraseP_eq_self_iff
{α :
Type
u_1}
{p :
α
→
Bool
}
{l :
Array
α
}
:
l
.
eraseP
p
=
l
↔
∀ (
a
:
α
),
a
∈
l
→
¬
p
a
=
true
source
theorem
Array
.
eraseP_map
{β :
Type
u_1}
{α :
Type
u_2}
{p :
α
→
Bool
}
(f :
β
→
α
)
(l :
Array
β
)
:
(
map
f
l
)
.
eraseP
p
=
map
f
(
l
.
eraseP
(
p
∘
f
))
source
theorem
Array
.
eraseP_filterMap
{α :
Type
u_1}
{β :
Type
u_2}
{p :
β
→
Bool
}
(f :
α
→
Option
β
)
(l :
Array
α
)
:
(
filterMap
f
l
)
.
eraseP
p
=
filterMap
f
(
l
.
eraseP
fun (
x
:
α
) =>
match
f
x
with |
some
y
=>
p
y
|
none
=>
false
)
source
theorem
Array
.
eraseP_filter
{α :
Type
u_1}
{p :
α
→
Bool
}
(f :
α
→
Bool
)
(l :
Array
α
)
:
(
filter
f
l
)
.
eraseP
p
=
filter
f
(
l
.
eraseP
fun (
x
:
α
) =>
p
x
&&
f
x
)
source
theorem
Array
.
eraseP_append_left
{α :
Type
u_1}
{p :
α
→
Bool
}
{a :
α
}
(pa :
p
a
=
true
)
{l₁ :
Array
α
}
(l₂ :
Array
α
)
(h :
a
∈
l₁
)
:
(
l₁
++
l₂
).
eraseP
p
=
l₁
.
eraseP
p
++
l₂
source
theorem
Array
.
eraseP_append_right
{α :
Type
u_1}
{p :
α
→
Bool
}
{l₁ :
Array
α
}
(l₂ :
Array
α
)
(h :
∀ (
b
:
α
),
b
∈
l₁
→
¬
p
b
=
true
)
:
(
l₁
++
l₂
).
eraseP
p
=
l₁
++
l₂
.
eraseP
p
source
theorem
Array
.
eraseP_append
{α :
Type
u_1}
{p :
α
→
Bool
}
(l₁ l₂ :
Array
α
)
:
(
l₁
++
l₂
).
eraseP
p
=
if
l₁
.
any
p
=
true
then
l₁
.
eraseP
p
++
l₂
else
l₁
++
l₂
.
eraseP
p
source
theorem
Array
.
eraseP_mkArray
{α :
Type
u_1}
(n :
Nat
)
(a :
α
)
(p :
α
→
Bool
)
:
(
mkArray
n
a
)
.
eraseP
p
=
if
p
a
=
true
then
mkArray
(
n
-
1
)
a
else
mkArray
n
a
source
@[simp]
theorem
Array
.
eraseP_mkArray_of_pos
{α :
Type
u_1}
{p :
α
→
Bool
}
{n :
Nat
}
{a :
α
}
(h :
p
a
=
true
)
:
(
mkArray
n
a
)
.
eraseP
p
=
mkArray
(
n
-
1
)
a
source
@[simp]
theorem
Array
.
eraseP_mkArray_of_neg
{α :
Type
u_1}
{p :
α
→
Bool
}
{n :
Nat
}
{a :
α
}
(h :
¬
p
a
=
true
)
:
(
mkArray
n
a
)
.
eraseP
p
=
mkArray
n
a
source
theorem
Array
.
eraseP_eq_iff
{α :
Type
u_1}
{l' :
Array
α
}
{p :
α
→
Bool
}
{l :
Array
α
}
:
l
.
eraseP
p
=
l'
↔
(∀ (
a
:
α
),
a
∈
l
→
¬
p
a
=
true
)
∧
l
=
l'
∨
∃
(
a
:
α
)
,
∃
(
l₁
:
Array
α
)
,
∃
(
l₂
:
Array
α
)
,
(∀ (
b
:
α
),
b
∈
l₁
→
¬
p
b
=
true
)
∧
p
a
=
true
∧
l
=
l₁
.
push
a
++
l₂
∧
l'
=
l₁
++
l₂
source
theorem
Array
.
eraseP_comm
{α :
Type
u_1}
{p q :
α
→
Bool
}
{l :
Array
α
}
(h :
∀ (
a
:
α
),
a
∈
l
→
¬
p
a
=
true
∨
¬
q
a
=
true
)
:
(
l
.
eraseP
p
)
.
eraseP
q
=
(
l
.
eraseP
q
)
.
eraseP
p
erase
#
source
theorem
Array
.
erase_of_not_mem
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a :
α
}
{l :
Array
α
}
(h :
¬
a
∈
l
)
:
l
.
erase
a
=
l
source
theorem
Array
.
erase_eq_eraseP'
{α :
Type
u_1}
[
BEq
α
]
(a :
α
)
(l :
Array
α
)
:
l
.
erase
a
=
l
.
eraseP
fun (
x
:
α
) =>
x
==
a
source
theorem
Array
.
erase_eq_eraseP
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(a :
α
)
(l :
Array
α
)
:
l
.
erase
a
=
l
.
eraseP
fun (
x
:
α
) =>
a
==
x
source
@[simp]
theorem
Array
.
erase_eq_empty_iff
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{xs :
Array
α
}
{a :
α
}
:
xs
.
erase
a
=
#[
]
↔
xs
=
#[
]
∨
xs
=
#[
a
]
source
theorem
Array
.
erase_ne_empty_iff
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{xs :
Array
α
}
{a :
α
}
:
xs
.
erase
a
≠
#[
]
↔
xs
≠
#[
]
∧
xs
≠
#[
a
]
source
theorem
Array
.
exists_erase_eq
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a :
α
}
{l :
Array
α
}
(h :
a
∈
l
)
:
∃
(
l₁
:
Array
α
)
,
∃
(
l₂
:
Array
α
)
,
¬
a
∈
l₁
∧
l
=
l₁
.
push
a
++
l₂
∧
l
.
erase
a
=
l₁
++
l₂
source
@[simp]
theorem
Array
.
size_erase_of_mem
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a :
α
}
{l :
Array
α
}
(h :
a
∈
l
)
:
(
l
.
erase
a
)
.
size
=
l
.
size
-
1
source
theorem
Array
.
size_erase
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(a :
α
)
(l :
Array
α
)
:
(
l
.
erase
a
)
.
size
=
if
a
∈
l
then
l
.
size
-
1
else
l
.
size
source
theorem
Array
.
size_erase_le
{α :
Type
u_1}
[
BEq
α
]
(a :
α
)
(l :
Array
α
)
:
(
l
.
erase
a
)
.
size
≤
l
.
size
source
theorem
Array
.
le_size_erase
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(a :
α
)
(l :
Array
α
)
:
l
.
size
-
1
≤
(
l
.
erase
a
)
.
size
source
theorem
Array
.
mem_of_mem_erase
{α :
Type
u_1}
[
BEq
α
]
{a b :
α
}
{l :
Array
α
}
(h :
a
∈
l
.
erase
b
)
:
a
∈
l
source
@[simp]
theorem
Array
.
mem_erase_of_ne
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a b :
α
}
{l :
Array
α
}
(ab :
a
≠
b
)
:
a
∈
l
.
erase
b
↔
a
∈
l
source
@[simp]
theorem
Array
.
erase_eq_self_iff
{α :
Type
u_1}
[
BEq
α
]
{a :
α
}
[
LawfulBEq
α
]
{l :
Array
α
}
:
l
.
erase
a
=
l
↔
¬
a
∈
l
source
theorem
Array
.
erase_filter
{α :
Type
u_1}
[
BEq
α
]
{a :
α
}
[
LawfulBEq
α
]
(f :
α
→
Bool
)
(l :
Array
α
)
:
(
filter
f
l
)
.
erase
a
=
filter
f
(
l
.
erase
a
)
source
theorem
Array
.
erase_append_left
{α :
Type
u_1}
[
BEq
α
]
{a :
α
}
[
LawfulBEq
α
]
{l₁ :
Array
α
}
(l₂ :
Array
α
)
(h :
a
∈
l₁
)
:
(
l₁
++
l₂
).
erase
a
=
l₁
.
erase
a
++
l₂
source
theorem
Array
.
erase_append_right
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a :
α
}
{l₁ :
Array
α
}
(l₂ :
Array
α
)
(h :
¬
a
∈
l₁
)
:
(
l₁
++
l₂
).
erase
a
=
l₁
++
l₂
.
erase
a
source
theorem
Array
.
erase_append
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
{a :
α
}
{l₁ l₂ :
Array
α
}
:
(
l₁
++
l₂
).
erase
a
=
if
a
∈
l₁
then
l₁
.
erase
a
++
l₂
else
l₁
++
l₂
.
erase
a
source
theorem
Array
.
erase_mkArray
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(n :
Nat
)
(a b :
α
)
:
(
mkArray
n
a
)
.
erase
b
=
if
(
b
==
a
)
=
true
then
mkArray
(
n
-
1
)
a
else
mkArray
n
a
source
theorem
Array
.
erase_comm
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(a b :
α
)
(l :
Array
α
)
:
(
l
.
erase
a
)
.
erase
b
=
(
l
.
erase
b
)
.
erase
a
source
theorem
Array
.
erase_eq_iff
{α :
Type
u_1}
[
BEq
α
]
{l' :
Array
α
}
[
LawfulBEq
α
]
{a :
α
}
{l :
Array
α
}
:
l
.
erase
a
=
l'
↔
¬
a
∈
l
∧
l
=
l'
∨
∃
(
l₁
:
Array
α
)
,
∃
(
l₂
:
Array
α
)
,
¬
a
∈
l₁
∧
l
=
l₁
.
push
a
++
l₂
∧
l'
=
l₁
++
l₂
source
@[simp]
theorem
Array
.
erase_mkArray_self
{α :
Type
u_1}
[
BEq
α
]
{n :
Nat
}
[
LawfulBEq
α
]
{a :
α
}
:
(
mkArray
n
a
)
.
erase
a
=
mkArray
(
n
-
1
)
a
source
@[simp]
theorem
Array
.
erase_mkArray_ne
{α :
Type
u_1}
[
BEq
α
]
{n :
Nat
}
[
LawfulBEq
α
]
{a b :
α
}
(h : (
!
b
==
a
)
=
true
)
:
(
mkArray
n
a
)
.
erase
b
=
mkArray
n
a
eraseIdx
#
source
theorem
Array
.
eraseIdx_eq_take_drop_succ
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(h :
i
<
l
.
size
)
:
l
.
eraseIdx
i
h
=
l
.
take
i
++
l
.
drop
(
i
+
1
)
source
theorem
Array
.
getElem?_eraseIdx
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(h :
i
<
l
.
size
)
(j :
Nat
)
:
(
l
.
eraseIdx
i
h
)
[
j
]
?
=
if
j
<
i
then
l
[
j
]
?
else
l
[
j
+
1
]
?
source
theorem
Array
.
getElem?_eraseIdx_of_lt
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(h :
i
<
l
.
size
)
(j :
Nat
)
(h' :
j
<
i
)
:
(
l
.
eraseIdx
i
h
)
[
j
]
?
=
l
[
j
]
?
source
theorem
Array
.
getElem?_eraseIdx_of_ge
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(h :
i
<
l
.
size
)
(j :
Nat
)
(h' :
i
≤
j
)
:
(
l
.
eraseIdx
i
h
)
[
j
]
?
=
l
[
j
+
1
]
?
source
theorem
Array
.
getElem_eraseIdx
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(h :
i
<
l
.
size
)
(j :
Nat
)
(h' :
j
<
(
l
.
eraseIdx
i
h
)
.
size
)
:
(
l
.
eraseIdx
i
h
)
[
j
]
=
if h'' :
j
<
i
then
l
[
j
]
else
l
[
j
+
1
]
source
@[simp]
theorem
Array
.
eraseIdx_eq_empty_iff
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
{h :
i
<
l
.
size
}
:
l
.
eraseIdx
i
h
=
#[
]
↔
l
.
size
=
1
∧
i
=
0
source
theorem
Array
.
eraseIdx_ne_empty_iff
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
{h :
i
<
l
.
size
}
:
l
.
eraseIdx
i
h
≠
#[
]
↔
2
≤
l
.
size
source
theorem
Array
.
mem_of_mem_eraseIdx
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
{h :
i
<
l
.
size
}
{a :
α
}
:
a
∈
l
.
eraseIdx
i
h
→
a
∈
l
source
theorem
Array
.
eraseIdx_append_of_lt_size
{α :
Type
u_1}
{l :
Array
α
}
{k :
Nat
}
(hk :
k
<
l
.
size
)
(l' :
Array
α
)
(h :
k
<
(
l
++
l'
).
size
)
:
(
l
++
l'
).
eraseIdx
k
h
=
l
.
eraseIdx
k
hk
++
l'
source
theorem
Array
.
eraseIdx_append_of_length_le
{α :
Type
u_1}
{l :
Array
α
}
{k :
Nat
}
(hk :
l
.
size
≤
k
)
(l' :
Array
α
)
(h :
k
<
(
l
++
l'
).
size
)
:
(
l
++
l'
).
eraseIdx
k
h
=
l
++
l'
.
eraseIdx
(
k
-
l
.
size
)
⋯
source
theorem
Array
.
eraseIdx_mkArray
{α :
Type
u_1}
{n :
Nat
}
{a :
α
}
{k :
Nat
}
{h :
k
<
(
mkArray
n
a
)
.
size
}
:
(
mkArray
n
a
)
.
eraseIdx
k
h
=
mkArray
(
n
-
1
)
a
source
theorem
Array
.
mem_eraseIdx_iff_getElem
{α :
Type
u_1}
{x :
α
}
{l :
Array
α
}
{k :
Nat
}
{h :
k
<
l
.
size
}
:
x
∈
l
.
eraseIdx
k
h
↔
∃
(
i
:
Nat
)
,
∃
(
w
:
i
<
l
.
size
)
,
i
≠
k
∧
l
[
i
]
=
x
source
theorem
Array
.
mem_eraseIdx_iff_getElem?
{α :
Type
u_1}
{x :
α
}
{l :
Array
α
}
{k :
Nat
}
{h :
k
<
l
.
size
}
:
x
∈
l
.
eraseIdx
k
h
↔
∃
(
i
:
Nat
)
,
i
≠
k
∧
l
[
i
]
?
=
some
x
source
theorem
Array
.
erase_eq_eraseIdx_of_idxOf
{α :
Type
u_1}
[
BEq
α
]
[
LawfulBEq
α
]
(l :
Array
α
)
(a :
α
)
(i :
Nat
)
(w :
idxOf
a
l
=
i
)
(h :
i
<
l
.
size
)
:
l
.
erase
a
=
l
.
eraseIdx
i
h
source
theorem
Array
.
getElem_eraseIdx_of_lt
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(w :
i
<
l
.
size
)
(j :
Nat
)
(h :
j
<
(
l
.
eraseIdx
i
w
)
.
size
)
(h' :
j
<
i
)
:
(
l
.
eraseIdx
i
w
)
[
j
]
=
l
[
j
]
source
theorem
Array
.
getElem_eraseIdx_of_ge
{α :
Type
u_1}
(l :
Array
α
)
(i :
Nat
)
(w :
i
<
l
.
size
)
(j :
Nat
)
(h :
j
<
(
l
.
eraseIdx
i
w
)
.
size
)
(h' :
i
≤
j
)
:
(
l
.
eraseIdx
i
w
)
[
j
]
=
l
[
j
+
1
]
source
theorem
Array
.
eraseIdx_set_eq
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
{a :
α
}
{h :
i
<
l
.
size
}
:
(
l
.
set
i
a
h
)
.
eraseIdx
i
⋯
=
l
.
eraseIdx
i
h
source
theorem
Array
.
eraseIdx_set_lt
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
{w :
i
<
l
.
size
}
{j :
Nat
}
{a :
α
}
(h :
j
<
i
)
:
(
l
.
set
i
a
w
)
.
eraseIdx
j
⋯
=
(
l
.
eraseIdx
j
⋯
)
.
set
(
i
-
1
)
a
⋯
source
theorem
Array
.
eraseIdx_set_gt
{α :
Type
u_1}
{l :
Array
α
}
{i j :
Nat
}
{a :
α
}
(h :
i
<
j
)
{w :
j
<
l
.
size
}
:
(
l
.
set
i
a
⋯
)
.
eraseIdx
j
⋯
=
(
l
.
eraseIdx
j
w
)
.
set
i
a
⋯
source
@[simp]
theorem
Array
.
set_getElem_succ_eraseIdx_succ
{α :
Type
u_1}
{l :
Array
α
}
{i :
Nat
}
(h :
i
+
1
<
l
.
size
)
:
(
l
.
eraseIdx
(
i
+
1
)
h
)
.
set
i
l
[
i
+
1
]
⋯
=
l
.
eraseIdx
i
⋯