| ∀ n0. n0 < # apebs → # apebs[n0].data = LEB_SIZE ∧ ( ¬ apebs[n0].bad → (apebs[n0].echdr = empty → apebs[n0].vidhdr = empty) ∧ (apebs[n0].echdr ≠ garbage ∧ apebs[n0].vidhdr = empty → apebs[n0].fill = 0) ∧ apebs[n0].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n0].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n0].data, apebs[n0].fill, LEB_SIZE - apebs[n0].fill) = mkempbuf(LEB_SIZE - apebs[n0].fill)) ⊦ (∀ n0. n0 < # apebs → # apebs[n, apeb][n0].data = LEB_SIZE ∧ ( ¬ apebs[n, apeb][n0].bad → (apebs[n, apeb][n0].echdr = empty → apebs[n, apeb][n0].vidhdr = empty) ∧ (apebs[n, apeb][n0].echdr ≠ garbage ∧ apebs[n, apeb][n0].vidhdr = empty → apebs[n, apeb][n0].fill = 0) ∧ apebs[n, apeb][n0].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n, apeb][n0].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n, apeb][n0].data, apebs[n, apeb][n0].fill, LEB_SIZE - apebs[n, apeb][n0].fill) = mkempbuf(LEB_SIZE - apebs[n, apeb][n0].fill))) ↔ n < # apebs ∧ # apebs[n].data = LEB_SIZE ∧ ( ¬ apebs[n].bad → (apebs[n].echdr = empty → apebs[n].vidhdr = empty) ∧ (apebs[n].echdr ≠ garbage ∧ apebs[n].vidhdr = empty → apebs[n].fill = 0) ∧ apebs[n].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n].data, apebs[n].fill, LEB_SIZE - apebs[n].fill) = mkempbuf(LEB_SIZE - apebs[n].fill)) → # apeb.data = LEB_SIZE ∧ ( ¬ apeb.bad → (apeb.echdr = empty → apeb.vidhdr = empty) ∧ (apeb.echdr ≠ garbage ∧ apeb.vidhdr = empty → apeb.fill = 0) ∧ apeb.fill ≤ LEB_SIZE ∧ is-aligned(apeb.fill, EB_PAGE_SIZE) ∧ subarray(apeb.data, apeb.fill, LEB_SIZE - apeb.fill) = mkempbuf(LEB_SIZE - apeb.fill)) |
apeb = mkpeb(aehdr, avhdr, buf, m, boolvar), ∀ n0. n0 < # apebs → # apebs[n0].data = LEB_SIZE ∧ ( ¬ apebs[n0].bad → (apebs[n0].echdr = empty → apebs[n0].vidhdr = empty) ∧ (apebs[n0].echdr ≠ garbage ∧ apebs[n0].vidhdr = empty → apebs[n0].fill = 0) ∧ apebs[n0].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n0].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n0].data, apebs[n0].fill, LEB_SIZE - apebs[n0].fill) = mkempbuf(LEB_SIZE - apebs[n0].fill)) ⊦ (∀ n0. n0 < # apebs → # apebs[n, apeb][n0].data = LEB_SIZE ∧ ( ¬ apebs[n, apeb][n0].bad → (apebs[n, apeb][n0].echdr = empty → apebs[n, apeb][n0].vidhdr = empty) ∧ (apebs[n, apeb][n0].echdr ≠ garbage ∧ apebs[n, apeb][n0].vidhdr = empty → apebs[n, apeb][n0].fill = 0) ∧ apebs[n, apeb][n0].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n, apeb][n0].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n, apeb][n0].data, apebs[n, apeb][n0].fill, LEB_SIZE - apebs[n, apeb][n0].fill) = mkempbuf(LEB_SIZE - apebs[n, apeb][n0].fill))) ↔ n < # apebs ∧ # apebs[n].data = LEB_SIZE ∧ ( ¬ apebs[n].bad → (apebs[n].echdr = empty → apebs[n].vidhdr = empty) ∧ (apebs[n].echdr ≠ garbage ∧ apebs[n].vidhdr = empty → apebs[n].fill = 0) ∧ apebs[n].fill ≤ LEB_SIZE ∧ is-aligned(apebs[n].fill, EB_PAGE_SIZE) ∧ subarray(apebs[n].data, apebs[n].fill, LEB_SIZE - apebs[n].fill) = mkempbuf(LEB_SIZE - apebs[n].fill)) → # buf = LEB_SIZE ∧ ( ¬ boolvar → (aehdr = empty → avhdr = empty) ∧ (aehdr ≠ garbage ∧ avhdr = empty → m = 0) ∧ m ≤ LEB_SIZE ∧ is-aligned(m, EB_PAGE_SIZE) ∧ subarray(buf, m, LEB_SIZE - m) = mkempbuf(LEB_SIZE - m))
Used simplifier rules: ⊦ ( ((aehdr = apeb.echdr ∧ avhdr = apeb.vidhdr) ∧ buf = apeb.data) ∧ m = apeb.fill) ∧ (boolvar ↔ apeb.bad) ↔ apeb = mkpeb(aehdr, avhdr, buf, m, boolvar); (elim) Used terms: apeb, aehdr, avhdr, buf, m, boolvar