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