| reachable(r, r0, h), h[r0].nxt ≠ null, h[r0].nxt ∈ h, h[r0].nxt ≠ h[h[r0].nxt].nxt, ce.nxt = h[h[r0].nxt].nxt ⊦ reachable(r, h[r0].nxt, h[r0 := ce]) ↔ h[h[r0].nxt].nxt = h[r0].nxt ∨ r ≠ r0 ∧ r = h[r0].nxt ∨ (∃ x. path(r ' + x + h[r0].nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path(h[r0].nxt ' + x + h[r0].nxt ', h) ∧ ¬ r0 ∈ x) |