| a0 ' + y0 = firstn(n, a0 ' + y0) + a ' + y, a0 ∈ firstn(n, a0 ' + y0) ∨ a0 = a ∨ a0 ∈ y ⊦ a0 ' + firstn(n, y0) = firstn(n, a0 ' + y0) + a ' |
∀ 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 ', a0 ' + y0 = firstn(n0 +1, a0 ' + y0) + a ' + y, a0 ∈ firstn(n0 +1, a0 ' + y0) ∨ a0 = a ∨ a0 ∈ y ⊦ a0 ' + firstn(n0 +1, y0) = firstn(n0 +1, a0 ' + y0) + a '
Used simplifier rules: firstN-zero: ⊦ firstn(0, x) = [];%nat freely generated by 0, +1;;%Nil: ⊦ [] + x = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list%c-06: ⊦ a ' + x = b ' + y ↔ a = b ∧ x = y; from specification list%app: ⊦ x + [] = x; from specification list%c-04: ⊦ a ' = b ' ↔ a = b; from specification list