| n < m, n ≤ # x0, m ≤ 1 + # x0, ∀ n, m. n < m ∧ n < # x0 ∧ m ≤ # x0 → firstn(m, x0)[n] = x0[n] ∨ x0 = [] ⊦ firstn(m, a ' + x0)[n] = (a ' + x0)[n] |
n < m, m ≤ 1 + # x0, n ≤ # x0, ∀ n, m. n < m ∧ n < # x0 ∧ m ≤ # x0 → firstn(m, x0)[n] = x0[n] ∨ x0 = [] ⊦ firstn(m, a ' + x0)[n] = (a ' + x0)[n], x0 = []
Used simplifier rules: one-03: ⊦ a '[0] = a;%first-num: n ≠ 0 ⊦ firstn((* n), x) = x.head ' + firstn(n -1, x.tail);%firstN-zero: ⊦ firstn(0, x) = [];% ⊦ x + [] = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ # [] = 0; (s)% ⊦ m ≤ 0 ↔ m = 0; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat% ⊦ 0 < n ↔ n ≠ 0; (s)% ⊦ m < n → n ≠ 0; (s)% ⊦ m ≠ 0 → (m ≤ 1 ↔ m = 1); (s)% ⊦ a '.head = a; (s)% ⊦ a '.tail = []; (s) Used formulas: x0 = []