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