| x .last = ((hd x) ' + x1)[n], # x = n + 1, ((hd x) ' + x1)[m] = x .last, reachable-n(H, n, hd x, x .last), path(x, H), path((hd x) ' + x1, H), m ≤ # x1, n < # x1, n < m ⊦ n = 0, x1 = [], reachable-n(H, m, hd x, x .last) |
x = r + x2 ∧ x ≠ [], x .last = (r ' + x1)[n], # x = n + 1, (r ' + x1)[m] = x .last, reachable-n(H, n, r, x .last), path(x, H), path(r ' + x1, H), m ≤ # x1, n < # x1, n < m ⊦ n = 0, x1 = [], reachable-n(H, m, r, x .last)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # [] = 0], [CSIMPSEQ : ⊦ m + 1 ≠ 0], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPELIM : x0 ≠ [] ⊦ r = hd x0 ∧ x1 = tl x0 ↔ x0 = r + x1])], [EXTRATERMS : (x, r, x0)]]