| m0 + 1 = # pebs, pebs[m0] = mkpeb(buf, m, true), abs(subarray(pebs, 0, m0), apebs), ubi-io-initial(pebs), ubi-io-initial(apebs) ⊦ # pebs = # copy(apebs, 0, mkapebs(m0 + 1), 0, m0)[m0, mkpeb(empty, empty, mkbuf(LEB_SIZE), 0, true)] ∧ (∀ n. n < # pebs → abs-peb(pebs[n], copy(apebs, 0, mkapebs(m0 + 1), 0, m0)[m0, mkpeb(empty, empty, mkbuf(LEB_SIZE), 0, true)][n])) |
m0 + 1 = # pebs, pebs[m0] = mkpeb(buf, m, true), abs(subarray(pebs, 0, m0), apebs), ubi-io-initial(apebs), ubi-io-initial(pebs), n ≤ m0 ⊦ abs-peb(pebs[n], copy(apebs, 0, mkapebs(m0 + 1), 0, m0)[m0, mkpeb(empty, empty, mkbuf(LEB_SIZE), 0, true)][n])
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n + 1 ↔ ¬ n < m; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # mkapebs(n) = n; (s)% ⊦ # copy(apebs, m, apebs0, m0, n) = # apebs0; (s)% ⊦ # apebs[n, apeb] = # apebs; (s)