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