| # buf1 = NODE_HEADER_SIZE, # buf2 = nd.alignedsize + 2 * NODE_HEADER_SIZE, buf1 + buf0 + validtrailer = buf2 + buf, abs-node(buf2, nd), abs-nodes(buf, m + # buf2, x0, lax0, weak), is-aligned(# buf0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(# buf0, true), buf1) ⊦ |
⊦ abs-node(buf, nd) ↔ (∃ buf0, buf1. buf = buf0 + buf1 + validtrailer ∧ is-encoded(nodeheader(node-size-headerless(nd), false), buf0) ∧ is-encoded(nd, subarray(buf1, 0, node-size-headerless(nd))) ∧ # buf1 = nd.alignedsize)
# buf2 = nd.alignedsize + 2 * NODE_HEADER_SIZE, # buf1 = NODE_HEADER_SIZE, buf1 + buf0 + validtrailer = buf2 + buf, abs-nodes(buf, m + # buf2, x0, lax0, weak), is-aligned(# buf0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(# buf0, true), buf1), ∃ buf0, buf1. buf2 = buf0 + buf1 + validtrailer ∧ is-encoded(nodeheader(node-size-headerless(nd), false), buf0) ∧ is-encoded(nd, subarray(buf1, 0, node-size-headerless(nd))) ∧ # buf1 = nd.alignedsize ⊦
Used terms: nd, buf2