| # apebs = # wlar, # apebs0 = # wlar2, wlar2[vtblpnum] = wl-entry(m, free), apebs0[vtblpnum] = mkpeb(aehdr, empty, mkempbuf(LEB_SIZE), 0, false), aehdr.valid?, # vols + 1 < # to-vtbl(vols)[v, n], vtblpnum < # wlar2, LEB_SIZE < # to-vtbl(vols)[v, n] * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) + ENCODED_NAT_SIZE, bflipset-cons(bflipset, wlar), bflipset-cons(bflipset, wlar2), id(apebs0, apebs, mapped-pebs(vols)), ubi-io-inv(apebs0), ubi-io-inv(apebs), unique-sqns(apebs), unique-sqns(apebs0), valid-ebatbl(apebs, wlar, vols, vtblpnum3), valid-ebatbl(apebs0, wlar2, vols, vtblpnum3), valid-eraseq(q), valid-eraseq(wlar, q), valid-eraseq(apebs, q), valid-eraseq(wlar2, []), valid-global-sqn(apebs, sqnum), valid-global-sqn(apebs0, sqnum), valid-vtbl(apebs, vols, wlar, vtblpnum3), valid-vtbl(apebs0, vols, wlar2, vtblpnum3), valid-wl(apebs, wlar), valid-wl(apebs0, wlar2), 2 * ENCODED_NAT_SIZE + (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE) * # vols + ENCODED_VOLID_SIZE ≤ LEB_SIZE ⊦ ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE = 0, v = VTBL_VOLID, vtblpnum3 = vtblpnum, v ∈ vols, VTBL_VOLID ∈ vols, vtblpnum3 ∈ q |
⊦ ¬ v ∈ vtbl → # vtbl[v, n] = # vtbl + 1
Used simplifier rules: ⊦ # to-vtbl(vols) = # vols; (s)% ⊦ m + n < m + n0 ↔ n < n0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ v ∈ to-vtbl(vols) ↔ v ∈ vols; (s) Used terms: n, v, to-vtbl(vols)