| v × m ∈ recs ∧ recs[v × m].pnum = n0 ↔ wlar[n0].status = used ∧ n0 < # apebs ∧ apebs[n0].vidhdr.vol = (v × m).vol ∧ apebs[n0].vidhdr.leb = (v × m).leb, recs[v × m] = recovery-entry(n0, n1), valid-eraseq(wlar, q), n0 ∈ q, v × m ∈ recs, ∀ ladr, m. ladr ∈ recs ∧ recs[ladr].pnum = m ↔ wlar[m].status = used ∧ m < # apebs ∧ apebs[m].vidhdr.vol = ladr.vol ∧ apebs[m].vidhdr.leb = ladr.leb ⊦ n0 = # apebs |
wlar[n0].status = used, recs[apebs[n0].vidhdr.vol × apebs[n0].vidhdr.leb] = recovery-entry(n0, n1), n0 < # apebs, valid-eraseq(wlar, q), apebs[n0].vidhdr.vol × apebs[n0].vidhdr.leb ∈ recs, n0 ∈ q, ∀ ladr, m. ladr ∈ recs ∧ recs[ladr].pnum = m ↔ wlar[m].status = used ∧ m < # apebs ∧ apebs[m].vidhdr.vol = ladr.vol ∧ apebs[m].vidhdr.leb = ladr.leb ⊦ n0 = # apebs
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ recovery-entry(m, m0).pnum = m; (s)% ⊦ (v × m).leb = m; (s)% ⊦ (v × m).vol = v; (s)