| ∃ x1, x2. x = x1 + (r2 + x2), path(r ' + x, H[r2, ce]), r ∈ H, x.last ∈ H ⊦ r2 ∈ H, r ∈ x, dups(x), reachable(r, x.last, H), ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, x.last, H) |
path(r ' + x1 + r2 ' + x0, H[r2, ce]), r ∈ H, (r2 ' + x0).last ∈ H ⊦ r2 ∈ H, r ∈ x1, r ∈ x0, r2 ∈ x1, r2 ∈ x0, dups(x1 + x0), reachable(r, (r2 ' + x0).last, H), dups(x1), dups(x0), ∃ r0. reachable(r, r0, H) ∧ H[r0].nxt = r2 ∧ H[r0].nxt ≠ null ∧ reachable(ce.nxt, (H[r0].nxt ' + x0).last, H)
Used simplifier rules: a: ⊦ ¬ dups(x0 + x1) → ¬ dups(x0) ∧ ¬ dups(x1); (forward) from specification list-dup[reflist]%f-01: ⊦ dups(x0 + r ' + x1) ↔ r ∈ x0 ∨ r ∈ x1 ∨ dups(x0 + x1); from specification list-dup[reflist]%in-rec: ⊦ r ∈ r0 ' + x0 ↔ ¬ ¬(r = r0 ∨ r ∈ x0); from specification list[reflist]%in-append: ⊦ r ∈ x0 + x1 ↔ ¬ ¬(r ∈ x0 ∨ r ∈ x1); from specification list[reflist]%lapp-01: ⊦ (x0 + r ' + x1).last = (r ' + x1).last; from specification list-last[reflist]%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist]%c: ⊦ r + x0 = r ' + x0; from specification list[reflist]