| # x2 = n + 1, # x1 = n + 1, (H[r].nxt ' + x1).last = x2.last, path(H[r].nxt ' + x2, H), path(H[r].nxt ' + x1, H), reachable-1(H, H[r].nxt, r0), reachable-n(H, n, r0, x2.last), r ∈ H ⊦ r = null, x2 = [], (r ≠ null ∧ H[r].nxt ≠ null ∧ r ∈ H ∧ H[r].nxt ∈ H ∧ H[r].nxt = H[r].nxt) ∧ (∃ r1. reachable-1(H, H[r].nxt, r1) ∧ reachable-n(H, n, r1, x2.last)) |
# x1 = n + 1, # x2 = n + 1, (H[r].nxt ' + x1).last = x2.last, path(H[r].nxt ' + x1, H), path(H[r].nxt ' + x2, H), reachable-1(H, H[r].nxt, r0), reachable-n(H, n, r0, x2.last), r ∈ H ⊦ r = null, x2 = [], H[r].nxt ≠ null ∧ (∃ r1. reachable-1(H, H[r].nxt, r1) ∧ reachable-n(H, n, r1, x2.last))
Used simplifier rules: path-first-in-H: ⊦ path(r ' + x, H) → (r ∈ H ↔ true);%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist]