| m = n0 + # buf, subarray(mkempbuf(n), n0, NODE_HEADER_SIZE) = validtrailer, # buf < m + NODE_HEADER_SIZE, is-aligned(# buf, NODE_HEADER_SIZE), is-aligned(m, NODE_HEADER_SIZE), m + NODE_HEADER_SIZE ≤ # buf + n, # buf ≤ m ⊦ n = 0 |
subarray(mkempbuf(n), n0, NODE_HEADER_SIZE) = validtrailer, is-aligned(# buf, NODE_HEADER_SIZE), is-aligned(n0, NODE_HEADER_SIZE), n0 + NODE_HEADER_SIZE ≤ n ⊦ n = 0
Used simplifier rules: ⊦ NODE_HEADER_SIZE + n ≠ 0; (s)% ⊦ m < m + n ↔ n ≠ 0; (s)%m ≠ 0, is-aligned(n1, m) ⊦ is-aligned(n0 + n1, m) ↔ is-aligned(n0, m); (s)% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m ≤ m + n; (s)