| apebs0[n2] = mkpeb(aehdr, empty, buf1, 0, false), wlar[n2] = wl-entry(m0, stat), wlar[n1] = wl-entry(m1, stat0), align↑(datasize(buf, n0), EB_PAGE_SIZE) = align↑(datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)), EB_PAGE_SIZE), lref = VTBL_VOLID × VTBL_LNUM, vtblpnum = vtblpnum1, wlar0 = wlar, aehdr.valid?, n2 < # apebs0, n2 < # wlar, n1 < # wlar, vtblpnum < # wlar, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ # buf, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ LEB_SIZE, VTBL_VOLID ∈ vols ∧ VTBL_LNUM < # vols[VTBL_VOLID] ∧ vols[VTBL_VOLID][VTBL_LNUM] = ⌜n1⌝ ∨ vtblpnum1 = n1 ⊦ [bflipset := bflipset -- vtblpnum1; vtblpnum1 := n2; wlar := wlar[vtblpnum, wlar[vtblpnum].status:= erasing][n2, wl-entry(wlar[vtblpnum, wlar[vtblpnum].status:= erasing][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), datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) = 0, datasize(buf, n0) = 0, n2 = n1 |
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), lref = VTBL_VOLID × VTBL_LNUM, vtblpnum = vtblpnum1, wlar0 = wlar, aehdr.valid?, vtblpnum < # wlar, n1 < # wlar, n2 < # wlar, n2 < # apebs0, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ LEB_SIZE, align↑(datasize(buf, n0), EB_PAGE_SIZE) ≤ # buf, VTBL_VOLID ∈ vols ∧ VTBL_LNUM < # vols[VTBL_VOLID] ∧ vols[VTBL_VOLID][VTBL_LNUM] = ⌜n1⌝ ∨ vtblpnum1 = n1 ⊦ [vtblpnum1 := n2; wlar := wlar[vtblpnum, wlar[vtblpnum].status:= erasing][n2, wl-entry(wlar[vtblpnum, wlar[vtblpnum].status:= erasing][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), datasize(buf, n0) = 0, datasize(buf, align↑(datasize(buf, n0), EB_PAGE_SIZE)) = 0, n2 = n1