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