| # buf1 = a.alignedsize + 2 * NODE_HEADER_SIZE, abs-node(buf1, a), abs-nodes(subarray(buf0 + buf1, 0, align↓(# buf0 + # buf1, EB_PAGE_SIZE)), 0, x + a ', lax + @(# buf0, # buf1) ', boolvar), abs-nodes(buf0, 0, x, lax, false), abs-nodes(buf0, 0, x, lax, false) ∧ abs-node(buf1, a) ∧ is-aligned(align↓(# buf0 + # buf1, EB_PAGE_SIZE), NODE_HEADER_SIZE) ∧ is-aligned(0, NODE_HEADER_SIZE) ∧ align↓(# buf0 + # buf1, EB_PAGE_SIZE) ≤ # buf0 + # buf1 ∧ abs-nodes(subarray(buf0 + buf1, 0, align↓(# buf0 + # buf1, EB_PAGE_SIZE)), 0, x + a ', lax + @(0 + # buf0, a.flashsize) ', boolvar) → align↓(# buf0 + # buf1, EB_PAGE_SIZE) = # buf0 + # buf1 ⊦ is-aligned(# buf0 + # buf1, EB_PAGE_SIZE) |
# buf1 = a.alignedsize + 2 * NODE_HEADER_SIZE, abs-node(buf1, a), abs-nodes(subarray(buf0 + buf1, 0, align↓(# buf0 + # buf1, EB_PAGE_SIZE)), 0, x + a ', lax + @(# buf0, # buf1) ', boolvar), abs-nodes(buf0, 0, x, lax, false) ⊦ is-aligned(# buf0 + # buf1, EB_PAGE_SIZE), is-aligned(align↓(# buf0 + # buf1, EB_PAGE_SIZE), NODE_HEADER_SIZE)
Used simplifier rules: abs-nodes-unique-strong-h: ⊦ abs-nodes(buf, m, x0, lax0, false) → (abs-nodes(buf, m, x1, lax1, boolvar1) ↔ x0 = x1 ∧ lax0 = lax1);%n ≠ 0 ⊦ align↓(n0, n) = n0 ↔ is-aligned(n0, n); (s)% ⊦ nd.flashsize = 2 * NODE_HEADER_SIZE + nd.alignedsize; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)%m ≠ 0 ⊦ align↓(n0, m) ≤ n0; (s)% ⊦ EB_PAGE_SIZE ≠ 0; (s)%n ≠ 0 ⊦ is-aligned(0, n); (s)% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ abs-node(buf, nd0) → (abs-node(buf, nd1) ↔ nd0 = nd1); (s)