| wlar[n1] = wl-entry(m1, stat0), wlar[n2] = wl-entry(m0, stat), apebs0[n2] = mkpeb(aehdr, empty, buf1, 0, false), align↑(datasize(buf, n0), EB_PAGE_SIZE) = align↑(datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)), EB_PAGE_SIZE), align↑(datasize(buf, n0), EB_PAGE_SIZE) = n3 + # buf2, wlar0 = wlar, aehdr.valid?, n2 < # apebs0, n1 < # wlar, n2 < # wlar, is-aligned(# buf2, EB_PAGE_SIZE), # buf2 ≤ LEB_SIZE, # buf2 ≤ # buf, # buf2 ≤ align↑(datasize(buf, n0), EB_PAGE_SIZE), align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ LEB_SIZE, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ # buf, ⌊err0⌋ , datasize(buf2, # buf2) < datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) ∨ checksum(buf2 + mkempbuf(n3), datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE))) ≠ checksum(buf, datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE))), v ∈ vols ∧ m2 < # vols[v] ∧ vols[v][m2] = ⌜n1⌝ ∨ v = VTBL_VOLID ∧ m2 = VTBL_LNUM ∧ vtblpnum1 = n1 ⊦ [ubi_wl_put_peb#(none, n2; wlar, q)] (sum-of-differences(ecs(wlar).max, ecs(wlar)) = sum-of-differences(ecs(wlar0).max, ecs(wlar0)) ∧ ecs(wlar) = ecs(wlar0)), datasize(buf, n0) = 0, datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) = 0, n2 = n1 |
n3 + # buf2 = align↑(datasize(buf, n3 + # buf2), EB_PAGE_SIZE), wlar[n1] = wl-entry(m1, stat0), wlar[n2] = wl-entry(m0, stat), apebs0[n2] = mkpeb(aehdr, empty, buf1, 0, false), align↑(datasize(buf, n0), EB_PAGE_SIZE) = n3 + # buf2, wlar0 = wlar, datasize(buf, n0) ≠ 0, datasize(buf, n3 + # buf2) ≠ 0, n2 ≠ n1, aehdr.valid?, n2 < # apebs0, n1 < # wlar, n2 < # wlar, is-aligned(# buf2, EB_PAGE_SIZE), # buf2 ≤ LEB_SIZE, # buf2 ≤ # buf, n3 + # buf2 ≤ LEB_SIZE, n3 + # buf2 ≤ # buf, ⌊err0⌋ , datasize(buf2, # buf2) < datasize(buf, n3 + # buf2) ∨ checksum(buf2 + mkempbuf(n3), datasize(buf, n3 + # buf2)) ≠ checksum(buf, datasize(buf, n3 + # buf2)), v ∈ vols ∧ m2 < # vols[v] ∧ vols[v][m2] = ⌜n1⌝ ∨ v = VTBL_VOLID ∧ m2 = VTBL_LNUM ∧ vtblpnum1 = n1 ⊦ [ubi_wl_put_peb#(none, n2; wlar, q)] (sum-of-differences(ecs(wlar).max, ecs(wlar)) = sum-of-differences(ecs(wlar0).max, ecs(wlar0)) ∧ ecs(wlar) = ecs(wlar0))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m ≤ m + n; (s)