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