| # buf1 = # buf, # buf = 2 * NODE_HEADER_SIZE + n0, subarray(buf1, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0) = subarray(buf, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0), is-aligned(n0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(n0, true), subarray(buf1, 0, NODE_HEADER_SIZE)) ⊦ buf = mkbuf(0), copy(validtrailer, 0, buf1, NODE_HEADER_SIZE + n0, NODE_HEADER_SIZE) = subarray(buf1, 0, NODE_HEADER_SIZE) + subarray(buf1, NODE_HEADER_SIZE, n0) + validtrailer ∧ is-encoded(nodeheader(# subarray(buf1, NODE_HEADER_SIZE, n0), true), subarray(buf1, 0, NODE_HEADER_SIZE)) ∧ is-aligned(# subarray(buf1, NODE_HEADER_SIZE, n0), 2 * NODE_HEADER_SIZE) |
# buf = 2 * NODE_HEADER_SIZE + n0, # buf1 = # buf, subarray(buf1, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0) = subarray(buf, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0), is-aligned(n0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(n0, true), subarray(buf1, 0, NODE_HEADER_SIZE)) ⊦ buf = mkbuf(0), copy(validtrailer, 0, buf1, NODE_HEADER_SIZE + n0, NODE_HEADER_SIZE) = subarray(buf1, 0, NODE_HEADER_SIZE) + subarray(buf1, NODE_HEADER_SIZE, n0) + validtrailer
Used simplifier rules: ⊦ is-encoded(ndhd, buf) → (is-encoded(ndhd0, buf) ↔ ndhd = ndhd0); (s)% ⊦ # subarray(buf, m, n) = n; (s)