| buf0 = mkbuf(align↑(# orphans2 * ENCODED_NAT_SIZE, m2)), err = ESUCCESS, err0 = ESUCCESS, m1 = LEB_SIZE, m2 = EB_PAGE_SIZE, m4 = 0, orphans = orphans1, orphans0 = orphans2, is-aligned(# buf, m2), # buf ≤ m1, orphans ⊆ orphans2, err = ESUCCESS → m0 + # orphans * ENCODED_NAT_SIZE ≤ # buf ∧ is-encoded(orphans2 \ orphans, subarray(buf, 0, m0)), err = ESUCCESS ∨ ⌊err⌋ ⊦ orphans = ∅, # orphans2 * ENCODED_NAT_SIZE > m1, ∃ n. n ∈ orphans |
is-aligned(# buf, EB_PAGE_SIZE), is-encoded(orphans2 \ orphans, subarray(buf, 0, m0)), m0 + # orphans * ENCODED_NAT_SIZE ≤ LEB_SIZE, m0 + # orphans * ENCODED_NAT_SIZE ≤ # buf, # orphans2 * ENCODED_NAT_SIZE ≤ LEB_SIZE, # buf ≤ LEB_SIZE, orphans ⊆ orphans2 ⊦ # orphans = 0, orphans = ∅, ∃ n. n ∈ orphans
Used simplifier rules: size-zero: ⊦ # ns ≠ 0 → ns ≠ ∅; (forward) from specification set-basic[nat-set]%size-zero-01: ⊦ ns ≠ ∅ → # ns ≠ 0; (forward) from specification set-basic[nat-set]%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m > n ↔ n < m; (s)