| # buf4 = NODE_HEADER_SIZE, # buf1 = NODE_HEADER_SIZE, buf1 + buf0 + validtrailer = buf4 + (buf3 + validtrailer) + buf, abs-nodes(buf, 2 * NODE_HEADER_SIZE + m + # buf3, nd ' + x0, @(m0, m1) ' + lax0, weak), is-aligned(# buf0, 2 * NODE_HEADER_SIZE), is-aligned(# buf3, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(# buf0, true), buf1), is-encoded(nodeheader(# buf3, true), buf4) ⊦ |
⊦ # buf = # buf0 → (buf + buf1 = buf0 + buf2 ↔ buf = buf0 ∧ buf1 = buf2)
Used simplifier rules: abs-nodes-nospace-h: # buf < NODE_HEADER_SIZE ⊦ abs-nodes(buf, m, x, lax, boolvar) ↔ x = [] ∧ lax = [] ∧ buf = mkbuf(0);% ⊦ is-encoded(ndhd, buf) → (is-encoded(ndhd0, buf) ↔ ndhd = ndhd0); (s)%⊦ nodeheader(m, boolvar) = nodeheader(m0, boolvar0) ↔ m = m0 ∧ (boolvar ↔ boolvar0); (ws)%⊦ # buf = # buf0 → (buf + buf1 = buf0 + buf2 ↔ buf = buf0 ∧ buf1 = buf2); (ws)% ⊦ buf + buf0 = buf ↔ # buf0 = 0; (s)% ⊦ # buf = 0 ↔ buf = mkbuf(0); (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ # mkbuf(n) = n; (s)% ⊦ 0 < m ↔ m ≠ 0; (s)% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ a ' + x ≠ []; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: (buf3 + validtrailer) + buf, buf4, buf0 + validtrailer, buf1