| # buf = (2 * NODE_HEADER_SIZE + a.alignedsize) + x.flashsize, ∃ buf0, buf1. buf = buf0 + buf1 ∧ m0 = m ∧ m1 = # buf0 ∧ abs-node(buf0, a) ∧ abs-nodes(buf1, m + # buf0, x, lax0, false) ⊦ abs-nodes(buf, m, a ' + x, @(m0, m1) ' + lax0, false) |
# buf1 = a.alignedsize + 2 * NODE_HEADER_SIZE, # buf0 = x.flashsize, abs-node(buf1, a), abs-nodes(buf0, m + # buf1, x, lax0, false) ⊦ abs-nodes(buf1 + buf0, m, a ' + x, @(m, # buf1) ' + lax0, false)
Used simplifier rules: ls-abs-node-buf-size: ⊦ abs-node(buf, nd) → # buf = nd.alignedsize + 2 * NODE_HEADER_SIZE;%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n = m + n0 ↔ n = n0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ #(buf + buf0) = # buf + # buf0; (s)