| 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.first ' + firstn(n0, y0.rest) = firstn(n0, y0) + a ' |
y0 = a1 + y1 ∧ y0 ≠ [], 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 ' ⊦ a1 ' + firstn(n0, y1) = firstn(n0, y0) + a '
Used simplifier rules: firstN-empty: ⊦ firstn(n, x) = [] ↔ n = 0;%app-02-ant: ⊦ ¬ x + y ≠ [] ↔ x = [] ∧ y = []; from specification list%e-01: ⊦ a ' + x ≠ []; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list%x ≠ [] ⊦ a = x.first ∧ y = x.rest ↔ x = a + y; (elim) Used terms: y0, a1, y1