| # buf0 = a.alignedsize, # buf1 = NODE_HEADER_SIZE, buf1 + buf0 + validtrailer = buf2 + buf, is-encoded(nodeheader(node-size-headerless(a), false), buf1), is-encoded(a, subarray(buf0, 0, node-size-headerless(a))), abs-padding(buf2) ∧ abs-nodes(buf, m + # buf2, a ', @(m0, m1) ', false) ∨ m0 = m ∧ m1 = # buf2 ∧ abs-node(buf2, a) ∧ abs-nodes(buf, m + # buf2, [], [], false) ⊦ m0 = m ∧ m1 = 2 * NODE_HEADER_SIZE + a.alignedsize |
# buf1 = NODE_HEADER_SIZE, # buf0 = a.alignedsize, buf1 + buf0 + validtrailer = buf2 + buf, abs-nodes(buf, m + # buf2, a ', @(m0, m1) ', false), abs-padding(buf2), is-encoded(a, subarray(buf0, 0, node-size-headerless(a))), is-encoded(nodeheader(node-size-headerless(a), false), buf1) ⊦ m0 = m ∧ m1 = 2 * NODE_HEADER_SIZE + a.alignedsize
Used simplifier rules: ls-abs-node-buf-size: ⊦ abs-node(buf, nd) → # buf = nd.alignedsize + 2 * NODE_HEADER_SIZE;%abs-nodes-elems-empty-adr-empty-h: ⊦ abs-nodes(buf, m, [], lax, weak) → lax = [];%c: ⊦ m + n = n + m; from specification nat-basic%# buf = n ⊦ subarray(buf, 0, n) = buf; (s)