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