| # buf1 = NODE_HEADER_SIZE, is-aligned(# buf0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(# buf0, true), buf1) ⊦ ∃ buf3, buf2. buf1 + buf0 + validtrailer = buf3 + buf2 ∧ abs-padding(buf3) ∧ abs-nodes(buf2, m + # buf3, [], [], weak), weak ∧ abs-failed(buf1 + buf0 + validtrailer) |
Used simplifier rules: abs-nodes-mkbuf0-empty-h: ⊦ abs-nodes(mkbuf(0), m, x, lax, weak) ↔ x = [] ∧ lax = [];% ⊦ buf + mkbuf(0) = buf; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ buf + buf0 = buf + buf1 ↔ buf0 = buf1; (s)%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult%mult-c: ⊦ m * n = n * m; from specification nat-mult%⊦ is-encoded(nodeheader(# buf0, true), buf1) ∧ is-aligned(# buf0, 2 * NODE_HEADER_SIZE) → abs-padding(buf1 + buf0 + validtrailer); (ss)% ⊦ #(buf + buf0) = # buf + # buf0; (s)% ⊦ # validtrailer = NODE_HEADER_SIZE; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic Used terms: buf1 + buf0 + validtrailer, mkbuf(0)