| # buf2 = gndx0.flashsize + gndx1.flashsize, # gndx0 = # lax, # buf1 = gndx1.flashsize, gndx1.flashsize = n0 + 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].alignedsize, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].alignedsize, n0) = subarray(buf1, 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].alignedsize, n0), abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].alignedsize), gndx1[# lax - # gndx0]), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false), 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].alignedsize ≤ gndx1.flashsize, 1 ≤ # gndx1 ⊦ # lax + # gndx1 = 0, gndx1 = [], # lax < # gndx0, ∃ gndx, gndx2. gndx0 + gndx1 = gndx + gndx2 ∧ # gndx = # lax + 1 ∧ gndx0.flashsize + 2 * NODE_HEADER_SIZE + gndx1[# lax - # gndx0].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[# lax - # gndx0].alignedsize) ', false)) |
# 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))
Used simplifier rules: ⊦ m ≤ m; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ gndx ≠ [] → gndx[0] = gndx.head; (s)% ⊦ m - m = 0; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)