| # 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)) |
# buf1 = (2 * NODE_HEADER_SIZE + gnd.alignedsize) + gndx3.flashsize, # gndx0 = # lax, # buf2 = gndx0.flashsize + # buf1, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + gnd.alignedsize, gndx3.flashsize) = subarray(buf1, 2 * NODE_HEADER_SIZE + gnd.alignedsize, gndx3.flashsize), abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + gnd.alignedsize), gnd), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false) ⊦ ∃ gndx, gndx1. gndx0 + gnd ' + gndx3 = gndx + gndx1 ∧ # 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: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)% ⊦ m ≤ m + n; (s)% ⊦ m + 1 ≠ 0; (s)% ⊦ m +1 = m + 1; (s)% ⊦ #(gnd ' + gndx) = (# gndx)+1; (s)% ⊦ gnd ' + gndx ≠ []; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n = m + n0 ↔ n = n0; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gnd.flashsize = 2 * NODE_HEADER_SIZE + gnd.alignedsize; (s)% ⊦ (gnd ' + gndx).flashsize = gnd.flashsize + gndx.flashsize; (s)% ⊦ gnd + gndx = gnd ' + gndx; (s)