| (∀ a, y. a = x0.last ∧ y = x0.butlast ↔ x0 = y + a ') ∨ x0 = [] ⊦ a = (a0 ' + x0).last ∧ y = (a0 ' + x0).butlast ↔ a0 ' + x0 = y + a ' |
x0 = a1 + x, (∀ a, y. a = x0.last ∧ y = x0.butlast ↔ x0 = y + a ') ∨ x0 = [] ⊦ a = (a0 ' + x0).last ∧ y = (a0 ' + x0).butlast ↔ a0 ' + x0 = y + a '
Used simplifier rules: last-one: ⊦ a '.last = a;%butlast-one: ⊦ a '.butlast = [];%list freely generated by [], +;;% ⊦ x + [] = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ [] + x = x; (s)% ⊦ a ' = b ' ↔ a = b; (s)% ⊦ a ' = x + b ' ↔ a = b ∧ x = []; (ws)