| # buf1 = nd.alignedsize + 2 * NODE_HEADER_SIZE, # buf1 + # buf0 < 2 * NODE_HEADER_SIZE + align↑(m, 2 * NODE_HEADER_SIZE), abs-node(buf1, nd), abs-nodes(buf0, n + # buf1, x0, lax0, weak), is-encoded(nodeheader(m, boolvar0), subarray(buf1, 0, NODE_HEADER_SIZE)), NODE_HEADER_SIZE ≤ # buf1 + # buf0 ⊦ |
⊦ 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)
# buf1 = nd.alignedsize + 2 * NODE_HEADER_SIZE, # buf1 + # buf0 < 2 * NODE_HEADER_SIZE + align↑(m, 2 * NODE_HEADER_SIZE), abs-nodes(buf0, n + # buf1, x0, lax0, weak), is-encoded(nodeheader(m, boolvar0), subarray(buf1, 0, NODE_HEADER_SIZE)), NODE_HEADER_SIZE ≤ # buf1 + # buf0, ∃ buf0, buf2. buf1 = buf0 + buf2 + validtrailer ∧ is-encoded(nodeheader(node-size-headerless(nd), false), buf0) ∧ is-encoded(nd, subarray(buf2, 0, node-size-headerless(nd))) ∧ # buf2 = nd.alignedsize ⊦
Used terms: nd, buf1