| id(apebs2, apebs1, ns), id○(apebs1, apebs0, n) ⊦ id(apebs2, apebs0, ns -- n) |
# apebs2 = # apebs0, # apebs1 = # apebs0, n0 < # apebs0, id○(apebs1, apebs0, n), n0 ∈ ns, ∀ n1. n1 ∈ ns ∧ n1 < # apebs0 → apebs2[n1] = apebs1[n1] ⊦ # ns = 0, apebs2[n0] = apebs0[n0], n0 = n, ns = ∅
Used simplifier rules: id-set: ⊦ id(apebs0, apebs1, ns) ↔ # apebs0 = # apebs1 ∧ (∀ n. n ∈ ns ∧ n < # apebs0 ∧ n < # apebs1 → apebs0[n] = apebs1[n]);%size-zero-01: ⊦ ns ≠ ∅ → # ns ≠ 0; (forward) from specification set-basic[nat-set]% ⊦ m < n → n ≠ 0; (s)%ne-01: ⊦ n ∈ ns → ns ≠ ∅; (forward) from specification set-basic[nat-set]%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%idexcept-size: ⊦ id○(apebs, apebs0, n) → # apebs = # apebs0; (forward) from specification array-copy[apebs]% ⊦ n ∈ ns -- n0 ↔ n ≠ n0 ∧ n ∈ ns; (s)