| # buf = n0 + m0 + ENCODED_NAT_SIZE, # buf0 = # buf, # orphans1 = m + 1, subarray(buf0, 0, m0) = subarray(buf, 0, m0), subarray(buf0, m0 + ENCODED_NAT_SIZE, n0) = subarray(buf, m0 + ENCODED_NAT_SIZE, n0), is-aligned(# buf, EB_PAGE_SIZE), is-encoded(orphans2 \ orphans1, subarray(buf, 0, m0)), is-encoded(n, subarray(buf0, m0, ENCODED_NAT_SIZE)), n ∈ orphans1, n ∈ orphans2, m0 + ENCODED_NAT_SIZE ≤ # buf, m0 + ENCODED_NAT_SIZE ≤ LEB_SIZE, # buf ≤ LEB_SIZE, # orphans2 * ENCODED_NAT_SIZE ≤ LEB_SIZE, m0 + ENCODED_NAT_SIZE * m + ENCODED_NAT_SIZE ≤ # buf, m0 + ENCODED_NAT_SIZE * m + ENCODED_NAT_SIZE ≤ LEB_SIZE, orphans1 ⊆ orphans2 ⊦ # orphans2 = 0, orphans1 = ∅, orphans2 = ∅, is-encoded((orphans2 \ orphans1) ++ n, subarray(buf, 0, m0) + subarray(buf0, m0, ENCODED_NAT_SIZE)) |
⊦ is-encoded(ns, buf0) ∧ is-encoded(n, buf1) ∧ ¬ n ∈ ns → (is-encoded(ns1, buf0 + buf1) ↔ ns1 = ns ++ n)
Used simplifier rules: ⊦ is-encoded(ns0, buf) → (is-encoded(ns1, buf) ↔ ns0 = ns1); (s)% ⊦ is-encoded(n, buf) → (is-encoded(n0, buf) ↔ n = n0); (s)% ⊦ n ∈ ns \ ns0 ↔ n ∈ ns ∧ ¬ n ∈ ns0; (ws)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s) Used terms: orphans2 \ orphans1, n, subarray(buf0, m0, ENCODED_NAT_SIZE), subarray(buf, 0, m0), (orphans2 \ orphans1) ++ n