| reachable(r, r1, H[r2, ce]), r ∈ H, r1 ∈ H ⊦ reachable(r, r1, H), r2 ∈ H, ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, r1, H) |
⊦ reachable(r, r0, H) ↔ (∃ x. path(r ' + x, H) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x))
∃ x. path(r ' + x, H[r2, ce]) ∧ (r ' + x).last = r1 ∧ ¬ dups(r ' + x), r ∈ H, r1 ∈ H ⊦ reachable(r, r1, H), r2 ∈ H, ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, r1, H)
Used terms: H[r2, ce], r1, r