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