| H[r2].nxt ' + r0 ' + y = x + r2 ', (x0.last ' + x).last = x0.last, x0.last ∈ H, path(r ' + x2 + x0.last ' + x, H), path(r ' + (x2 + x0.last ') + H[r2].nxt ', H), path(r ' + (x2 + x0.last ' + x) + r2 ', H), H[r2].nxt ∈ H, r2 ∈ H, path(r2 ' + x0, H), H[r2].nxt ∈ x ∨ H[r2].nxt = r2, r2 = H[r2].nxt ∨ r2 = r0 ∨ r2 ∈ y ⊦ r2 = x0.last, r = r2, H[r2].nxt = null, r = x0.last, x0 = [], r2 ∈ x2, r2 ∈ x0, dups(x0), r ∈ x2, r ∈ x, r2 ∈ x, x0.last ∈ x2, x0.last ∈ x, dups(x2 + x), dups(x2), dups(x) |
Used simplifier rules: e-01: ⊦ r ' + x0 ≠ []; from specification list[reflist]%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist]%ni: ⊦ x0 + r ' = x1 + x2 ∧ ¬ r ∈ x2 → x2 = []; (forward) from specification list[reflist]%in-14: ⊦ r ' + x0 = x1 → r ∈ x1; (forward) from specification list[reflist]%in-15: ⊦ x0 + r ' = x1 → r ∈ x1; (forward) from specification list[reflist]%Nil: ⊦ [] + x0 = x0; from specification list[reflist]%c-03: ⊦ r ' = r0 ' + x0 ↔ r = r0 ∧ x0 = []; from specification list[reflist]%app-02-ant: ⊦ ¬ x0 + x1 ≠ [] ↔ x0 = [] ∧ x1 = []; from specification list[reflist]%e: ⊦ r ' ≠ []; from specification list[reflist]%x0 ≠ [] ⊦ r = x0.last ∧ x1 = x0.butlast ↔ x0 = x1 + r '; (elim) Used terms: x0.last ' + x, r1, x1