| # x2 = n + 1, (∃ r3. reachable-1(H, H[r].nxt, r3) ∧ reachable-n(H, n, r3, x2.last)) ↔ (∃ x. path(x, H) ∧ hd x = H[r].nxt ∧ x.last = x2.last ∧ # x = 2 + n), path(H[r].nxt ' + x2, H), r ∈ H ⊦ r = null, x2 = [], ∃ r0. reachable-1(H, r, r0) ∧ (∃ r1. reachable-1(H, r0, r1) ∧ reachable-n(H, n, r1, x2.last)) |
# x2 = n + 1, path(H[r].nxt ' + x2, H), r ∈ H ⊦ r = null, x2 = [], ∃ r0. reachable-1(H, r, r0) ∧ (∃ r1. reachable-1(H, r0, r1) ∧ reachable-n(H, n, r1, x2.last)), ∃ x. path(x, H) ∧ hd x = H[r].nxt ∧ x.last = x2.last ∧ # x = 2 + n, ∃ r3. reachable-1(H, H[r].nxt, r3) ∧ reachable-n(H, n, r3, x2.last)
# x2 = n + 1, path(H[r].nxt ' + x2, H), r ∈ H, ∃ x. path(x, H) ∧ hd x = H[r].nxt ∧ x.last = x2.last ∧ # x = 2 + n, ∃ r3. reachable-1(H, H[r].nxt, r3) ∧ reachable-n(H, n, r3, x2.last) ⊦ r = null, x2 = [], ∃ r0. reachable-1(H, r, r0) ∧ (∃ r1. reachable-1(H, r0, r1) ∧ reachable-n(H, n, r1, x2.last))