| path(r ' + x, H[r2, ce]), (r ' + x).last ∈ H, r ∈ H, r2 ∈ x ⊦ dups(x), reachable(r, (r ' + x).last, H), r ∈ x, r2 ∈ H, ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, (r ' + x).last, H) |
path(r ' + x, H[r2, ce]), r2 ∈ x, r ∈ H, x.last ∈ H ⊦ dups(x), reachable(r, x.last, H), r2 ∈ H, r ∈ x, ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, x.last, H)
Used simplifier rules: a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist]% ⊦ r ∈ x0 → (r0 ' + x0).last = x0.last; (s)