| subarray(buf + mkempbuf(n), m, NODE_HEADER_SIZE) = validtrailer, is-aligned(# buf, NODE_HEADER_SIZE), is-aligned(m, NODE_HEADER_SIZE), m + NODE_HEADER_SIZE ≤ # buf + n ⊦ # buf ≤ m, m + NODE_HEADER_SIZE ≤ # buf ∧ subarray(buf, m, NODE_HEADER_SIZE) = validtrailer |
subarray(buf + mkempbuf(n), m, NODE_HEADER_SIZE) = validtrailer, m < # buf, is-aligned(# buf, NODE_HEADER_SIZE), is-aligned(m, NODE_HEADER_SIZE), m + NODE_HEADER_SIZE ≤ # buf + n ⊦ buf = mkbuf(0), m + NODE_HEADER_SIZE ≤ # buf ∧ subarray(buf, m, NODE_HEADER_SIZE) = validtrailer
Used simplifier rules: ⊦ # buf = 0 ↔ buf = mkbuf(0); (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≤ n ↔ ¬ n < m; (ss)