| wlar[n1] = wl-entry(m1, stat0), wlar[n2] = wl-entry(m0, stat), apebs0[n2] = mkpeb(aehdr, empty, buf1, 0, false), vols[v][m2] = ⌜m⌝ , align↑(datasize(buf, n0), EB_PAGE_SIZE) = align↑(datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)), EB_PAGE_SIZE), wlar0 = wlar, aehdr.valid?, n1 < # wlar, n2 < # wlar, n2 < # apebs0, m2 < # vols[v], v ∈ vols, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ LEB_SIZE, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ # buf, vols[v][m2] = ⌜n1⌝ ∨ v = VTBL_VOLID ∧ m2 = VTBL_LNUM ∧ vtblpnum1 = n1 ⊦ [ubi_wl_put_peb#(v × m2, m; wlar, q); bflipset := bflipset -- m; vols[v][m2] := ⌜n2⌝ ; wlar[n2] := wl-entry(wlar[n2].ec, used)] ( sum-of-differences(ecs(wlar).max, ecs(wlar)) = sum-of-differences(ecs(wlar0).max, ecs(wlar0)) ∧ ecs(wlar) = ecs(wlar0) ∧ wlar[n2].ec = m0 ∧ wlar[n1].ec = m1), vols[v][m2] = unmapped, datasize(buf, n0) = 0, datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) = 0, n2 = n1, v = VTBL_VOLID ∧ m2 = VTBL_LNUM |
wlar[n1] = wl-entry(m1, stat0), wlar[n2] = wl-entry(m0, stat), apebs0[n2] = mkpeb(aehdr, empty, buf1, 0, false), vols[v][m2] = ⌜m⌝ , align↑(datasize(buf, n0), EB_PAGE_SIZE) = align↑(datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)), EB_PAGE_SIZE), wlar0 = wlar, datasize(buf, n0) ≠ 0, datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) ≠ 0, n2 ≠ n1, aehdr.valid?, n1 < # wlar, n2 < # wlar, n2 < # apebs0, m2 < # vols[v], v ∈ vols, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ LEB_SIZE, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ # buf, m = n1 ∨ v = VTBL_VOLID ∧ m2 = VTBL_LNUM ∧ vtblpnum1 = n1 ⊦ [ubi_wl_put_peb#(v × m2, m; wlar, q); bflipset := bflipset -- m; vols[v][m2] := ⌜n2⌝ ; wlar[n2] := wl-entry(wlar[n2].ec, used)] ( sum-of-differences(ecs(wlar).max, ecs(wlar)) = sum-of-differences(ecs(wlar0).max, ecs(wlar0)) ∧ ecs(wlar) = ecs(wlar0) ∧ wlar[n2].ec = m0 ∧ wlar[n1].ec = m1), v = VTBL_VOLID ∧ m2 = VTBL_LNUM
Used simplifier rules: ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)% ⊦ unmapped ≠ ⌜m⌝ ; (s)