| pebs1[n] = mkpeb(buf, m, boolvar), n < # pebs1, n < # pebs1 ∧ ( n < # pebs0 → # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill))) → # pebs1[n].data = PEB_SIZE ∧ ( ¬ pebs1[n].bad → pebs1[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs1[n].fill, EB_PAGE_SIZE) ∧ range=(pebs1[n].data, pebs1[n].fill, emptypeb, pebs1[n].fill, PEB_SIZE - pebs1[n].fill)), ∀ n. n < # pebs0 → # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill)), ∀ n. n < # pebs1 ∧ ( n < # pebs0 → # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill))) → # pebs1[n].data = PEB_SIZE ∧ ( ¬ pebs1[n].bad → pebs1[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs1[n].fill, EB_PAGE_SIZE) ∧ range=(pebs1[n].data, pebs1[n].fill, emptypeb, pebs1[n].fill, PEB_SIZE - pebs1[n].fill)) ⊦ # buf = PEB_SIZE ∧ (¬ boolvar → m ≤ PEB_SIZE ∧ is-aligned(m, EB_PAGE_SIZE) ∧ range=(buf, m, emptypeb, m, PEB_SIZE - m)) |
pebs1[n] = mkpeb(buf, m, boolvar), n < # pebs0, n < # pebs1, ∀ n. n < # pebs1 ∧ ( n < # pebs0 → # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill))) → # pebs1[n].data = PEB_SIZE ∧ ( ¬ pebs1[n].bad → pebs1[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs1[n].fill, EB_PAGE_SIZE) ∧ range=(pebs1[n].data, pebs1[n].fill, emptypeb, pebs1[n].fill, PEB_SIZE - pebs1[n].fill)), ∀ n. n < # pebs0 → # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill)) ⊦ # pebs0[n].data = PEB_SIZE ∧ ( ¬ pebs0[n].bad → pebs0[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs0[n].fill, EB_PAGE_SIZE) ∧ range=(pebs0[n].data, pebs0[n].fill, emptypeb, pebs0[n].fill, PEB_SIZE - pebs0[n].fill)), # buf = PEB_SIZE ∧ (¬ boolvar → m ≤ PEB_SIZE ∧ is-aligned(m, EB_PAGE_SIZE) ∧ range=(buf, m, emptypeb, m, PEB_SIZE - m))
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ mkpeb(buf, m, boolvar).fill = m; (s)% ⊦ mkpeb(buf, m, boolvar).bad ↔ boolvar; (s)% ⊦ mkpeb(buf, m, boolvar).data = buf; (s)