| # avol1 = n2 + n0, # lpt4 = n2 + n0, # avol = n2 + n0, lpt4[n0] = mklp(0, m1, LP_INDEX_NODES, m2), bleb = nobuffer, lpt = lpt0, m0 = n0, avol-replay-lpt-unchanged(avol1, avol, lpt4, log0), awbuf-inv(avol, nobuffer), awbuf-inv(avol1, nobuffer), synced(avol), synced(avol1) ⊦ ⟪avol[m0] := unmapped; 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), n2 = 0, n0 ∈ log0 |
# avol = n2 + n0, # lpt4 = n2 + n0, # avol1 = n2 + n0, lpt4[n0] = mklp(0, m1, LP_INDEX_NODES, m2), bleb = nobuffer, lpt = lpt0, m0 = n0, m0 < # avol, avol-replay-lpt-unchanged(avol1, avol, lpt4, log0), awbuf-inv(avol1, nobuffer), awbuf-inv(avol, nobuffer), synced(avol1), synced(avol) ⊦ ⟪n1 := n0 + 1⟫ ( n1 ≤ # avol1 ∧ awbuf-inv(avol[m0, unmapped], nobuffer) ∧ replay-lpt(lpt4, log0, n0)[n0, mklp(0, 0, LP_FREE, m2)] = replay-lpt(lpt4, log0, n1) ∧ avol-replay-lpt-unchanged(avol1, avol[m0, unmapped], lpt4, log0) ∧ # avol1 < n2 + n1), n2 = 0, n0 ∈ log0
Used simplifier rules: nat-stuff0: ⊦ n = n0 + n1 → (n0 < n ↔ n1 ≠ 0);%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic