| # buf = 2 * NODE_HEADER_SIZE + n0, # buf1 = # buf, subarray(buf1, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0) = subarray(buf, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0), n < NODE_HEADER_SIZE + n0, n < # buf, n - NODE_HEADER_SIZE < # subarray(buf1, NODE_HEADER_SIZE, n0) + # validtrailer, is-aligned(n0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(n0, true), subarray(buf1, 0, NODE_HEADER_SIZE)) ⊦ buf1[n] = (n < NODE_HEADER_SIZE ⊃ buf1[n] ;(n - NODE_HEADER_SIZE < # subarray(buf1, NODE_HEADER_SIZE, n0) ⊃ subarray(buf1, NODE_HEADER_SIZE, n0)[n - NODE_HEADER_SIZE] ;(validtrailer)[n - NODE_HEADER_SIZE - # subarray(buf1, NODE_HEADER_SIZE, n0)] ) ), buf = mkbuf(0) |
# buf = 2 * NODE_HEADER_SIZE + n0, # buf1 = # buf, subarray(buf1, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0) = subarray(buf, NODE_HEADER_SIZE, NODE_HEADER_SIZE + n0), n < NODE_HEADER_SIZE + n0, n < # buf, is-aligned(n0, 2 * NODE_HEADER_SIZE), is-encoded(nodeheader(n0, true), subarray(buf1, 0, NODE_HEADER_SIZE)) ⊦ buf1[n] = (n < NODE_HEADER_SIZE ⊃ buf1[n];subarray(buf1, NODE_HEADER_SIZE, n0)[n - NODE_HEADER_SIZE]), buf = mkbuf(0)
Used simplifier rules: ⊦ NODE_HEADER_SIZE + n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + m = 2 * m; (s)% ⊦ # validtrailer = NODE_HEADER_SIZE; (s)%c: ⊦ m + n = n + m; from specification nat-basic%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ # subarray(buf, m, n) = n; (s)