| reachable-n(H, n, r, (r ' + x1)[n]), ∃ x. path(x, H) ∧ hd x = r ∧ x .last = ((hd x) ' + x1)[n] ∧ # x = n + 1, (r ' + x1)[m] = (r ' + x1)[n], n < m, path(r ' + x1, H), m ≤ # x1, n < # x1 ⊦ n = 0, m = n, x1 = [], reachable-n(H, n, r, (r ' + x1)[n]) ∧ reachable-n(H, m, r, (r ' + x1)[n]) |
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)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ m + 1 ≤ n ↔ m < n], [CSIMPFORWARD : ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPFORWARD : ⊦ m = n + 1 ∧ n < n0 → m ≤ n0])]]