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