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