Skip to content

Commit 426d6bc

Browse files
committed
refactor: replace Array.eraseIdx' with Array.size_feraseIdx
`Array.eraseIdx'` which was just `Array.feraseIdx` wrapped in a subtype. `Array.size_feraseIdx` proves the property as a standalone theorem.
1 parent b49f1e1 commit 426d6bc

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

src/Init/Data/Array/Basic.lean

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -760,9 +760,6 @@ theorem size_feraseIdx (a : Array α) (i : Fin a.size) : (a.feraseIdx i).size =
760760
def eraseIdx (a : Array α) (i : Nat) : Array α :=
761761
if h : i < a.size then a.feraseIdx ⟨i, h⟩ else a
762762

763-
def eraseIdx' (a : Array α) (i : Fin a.size) : { r : Array α // r.size = a.size - 1 } :=
764-
⟨a.feraseIdx i, size_feraseIdx a i⟩
765-
766763
def erase [BEq α] (as : Array α) (a : α) : Array α :=
767764
match as.indexOf? a with
768765
| none => as

src/Lean/Data/PersistentHashMap.lean

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,10 @@ partial def eraseAux [BEq α] : Node α β → USize → α → Node α β × Bo
226226
| n@(Node.collision keys vals heq), _, k =>
227227
match keys.indexOf? k with
228228
| some idx =>
229-
let ⟨keys', keq⟩ := keys.eraseIdx' idx
230-
let ⟨vals', veq⟩ := vals.eraseIdx' (Eq.ndrec idx heq)
229+
let keys' := keys.feraseIdx idx
230+
have keq := keys.size_feraseIdx idx
231+
let vals' := vals.feraseIdx (Eq.ndrec idx heq)
232+
have veq := vals.size_feraseIdx (Eq.ndrec idx heq)
231233
have : keys.size - 1 = vals.size - 1 := by rw [heq]
232234
(Node.collision keys' vals' (keq.trans (this.trans veq.symm)), true)
233235
| none => (n, false)

0 commit comments

Comments
 (0)