| abs-padding(buf), is-encoded(nodeheader(m, true), subarray(buf, 0, NODE_HEADER_SIZE)) ⊦ align↑(m, 2 * NODE_HEADER_SIZE) = m |
Used simplifier rules: abs-padding: ⊦ abs-padding(buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 + validtrailer ∧ is-encoded(nodeheader(# buf1, true), buf0) ∧ is-aligned(# buf1, 2 * NODE_HEADER_SIZE));%n ≠ 0, m % n = 0 ⊦ align↑(m, n) = m; (s)%m ≠ 0 ⊦ is-aligned(n, m) → n % m = 0; (s)%mult-c: ⊦ m * n = n * m; from specification nat-mult%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ 2 * m = 0 ↔ m = 0; (s)%⊦ nodeheader(m, boolvar) = nodeheader(m0, boolvar0) ↔ m = m0 ∧ (boolvar ↔ boolvar0); (ws)% ⊦ is-encoded(ndhd, buf) → (is-encoded(ndhd0, buf) ↔ ndhd = ndhd0); (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]%n = # buf ⊦ subarray(buf + buf0, 0, n) = buf; (s)%is-encoded-size: ⊦ is-encoded(ndhd, buf) → # buf = NODE_HEADER_SIZE; (forward) from specification encoding-fixed-size-nonempty[encoding-node-header]