| (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]), ∃ 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]), path(firstn(n + 1, r ' + x1), H) ∧ hd firstn(n + 1, r ' + x1) = r ∧ firstn(n + 1, r ' + x1) .last = ((hd firstn(n + 1, r ' + x1)) ' + x1)[n] ∧ # firstn(n + 1, r ' + x1) = n + 1
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (firstn(n + 1, r ' + x1))]]