| abs-nodes(buf0, m + # buf1, a ', @(m0, m1) ' + lax0, weak), abs-padding(buf1) ⊦ ∃ buf3, buf2. buf1 + buf0 = buf3 + buf2 ∧ ( abs-padding(buf3) ∧ abs-nodes(buf2, m + # buf3, a ', @(m0, m1) ' + lax0, weak) ∨ @(m0, m1) ' + lax0 = @(m, 2 * NODE_HEADER_SIZE + a.alignedsize) ' ∧ abs-node(buf3, a) ∧ abs-nodes(buf2, m + # buf3, [], [], weak)) |
abs-nodes(buf0, m + # buf1, a ', @(m0, m1) ' + lax0, weak), abs-padding(buf1) ⊦ ∃ buf, buf2. buf1 + buf0 = buf + buf2 ∧ ( buf1 = buf ∧ abs-nodes(buf2, m + # buf, a ', @(m0, m1) ' + lax0, weak) ∨ @(m0, m1) ' + lax0 = @(m, 2 * NODE_HEADER_SIZE + a.alignedsize) ' ∧ abs-node(buf, a) ∧ abs-nodes(buf2, m + # buf, [], [], weak))
Used simplifier rules: ⊦ buf0 + buf1 = buf2 + buf3 ∧ abs-padding(buf0) → (abs-padding(buf2) ↔ buf0 = buf2); (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]