| # buf = 0, # buf0 = EB_PAGE_SIZE, emptypage = buf0 + buf1, is-encoded(nx0, buf1), is-encoded(rnode(m), buf0), ∀ buf2. ¬ is-aligned(# buf2, EB_PAGE_SIZE) ∨ ¬ is-encoded(nx0, buf2 + emptypage) ⊦ |
# buf0 = EB_PAGE_SIZE, # buf = 0, emptypage = buf0 + buf1, nx0 = m0 + nx, is-encoded(rnode(m), buf0), is-encoded(nx0, buf1), ∀ buf2. ¬ is-aligned(# buf2, EB_PAGE_SIZE) ∨ ¬ is-encoded(nx0, buf2 + emptypage) ⊦
Used simplifier rules: is-encoded-base: ⊦ is-encoded([], buf) ↔ buf = mkbuf(0);%is-encoded-emptypage: ⊦ ¬ is-encoded(rnd, emptypage);%nat-list freely generated by [], +;;% ⊦ buf + mkbuf(0) = buf; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ # emptypage = EB_PAGE_SIZE; (s)