| is-aligned(m, NODE_HEADER_SIZE), is-aligned(# buf, NODE_HEADER_SIZE), range=(buf, m, validtrailer, 0, NODE_HEADER_SIZE) ⊦ range=(buf + mkempbuf(n), m, validtrailer, 0, NODE_HEADER_SIZE) |
⊦ range=(buf, n0, buf0, n1, m) ↔ n0 + m ≤ # buf ∧ n1 + m ≤ # buf0 ∧ (∀ n. n < m → buf[n0 + n] = buf0[n1 + n])
is-aligned(# buf, NODE_HEADER_SIZE), is-aligned(m, NODE_HEADER_SIZE), range=(buf, m, validtrailer, 0, NODE_HEADER_SIZE) ⊦ m + NODE_HEADER_SIZE ≤ #(buf + mkempbuf(n)) ∧ 0 + NODE_HEADER_SIZE ≤ # validtrailer ∧ (∀ n2. n2 < NODE_HEADER_SIZE → (buf + mkempbuf(n))[m + n2] = (validtrailer)[0 + n2])
Used terms: NODE_HEADER_SIZE, 0, validtrailer, m, buf + mkempbuf(n)