| ⊦ reachable(r, r0, H) ↔ (∃ r1. reachable(r, r1, H) ∧ H[r1].nxt = r0 ∧ H[r1].nxt ∈ H ∧ H[r1].nxt ≠ null), r = r0 |
reachable(r, r0, H) ⊦ r = r0, ∃ r1. reachable(r, r1, H) ∧ H[r1].nxt = r0 ∧ H[r1].nxt ∈ H ∧ H[r1].nxt ≠ null
Used simplifier rules: reach-reachnext: ⊦ reachable(r, r1, H) → ( reachable(r, H[r1].nxt, H) ↔ ¬(H[r1].nxt = null ∨ ¬ H[r1].nxt ∈ H));