| r = r0 ∨ ce.nxt ≠ null ∧ ce.nxt ∈ H ∧ reachable(ce.nxt, r0, H[r, ce]) ⊦ reachable(r, r0, H[r, ce]), ce.nxt = r, r = null |
reachable(ce.nxt, r0, H[r, ce]), ce.nxt ∈ H, r0 ∈ H ⊦ ce.nxt = null, r = r0, r = null, reachable(r, r0, H[r, ce])
Used simplifier rules: self-reachable: ⊦ reachable(r, r, H) ↔ ¬ ¬(r ≠ null ∧ r ∈ H);%reach-alloc: ⊦ reachable(r, r1, H) → r1 ∈ H;%in-neq: ⊦ r ≠ r0 → (r ∈ H[r0, ce] ↔ r ∈ H); from specification store[linheap]%insin: ⊦ r ∈ H[r, ce]; from specification store[linheap]