| ⊦ is-encoded-pad(ns, n, mkbuf(0)) ↔ ns = ∅ ∧ n = 0 |
⊦ is-encoded-pad(ns, n, buf) ↔ n = # ns ∧ (∃ buf0, buf1. is-aligned(# buf, EB_PAGE_SIZE) ∧ buf = buf0 + buf1 ∧ is-encoded(ns, buf0))
Used simplifier rules: is-encoded-base: ⊦ is-encoded(∅, buf) ↔ buf = mkbuf(0);%is-encoded-size: ⊦ is-encoded(ns, buf) → # buf = # ns * ENCODED_NAT_SIZE;% ⊦ # mkbuf(n) = n; (s)% ⊦ EB_PAGE_SIZE ≠ 0; (s)%n ≠ 0 ⊦ is-aligned(0, n); (s)% ⊦ # ∅ = 0; (s)% ⊦ mkbuf(0) + buf = buf; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ buf + buf0 = mkbuf(0) ↔ buf = mkbuf(0) ∧ buf0 = mkbuf(0); (ws)%size-zero-01: ⊦ ns ≠ ∅ → # ns ≠ 0; (forward) from specification set-basic[nat-set]% ⊦ m ≠ 0 → (m * n = 0 ↔ n = 0); (s)% ⊦ ENCODED_NAT_SIZE ≠ 0; (s)%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult%mult-c: ⊦ m * n = n * m; from specification nat-mult Used terms: mkbuf(0), n, ns