| # avol = n2 + n0, # lpt4 = n2 + n0, # avol1 = n2 + n0, lpt4[n0] = mklp(m0, m1, lpf, m2), lpf = LP_INDEX_NODES, m0 = 0, avol-replay-lpt-unchanged(avol1, avol, lpt4, log0), awbuf-inv(avol1, nobuffer), awbuf-inv(avol, nobuffer), synced(avol1), synced(avol) ⊦ ⟪awbuf_unmap#(n0, adr, m, log, lpt0, ns, nobuffer, isbuf; avol); n1 := n0 + 1⟫ ( n1 ≤ # avol1 ∧ awbuf-inv(avol, nobuffer) ∧ replay-lpt(lpt4, log0, n0)[n0, mklp(m0, 0, LP_FREE, m2)] = replay-lpt(lpt4, log0, n1) ∧ avol-replay-lpt-unchanged(avol1, avol, lpt4, log0) ∧ # avol1 < n2 + n1), n2 = 0, n0 ∈ log0 |
# avol1 = n2 + n0, # lpt4 = n2 + n0, # avol = n2 + n0, lpt4[n0] = mklp(0, m1, LP_INDEX_NODES, m2), n2 ≠ 0, avol-replay-lpt-unchanged(avol1, avol, lpt4, log0), awbuf-inv(avol, nobuffer), awbuf-inv(avol1, nobuffer), synced(avol), synced(avol1), ¬ n0 ∈ log0 ⊦ ⟪awbuf_unmap#(n0, adr, m, log, lpt0, ns, nobuffer, isbuf; avol); n1 := n0 + 1⟫ ( n1 ≤ # avol1 ∧ awbuf-inv(avol, nobuffer) ∧ replay-lpt(lpt4, log0, n0)[n0, mklp(0, 0, LP_FREE, m2)] = replay-lpt(lpt4, log0, n1) ∧ avol-replay-lpt-unchanged(avol1, avol, lpt4, log0) ∧ # avol1 < n2 + n1)