| m8 + # lpt0 = # avol1, avol1[0] = mapped(buf), avol1[m5] = mapped(buf0), avol1[m10] = mapped(buf1), disk-layout(mksb(adr0, m9, m10, m5, m6, m7, m8), # lpt0), ebm-vol-inv(avol1), is-encoded(mksb(adr0, m9, m10, m5, m6, m7, m8), buf), is-encoded(log0, buf1), is-encoded(lpt0, lebs(avol1, m7, lptlebs(# lpt0, LEB_SIZE))), is-encoded-pad(orphans0, m6, buf0), mapped-full?(avol1, m7, lptlebs(# lpt0, LEB_SIZE)), m8 ≤ # avol1, # avol2 ≤ m10, avol1 ⊆ avol2, m3 ≠ LEB_SIZE → # buf1 = m3 ⊦ |
⊦ avol0 ⊆ avol1 ↔ # avol0 = # avol1 ∧ (∀ m. m < # avol0 → (avol0[m].mapped? → avol1[m] = avol0[m]) ∧ (avol0[m] = unmapped ∧ avol1[m].mapped? → # avol1[m].data ≤ LEB_SIZE ∧ is-aligned(# avol1[m].data, EB_PAGE_SIZE)))
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m ≤ n → (n < m ↔ false); (s)%n ≤ n1 ⊦ ¬ disk-layout(mksb(adr, n0, n1, n2, m, n3, n), mainareasize); (s) Used terms: avol2, avol1