| (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 = [], reachable-n(H, m, r, x2 .last) |
⊦ n ≠ 0 → (reachable-n(H, n, r, r0) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x .last = r0 ∧ # x = n + 1))
m ≠ 0, (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 = [], ∃ x. path(x, H) ∧ hd x = r ∧ x .last = x2 .last ∧ # x = m + 1
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (r ' + x0)[0] = r], [CSIMPSEQ : ⊦ (x0 + x1) + x2 = x0 + x1 + x2], [CSIMPSEQ : ⊦ ¬ m < 0])], [EXTRATERMS : (x2 .last, r, m, H)]]