| # buf = nd.alignedsize, # buf2 = NODE_HEADER_SIZE, abs-nodes(buf0, 2 * NODE_HEADER_SIZE + n + nd.alignedsize, x0, lax0, weak), is-encoded(nodeheader(node-size-headerless(nd), false), buf2), is-encoded(nd, subarray(buf, 0, node-size-headerless(nd))), align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE) ≤ nd.alignedsize + # buf0 ⊦ subarray((buf2 + buf + validtrailer) + buf0, NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE), NODE_HEADER_SIZE) = validtrailer |
n + m ≤ # buf ⊦ subarray(buf + buf0, n, m) = subarray(buf, n, m)
# buf2 = NODE_HEADER_SIZE, # buf = nd.alignedsize, abs-nodes(buf0, 2 * NODE_HEADER_SIZE + n + nd.alignedsize, x0, lax0, weak), is-encoded(nd, subarray(buf, 0, node-size-headerless(nd))), is-encoded(nodeheader(node-size-headerless(nd), false), buf2), align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE) ≤ nd.alignedsize + # buf0 ⊦ subarray((buf2 + buf + validtrailer) + buf0, NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE), NODE_HEADER_SIZE) = validtrailer, (NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE)) + NODE_HEADER_SIZE ≤ #(buf2 + buf + validtrailer)
# buf2 = NODE_HEADER_SIZE, # buf = nd.alignedsize, abs-nodes(buf0, 2 * NODE_HEADER_SIZE + n + nd.alignedsize, x0, lax0, weak), is-encoded(nd, subarray(buf, 0, node-size-headerless(nd))), is-encoded(nodeheader(node-size-headerless(nd), false), buf2), align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE) ≤ nd.alignedsize + # buf0, (NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE)) + NODE_HEADER_SIZE ≤ #(buf2 + buf + validtrailer) ⊦ subarray(buf2 + buf + validtrailer, NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE), NODE_HEADER_SIZE) = validtrailer
Used terms: NODE_HEADER_SIZE, NODE_HEADER_SIZE + align↑(node-size-headerless(nd), 2 * NODE_HEADER_SIZE), buf0, buf2 + buf + validtrailer