| y0 = firstn(n0, y0) + a ' + y, ∀ a0, y0, a, y. a0 ' + y0 = firstn(n0, a0 ' + y0) + a ' + y ∧ (a0 ∈ firstn(n0, a0 ' + y0) ∨ a0 = a ∨ a0 ∈ y) → a0 ' + firstn(n0, y0) = firstn(n0, a0 ' + y0) + a ' ⊦ y0.head ' + firstn(n0, y0.tail) = firstn(n0, y0) + a ' |
y0 = firstn(n0, y0) + a ' + y, y0 = a1 + y1, ∀ a0, y0, a, y. a0 ' + y0 = firstn(n0, a0 ' + y0) + a ' + y ∧ (a0 ∈ firstn(n0, a0 ' + y0) ∨ a0 = a ∨ a0 ∈ y) → a0 ' + firstn(n0, y0) = firstn(n0, a0 ' + y0) + a ' ⊦ a1 ' + firstn(n0, y1) = firstn(n0, y0) + a ', y0 = []
Used simplifier rules: firstN-empty: ⊦ firstn(n, x) = [] ↔ n = 0;% ⊦ x + y = [] ↔ x = [] ∧ y = []; (as)% ⊦ a ' + x ≠ []; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list%x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: y0, a1, y1