| 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(mkempbuf(n), m - # buf, NODE_HEADER_SIZE) = validtrailer, # buf < m + NODE_HEADER_SIZE, is-aligned(m, NODE_HEADER_SIZE), is-aligned(# buf, NODE_HEADER_SIZE), # buf ≤ m, m + NODE_HEADER_SIZE ≤ # buf + n ⊦ n = 0
Used simplifier rules: ⊦ m < m + n ↔ n ≠ 0; (s)% ⊦ NODE_HEADER_SIZE + n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≤ n ↔ ¬ n < m; (ss)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ m + m0 ≤ m ↔ m0 = 0; (s)%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]%# buf ≤ n0, n0 + m ≤ # buf + # buf0 ⊦ subarray(buf + buf0, n0, m) = subarray(buf0, n0 - # buf, m); (s)% ⊦ # mkempbuf(n) = n; (s)