| (m0 + 1) + n < # x, ∀ n0, x0. m0 + n0 < # x0 → restn(m0, x0).head ' + firstn(n0, restn(m0, x0).tail) = firstn(n0, restn(m0, x0)) + x0[m0 + n0] ' ⊦ restn(m0, x.tail).head ' + firstn(n, restn(m0, x.tail).tail) = firstn(n, restn(m0, x.tail)) + x.tail[m0 + n] ', x = [] |
x = a + y, (m0 + 1) + n < # x, ∀ n0, x0. m0 + n0 < # x0 → restn(m0, x0).head ' + firstn(n0, restn(m0, x0).tail) = firstn(n0, restn(m0, x0)) + x0[m0 + n0] ' ⊦ restn(m0, y).head ' + firstn(n, restn(m0, y).tail) = firstn(n, restn(m0, y)) + y[m0 + n] ', x = []
Used simplifier rules: x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: x, a, y