| is-encoded(m + nx0, buf), ∀ buf. is-encoded(nx0, buf) → # buf = # nx0 * EB_PAGE_SIZE ⊦ # buf = #(m + nx0) * EB_PAGE_SIZE |
# buf0 = EB_PAGE_SIZE, is-encoded(rnode(m), buf0), is-encoded(nx0, buf1), ∀ buf. is-encoded(nx0, buf) → # buf = # nx0 * EB_PAGE_SIZE ⊦ # buf1 = EB_PAGE_SIZE * # nx0
Used simplifier rules: is-encoded-rec: ⊦ is-encoded(n ' + nx, buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(rnode(n), buf0) ∧ is-encoded(nx, buf1));% ⊦ m + n = m + n0 ↔ n = n0; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ #(buf + buf0) = # buf + # buf0; (s)%is-encoded-size: ⊦ is-encoded(rnd, buf) → # buf = EB_PAGE_SIZE; (forward) from specification encoding-page-size-nonempty[encoding-ref-node]%mult-c: ⊦ m * n = n * m; from specification nat-mult%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m * (n + 1) = m * n + m; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ m +1 = m + 1; (s)% ⊦ #(n ' + nx) = (# nx)+1; (s)% ⊦ n + nx = n ' + nx; (s)