| ∀ r. r ∈ H → ¬ reachable(H[r].nxt, r, H), reachable(r, r0, H), H[r0].nxt ≠ null, H[r0].nxt ∈ H, ce.nxt = H[H[r0].nxt].nxt ⊦ ¬ reachable(r, H[r0].nxt, H[r0, ce]) |
ce.nxt = H[H[r0].nxt].nxt, reachable(r, H[r0].nxt, H[r0, ce]), reachable(r, r0, H), H[r0].nxt ∈ H, H[r0].nxt ∈ H[r0, ce], r0 ∈ H, ∀ r1. ¬ reachable(H[r1].nxt, r1, H) ⊦ H[r0].nxt = null
Used simplifier rules: reachable-notnullinH: ⊦ reachable(r, r1, H) → (¬ r1 ∈ H ↔ false);%reach-alloc: ⊦ reachable(r, r1, H) → r1 ∈ H;