| 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 ' |
∀ a2, y0. a2 = (a1 ' + x).last ∧ y0 = (a1 ' + x).butlast ↔ a1 ' + x = y0 + a2 ' ⊦ a = (a1 ' + x).last ∧ y = a0 ' + (a1 ' + x).butlast ↔ a0 ' + a1 ' + x = y + a '
Used simplifier rules: last-rec: ⊦ (b ' + a ' + x).last = (a ' + x).last;%butlast-rec: ⊦ (a ' + b ' + x).butlast = a ' + (b ' + x).butlast;% ⊦ a ' + x ≠ []; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ a + x = a ' + x; (s)