| n ≤ # y + 1, ∀ x0, n. # x0 < #(y + a ') → n ≤ # x0 → butlastn(n, x0) + lastn(n, x0) = x0 ⊦ butlastn(n, y + a ') + lastn(n, y + a ') = y + a ' |
0 < n ⊦ lastn((* n), x + a ') = lastn(n -1, x) + a '
0 < n, n ≤ # y + 1, ∀ x0, n. # x0 < #(y + a ') → n ≤ # x0 → butlastn(n, x0) + lastn(n, x0) = x0 ⊦ butlastn(n, y + a ') + lastn(n -1, y) + a ' = y + a '
Used simplifier rules: lastN-zero: ⊦ lastn(0, x) = [];%zero: ⊦ 0 < m ↔ m ≠ 0; from specification nat-basic1%butlastN-base: ⊦ butlastn(0, x) = x; from specification list-last%app: ⊦ x + [] = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list%app-01: ⊦ x + y = x + z ↔ y = z; from specification list Used terms: a, y, n