| m0 < n, ∀ n, x. m0 ≤ n → lastn(m0, lastn(n, x)) = lastn(m0, x) ⊦ lastn(m0, (lastn(n -1, x.butlast) + x.last).butlast) + (lastn(n -1, x.butlast) + x.last).last ' = lastn(m0, x.butlast) + x.last ', n = 0 |
m0 < n, ∀ n, x. m0 ≤ n → lastn(m0, lastn(n, x)) = lastn(m0, x) ⊦ lastn(m0, lastn(n - 1, x.butlast)) = lastn(m0, x.butlast)
Used simplifier rules: ⊦ x + y = z + y ↔ x = z; (s)% ⊦ (x + a ').last = a; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ (x + a ').butlast = x; (s)% ⊦ x + a = x + a '; (s)% ⊦ n -1 = n - 1; (s)% ⊦ m < n → n ≠ 0; (s)