| ∀ n0. n0 < # pebs → # pebs[n0].data = PEB_SIZE ∧ ( ¬ pebs[n0].bad → pebs[n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n0].fill, EB_PAGE_SIZE) ∧ range=(pebs[n0].data, pebs[n0].fill, emptypeb, pebs[n0].fill, PEB_SIZE - pebs[n0].fill)) ∧ (¬ pebs[n0].bad → pebs[n0].fill = EB_PAGE_SIZE ∧ (∃ n. is-encoded(echdr(n), subarray(pebs[n0].data, 0, EB_PAGE_SIZE)))) ⊦ (∀ n0. n0 < # pebs → # pebs[n, peb][n0].data = PEB_SIZE ∧ ( ¬ pebs[n, peb][n0].bad → pebs[n, peb][n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n, peb][n0].fill, EB_PAGE_SIZE) ∧ range=(pebs[n, peb][n0].data, pebs[n, peb][n0].fill, emptypeb, pebs[n, peb][n0].fill, PEB_SIZE - pebs[n, peb][n0].fill)) ∧ ( ¬ pebs[n, peb][n0].bad → pebs[n, peb][n0].fill = EB_PAGE_SIZE ∧ (∃ n1. is-encoded(echdr(n1), subarray(pebs[n, peb][n0].data, 0, EB_PAGE_SIZE))))) ↔ n < # pebs ∧ # pebs[n].data = PEB_SIZE ∧ ( ¬ pebs[n].bad → pebs[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n].fill, EB_PAGE_SIZE) ∧ range=(pebs[n].data, pebs[n].fill, emptypeb, pebs[n].fill, PEB_SIZE - pebs[n].fill)) ∧ (¬ pebs[n].bad → pebs[n].fill = EB_PAGE_SIZE ∧ (∃ n0. is-encoded(echdr(n0), subarray(pebs[n].data, 0, EB_PAGE_SIZE)))) → # peb.data = PEB_SIZE ∧ (¬ peb.bad → peb.fill ≤ PEB_SIZE ∧ is-aligned(peb.fill, EB_PAGE_SIZE) ∧ range=(peb.data, peb.fill, emptypeb, peb.fill, PEB_SIZE - peb.fill)) ∧ (¬ peb.bad → peb.fill = EB_PAGE_SIZE ∧ (∃ n. is-encoded(echdr(n), subarray(peb.data, 0, EB_PAGE_SIZE)))) |
peb = mkpeb(buf, m, boolvar), ∀ n0. n0 < # pebs → # pebs[n0].data = PEB_SIZE ∧ ( ¬ pebs[n0].bad → pebs[n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n0].fill, EB_PAGE_SIZE) ∧ range=(pebs[n0].data, pebs[n0].fill, emptypeb, pebs[n0].fill, PEB_SIZE - pebs[n0].fill)) ∧ (¬ pebs[n0].bad → pebs[n0].fill = EB_PAGE_SIZE ∧ (∃ n. is-encoded(echdr(n), subarray(pebs[n0].data, 0, EB_PAGE_SIZE)))) ⊦ (∀ n0. n0 < # pebs → # pebs[n, peb][n0].data = PEB_SIZE ∧ ( ¬ pebs[n, peb][n0].bad → pebs[n, peb][n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n, peb][n0].fill, EB_PAGE_SIZE) ∧ range=(pebs[n, peb][n0].data, pebs[n, peb][n0].fill, emptypeb, pebs[n, peb][n0].fill, PEB_SIZE - pebs[n, peb][n0].fill)) ∧ ( ¬ pebs[n, peb][n0].bad → pebs[n, peb][n0].fill = EB_PAGE_SIZE ∧ (∃ n1. is-encoded(echdr(n1), subarray(pebs[n, peb][n0].data, 0, EB_PAGE_SIZE))))) ↔ n < # pebs ∧ # pebs[n].data = PEB_SIZE ∧ ( ¬ pebs[n].bad → pebs[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n].fill, EB_PAGE_SIZE) ∧ range=(pebs[n].data, pebs[n].fill, emptypeb, pebs[n].fill, PEB_SIZE - pebs[n].fill)) ∧ (¬ pebs[n].bad → pebs[n].fill = EB_PAGE_SIZE ∧ (∃ n0. is-encoded(echdr(n0), subarray(pebs[n].data, 0, EB_PAGE_SIZE)))) → # buf = PEB_SIZE ∧ (¬ boolvar → m ≤ PEB_SIZE ∧ is-aligned(m, EB_PAGE_SIZE) ∧ range=(buf, m, emptypeb, m, PEB_SIZE - m)) ∧ (¬ boolvar → m = EB_PAGE_SIZE ∧ (∃ n. is-encoded(echdr(n), subarray(buf, 0, EB_PAGE_SIZE))))
Used simplifier rules: ⊦ (buf = peb.data ∧ m = peb.fill) ∧ (boolvar ↔ peb.bad) ↔ peb = mkpeb(buf, m, boolvar); (elim) Used terms: peb, buf, m, boolvar