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