| n < n2, n < n1 + # buf, n2 ≤ n1 + # buf ⊦ (mkempbuf(n0 + n1) + buf)[n0 + n] = (mkempbuf(n1) + buf)[n] |
⊦ n < # buf + # buf0 → (buf + buf0)[n] = (n < # buf ⊃ buf[n];buf0[n - # buf])
n < n1 + # buf, n < n2, n0 + n < # mkempbuf(n0 + n1) + # buf, n2 ≤ n1 + # buf ⊦ (n0 + n < # mkempbuf(n0 + n1) ⊃ mkempbuf(n0 + n1)[n0 + n];buf[n0 + n - # mkempbuf(n0 + n1)]) = (mkempbuf(n1) + buf)[n]
Used simplifier rules: ⊦ # mkempbuf(n) = n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n < m + n0 ↔ n < n0; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%c: ⊦ m + n = n + m; from specification nat-basic Used terms: n0 + n, buf, mkempbuf(n0 + n1)