| reachable-1(H, r1, r0), reachable-1(H, r, r1), ∀ H0, r4, r5. reachable-1(H0, r4, r5) ↔ (∃ x. path(x, H0) ∧ hd x = r4 ∧ x.last = r5 ∧ # x = 2) ⊦ r ∈ H ∧ r ≠ null ∧ H[r].nxt = r1 ∧ H[r].nxt ∈ H ∧ H[H[r].nxt].nxt ∈ H ∧ H[r].nxt ≠ null ∧ H[H[r].nxt].nxt ≠ null ∧ H[H[r].nxt].nxt = r0 |
⊦ reachable-1(H, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ H ∧ r0 ∈ H ∧ H[r].nxt = r0
reachable-1(H, r1, r0), r ≠ null ∧ r1 ≠ null ∧ r ∈ H ∧ r1 ∈ H ∧ H[r].nxt = r1, ∀ H0, r4, r5. reachable-1(H0, r4, r5) ↔ (∃ x. path(x, H0) ∧ hd x = r4 ∧ x.last = r5 ∧ # x = 2) ⊦ r ∈ H ∧ r ≠ null ∧ H[r].nxt = r1 ∧ H[r].nxt ∈ H ∧ H[H[r].nxt].nxt ∈ H ∧ H[r].nxt ≠ null ∧ H[H[r].nxt].nxt ≠ null ∧ H[H[r].nxt].nxt = r0
Used terms: r1, r, H