| abs-nodes(buf, 0, x, lax0 + ladr ' + lax1, boolvar0), abs-nodes(buf, 0, x, lax0 + ladr ' + lax1, boolvar0) → (∃ buf0, buf1, buf2, x0, a, x1. x = x0 + a ' + x1 ∧ # x0 = # lax0 ∧ buf = buf0 + buf1 + buf2 ∧ ladr = @(0 + # buf0, a.flashsize) ∧ # buf1 = a.flashsize ∧ abs-node(buf1, a)) ⊦ ∃ buf0, buf1, buf2, x0, a, x1. x = x0 + a ' + x1 ∧ # x0 = # lax0 ∧ buf = buf0 + buf1 + buf2 ∧ ladr = @(# buf0, 2 * NODE_HEADER_SIZE + a.alignedsize) ∧ # buf1 = 2 * NODE_HEADER_SIZE + a.alignedsize ∧ abs-node(buf1, a) |
# buf1 = 2 * NODE_HEADER_SIZE + a.alignedsize, # x0 = # lax0, abs-node(buf1, a), abs-nodes(buf0 + buf1 + buf2, 0, x0 + a ' + x1, lax0 + @(# buf0, # buf1) ' + lax1, boolvar0) ⊦ ∃ buf3, buf4, buf5, x2, a0, x3. x0 + a ' + x1 = x2 + a0 ' + x3 ∧ # x2 = # lax0 ∧ buf0 + buf1 + buf2 = buf3 + buf4 + buf5 ∧ @(# buf0, # buf1) = @(# buf3, 2 * NODE_HEADER_SIZE + a0.alignedsize) ∧ # buf4 = 2 * NODE_HEADER_SIZE + a0.alignedsize ∧ abs-node(buf4, a0)
Used simplifier rules: ls-abs-node-buf-size: ⊦ abs-node(buf, nd) → # buf = nd.alignedsize + 2 * NODE_HEADER_SIZE;% ⊦ nd.flashsize = 2 * NODE_HEADER_SIZE + nd.alignedsize; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]