| firstn(n, a ' + y) = a0 + y0, m0 < n, n ≤ 1 + # y, m0 ≤ # y, ∀ n, x. n ≤ # x ∧ m0 ≤ n ∧ m0 ≤ # x → firstn(m0, firstn(n, x)) = firstn(m0, x) ⊦ a0 ' + firstn(m0, y0) = a ' + firstn(m0, y), firstn(n, a ' + y) = [] |
firstn(n, a ' + y) = a0 ' + y0, m0 < n, m0 ≤ # y, n ≤ 1 + # y, ∀ n, x. n ≤ # x ∧ m0 ≤ n ∧ m0 ≤ # x → firstn(m0, firstn(n, x)) = firstn(m0, x) ⊦ a0 ' + firstn(m0, y0) = a ' + firstn(m0, y)
Used simplifier rules: firstN-empty: ⊦ firstn(n, x) = [] ↔ n = 0;% ⊦ a ∈ b ' ↔ a = b; (s)% ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list%in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list% ⊦ m < n → n ≠ 0; (s)% ⊦ a + x = a ' + x; (s)