| # buf0 = EB_PAGE_SIZE, is-encoded(nx, buf1), is-encoded(rnode(m), buf0), is-encoded(nx0, buf0 + buf1), ∀ nx0, buf. is-encoded(nx0, buf) ∧ is-encoded(nx, buf) → nx0 = nx ⊦ nx0 = m ' + nx |
# buf0 = EB_PAGE_SIZE, nx0 = m0 + nx1, is-encoded(nx0, buf0 + buf1), is-encoded(rnode(m), buf0), is-encoded(nx, buf1), ∀ nx0, buf. is-encoded(nx0, buf) ∧ is-encoded(nx, buf) → nx0 = nx ⊦ nx0 = m ' + nx
Used simplifier rules: is-encoded-base: ⊦ is-encoded([], buf) ↔ buf = mkbuf(0);%nat-list freely generated by [], +;;% ⊦ n ' + nx ≠ []; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ buf + buf0 = mkbuf(0) ↔ buf = mkbuf(0) ∧ buf0 = mkbuf(0); (ws)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ # mkbuf(n) = n; (s)% ⊦ EB_PAGE_SIZE ≠ 0; (s)