| # buf4 = # buf, # buf3 = gndx0.flashsize, # buf = 2 * NODE_HEADER_SIZE + gnd.alignedsize, # buf0 = gndx3.flashsize, # gndx0 = # lax, abs-node(buf4, gnd), abs-nodes(buf3, n, gndx0, lax, false) ⊦ ∃ buf5, buf1. buf3 + buf4 + subarray(buf0 + buf, # buf, gndx3.flashsize) = buf5 + buf1 ∧ # buf5 = gndx0.flashsize + # buf ∧ abs-nodes(buf5, n, gndx0 + gnd ', lax + @(n + gndx0.flashsize, # buf) ', false) |
Used simplifier rules: append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ #(buf + buf0) = # buf + # buf0; (s)%⊦ abs-nodes(buf0, m, gndx, lax0, false) → ( abs-nodes(buf0 + buf1, m, gndx + gndx0, lax0 + lax1, weak) ↔ abs-nodes(buf1, m + # buf0, gndx0, lax1, weak)); (ss)%⊦ abs-node(buf, gnd) → ( abs-nodes(buf, m, gnd ', ladr ', false) ↔ ladr = @(m, gnd.flashsize)); (ss)% ⊦ gnd.flashsize = 2 * NODE_HEADER_SIZE + gnd.alignedsize; (s)% ⊦ @(m, m0) = @(m1, m2) ↔ m = m1 ∧ m0 = m2; (ws)% ⊦ m + n = m + n0 ↔ n = n0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store] Used terms: buf3 + buf4, subarray(buf0 + buf, # buf, gndx3.flashsize)