| reachable(r, (r ' + x).last, H), path(r ' + x + H[r0].nxt ', H), reachable(r, r0, H), H[r0].nxt ∈ H, r0 ∈ H ⊦ H[r0].nxt = null, r0 = r, r0 ∈ x, reachable(r, (r ' + x).last, H) ∧ ¬ reachable(r0, (r ' + x).last, H) |
reachable(r, (r ' + x).last, H), path(r ' + x + H[r0].nxt ', H), reachable(r, r0, H), H[r0].nxt ∈ H, r0 ∈ H, reachable(r0, (r ' + x).last, H), (r ' + x).last ∈ H ⊦ H[r0].nxt = null, r0 = r, r0 ∈ x
Used simplifier rules: reach-alloc: ⊦ reachable(r, r1, H) → r1 ∈ H;