| 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 = firstn(n0 +1, a0 ' + 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 ', 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;;% ⊦ [] + x = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ a ' + x = b ' + y ↔ a = b ∧ x = y; (ws)% ⊦ x + [] = x; (s)% ⊦ a ' = b ' ↔ a = b; (s)