| # buf2 = gndx0.flashsize + gndx1.flashsize, # gndx0 = # lax, # buf1 = gndx1.flashsize, gndx1.flashsize = n0 + 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, n0) = subarray(buf1, 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, n0), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false), 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize ≤ gndx1.flashsize, err = ESUCCESS → abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize), (gndx0 + gndx1)[# lax]) ∧ m = 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪m0 := gndx0.flashsize + m; m1 := # gndx0 + 1⟫ ( m1 ≤ # gndx0 + # gndx1 ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ gndx2, gndx3. gndx0 + gndx1 = gndx2 + gndx3 ∧ # gndx2 = m1 ∧ m0 = gndx2.flashsize ∧ (∃ lax0, buf0, buf1. lax0.to-adr(m2) = lax.to-adr(m2) + @(m2, n + gndx0.flashsize, m) ' ∧ buf2 = buf0 + buf1 ∧ # buf0 = gndx2.flashsize ∧ abs-nodes(buf0, n, gndx2, lax0, false)))) ∧ # gndx0 + # gndx1 - m1 < # gndx1), # lax + # gndx1 = 0, gndx1 = [] |
# buf1 = gndx1.flashsize, # gndx0 = # lax, # buf2 = gndx0.flashsize + gndx1.flashsize, gndx1.flashsize = n0 + 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, subarray(buf2, gndx0.flashsize + 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, n0) = subarray(buf1, 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, n0), abs-nodes(subarray(buf2, 0, gndx0.flashsize), n, gndx0, lax, false), 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize ≤ gndx1.flashsize, err = ESUCCESS → abs-node(subarray(buf2, gndx0.flashsize, 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize), (gndx0 + gndx1)[# lax]) ∧ m = 2 * NODE_HEADER_SIZE + (gndx0 + gndx1)[# lax].alignedsize, err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪m1 := # gndx0 + 1⟫ ( m1 ≤ # gndx0 + # gndx1 ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ gndx2, gndx3. gndx0 + gndx1 = gndx2 + gndx3 ∧ # gndx2 = m1 ∧ gndx0.flashsize + m = gndx2.flashsize ∧ (∃ lax0, buf0, buf1. lax0.to-adr(m2) = lax.to-adr(m2) + @(m2, n + gndx0.flashsize, m) ' ∧ buf2 = buf0 + buf1 ∧ # buf0 = gndx2.flashsize ∧ abs-nodes(buf0, n, gndx2, lax0, false)))) ∧ # gndx0 + # gndx1 - m1 < # gndx1), # lax + # gndx1 = 0, gndx1 = []