| # x = 1 + # y0, # x.tail = # y0 ∧ (n < # y0 → x.tail[n] = y0[n]) → x.tail = y0, ∀ n. ¬ # y0 < n → x[n] = (a ' + y0)[n] ⊦ x = a ' + y0 |
# x = 1 + # y0, x = a0 + y, # y = # y0 ∧ (n < # y0 → y[n] = y0[n]) → y = y0, ∀ n. ¬ # y0 < n → x[n] = (a ' + y0)[n] ⊦ x = a ' + y0, x = []
Used simplifier rules: ⊦ # [] = 0; (s)% ⊦ m + 1 ≠ 0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: x, a0, y