| n < # buf0 + m, m ≤ # buf1, # buf0 ≤ n, ∀ n. n < m → buf1[n] = empty ⊦ (buf0 + buf1)[n] = empty, m = 0 |
⊦ n < # buf + # buf0 → (buf + buf0)[n] = (n < # buf ⊃ buf[n];buf0[n - # buf])
n < # buf0 + m, n < # buf0 + # buf1, # buf0 ≤ n, m ≤ # buf1, ∀ n. n < m → buf1[n] = empty ⊦ (n < # buf0 ⊃ buf0[n];buf1[n - # buf0]) = empty, m = 0
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m + n < m + n0 ↔ n < n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: n, buf1, buf0