| (r ' + x1)[m] = x2 .last, (r ' + x1)[# x2] = x2 .last, path(r ' + x2, H), reachable-n(H, # x2, r, x2 .last), # x2 < m, # x2 < # x1, m ≤ # x1, path(r ' + x1, H) ⊦ x1 = [], x2 = [], path(r ' + firstn(m, x1), H) ∧ (r ' + firstn(m, x1)) .last = x2 .last |
⊦ x0 ≠ [] → (r ' + x0) .last = x0 .last
firstn(m, x1) ≠ [], (r ' + x1)[m] = x2 .last, (r ' + x1)[# x2] = x2 .last, path(r ' + x2, H), reachable-n(H, # x2, r, x2 .last), # x2 < m, # x2 < # x1, m ≤ # x1, path(r ' + x1, H) ⊦ x1 = [], x2 = [], path(r ' + firstn(m, x1), H) ∧ firstn(m, x1) .last = x2 .last
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ firstn(n, x0) = [] ↔ n = 0], [CSIMPSEQ : ⊦ m < n → n ≠ 0])], [EXTRATERMS : (firstn(m, x1), r)]]