| # ar1 = # ar0, # ar2 = # ar0, ar0[n] = elemindex(a, m), n < # ar0, ∀ n. n < # ar0 → ar0[n].elem = ar1[n].elem, ∀ n. n < # ar0 → ar1[n].elem = ar2[n].elem ⊦ a = ar2[n].elem |
# ar2 = # ar0, # ar1 = # ar0, ar0[n] = elemindex(a, m), ar2[n] = elemindex(a0, m0), n < # ar0, ∀ n. n < # ar0 → ar1[n].elem = ar2[n].elem, ∀ n. n < # ar0 → ar0[n].elem = ar1[n].elem ⊦ a = a0
Used simplifier rules: ⊦ a = ei.elem ∧ m = ei.idx ↔ ei = elemindex(a, m); (elim) Used terms: ar2[n], a0, m0