| # buf2 = gndx0.flashsize + gndx1.flashsize, # gndx0 = # lax, # buf1 = gndx1.flashsize, gndx1.flashsize = n0 + 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize, n0) = subarray(buf1, 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize, n0), abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize), gndx1.head), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false), 1 ≤ # gndx1, 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize ≤ gndx1.flashsize ⊦ # lax + # gndx1 = 0, gndx1 = [], ∃ gndx, gndx2. gndx0 + gndx1 = gndx + gndx2 ∧ # gndx = # lax + 1 ∧ gndx0.flashsize + 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize = gndx.flashsize ∧ (∃ buf, buf0. buf2 = buf + buf0 ∧ # buf = gndx.flashsize ∧ abs-nodes(buf, n, gndx, lax + @(n + gndx0.flashsize, 2 * NODE_HEADER_SIZE + gndx1.head.alignedsize) ', false)) |
# buf1 = gndx1.flashsize, # gndx0 = # lax, # buf2 = gndx0.flashsize + gndx1.flashsize, gndx1.flashsize = n0 + 2 * NODE_HEADER_SIZE + gnd.alignedsize, gndx1 = gnd + gndx3, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + gnd.alignedsize, n0) = subarray(buf1, 2 * NODE_HEADER_SIZE + gnd.alignedsize, n0), abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + gnd.alignedsize), gnd), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false), 2 * NODE_HEADER_SIZE + gnd.alignedsize ≤ gndx1.flashsize, 1 ≤ # gndx1 ⊦ # lax + # gndx1 = 0, gndx1 = [], ∃ gndx, gndx2. gndx0 + gndx1 = gndx + gndx2 ∧ # gndx = # lax + 1 ∧ gndx0.flashsize + 2 * NODE_HEADER_SIZE + gnd.alignedsize = gndx.flashsize ∧ (∃ buf, buf0. buf2 = buf + buf0 ∧ # buf = gndx.flashsize ∧ abs-nodes(buf, n, gndx, lax + @(n + gndx0.flashsize, 2 * NODE_HEADER_SIZE + gnd.alignedsize) ', false))
Used simplifier rules: gndx ≠ [] ⊦ gnd = gndx.head ∧ gndx0 = gndx.tail ↔ gndx = gnd + gndx0; (elim) Used terms: gndx1, gnd, gndx3