| # buf0 = a.alignedsize, # buf1 = NODE_HEADER_SIZE, is-encoded(nodeheader(node-size-headerless(a), false), buf1), is-encoded(a, subarray(buf0, 0, node-size-headerless(a))) ⊦ (∃ buf, buf2. buf1 + buf0 + validtrailer = buf + buf2 ∧ ( abs-padding(buf) ∧ abs-nodes(buf2, m + # buf, a ', ladr ', false) ∨ ladr.off = m ∧ ladr.size = # buf ∧ abs-node(buf, a) ∧ abs-nodes(buf2, ladr.off + # buf, [], [], false))) ↔ ladr = @(m, 2 * NODE_HEADER_SIZE + a.alignedsize) |
# buf1 = NODE_HEADER_SIZE, # buf0 = a.alignedsize, ladr = @(m0, m1), is-encoded(a, subarray(buf0, 0, node-size-headerless(a))), is-encoded(nodeheader(node-size-headerless(a), false), buf1) ⊦ (∃ buf, buf2. buf1 + buf0 + validtrailer = buf + buf2 ∧ ( abs-padding(buf) ∧ abs-nodes(buf2, m + # buf, a ', ladr ', false) ∨ m0 = m ∧ m1 = # buf ∧ abs-node(buf, a) ∧ abs-nodes(buf2, m0 + # buf, [], [], false))) ↔ ladr = @(m, 2 * NODE_HEADER_SIZE + a.alignedsize)
Used simplifier rules: ⊦ m = ladr.off ∧ m0 = ladr.size ↔ ladr = @(m, m0); (elim) Used terms: ladr, m0, m1