| # buf1 = a.alignedsize + 2 * NODE_HEADER_SIZE, abs-node(buf1, a), abs-nodes(buf0, 0, x, lax, false), is-aligned(# buf0 + # buf1, EB_PAGE_SIZE) ⊦ ∃ buf, buf2. buf1 = buf + buf2 ∧ ( abs-padding(buf) ∧ abs-nodes(buf2, # buf0 + # buf, a ', @(# buf0, # buf + # buf2) ', boolvar) ∨ buf2 = mkbuf(0) ∧ abs-node(buf, a)) |
⊦ 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 = a.alignedsize + 2 * NODE_HEADER_SIZE, abs-nodes(buf0, 0, x, lax, false), is-aligned(# buf0 + # buf1, EB_PAGE_SIZE), ∃ buf0, buf2. buf1 = buf0 + buf2 + validtrailer ∧ is-encoded(nodeheader(node-size-headerless(a), false), buf0) ∧ is-encoded(a, subarray(buf2, 0, node-size-headerless(a))) ∧ # buf2 = a.alignedsize ⊦ ∃ buf, buf2. buf1 = buf + buf2 ∧ ( abs-padding(buf) ∧ abs-nodes(buf2, # buf0 + # buf, a ', @(# buf0, # buf + # buf2) ', boolvar) ∨ buf2 = mkbuf(0) ∧ abs-node(buf, a))
Used terms: a, buf1