| abs-failed(mkbuf(0)) ⊦ |
⊦ abs-failed(buf) ↔ # buf ≥ NODE_HEADER_SIZE ∧ is-aligned(# buf, NODE_HEADER_SIZE) ∧ (∃ buf0, buf1. buf = buf0 + buf1 ∧ # buf0 = NODE_HEADER_SIZE ∧ (is-garbage-header(buf0) ∨ (∃ ndhd. is-encoded(ndhd, buf0) ∧ # buf1 ≤ align↑(ndhd.size, 2 * NODE_HEADER_SIZE))))
Used simplifier rules: ⊦ buf + buf0 = mkbuf(0) ↔ buf = mkbuf(0) ∧ buf0 = mkbuf(0); (ws)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ # mkbuf(n) = n; (s)% ⊦ n ≥ m ↔ m ≤ n; (s)% ⊦ m ≤ 0 ↔ m = 0; (s)% ⊦ NODE_HEADER_SIZE ≠ 0; (s) Used terms: mkbuf(0)