| x1 + r ' = (x0 + H[r].nxt ') + r1 ' + x, path(H[H[r].nxt].nxt ' + x0 + H[r].nxt ', H), path(H[H[r].nxt].nxt ' + x1 + r ', H), r ∈ H, H[r].nxt ∈ H, r = H[r].nxt ∨ r = r1 ∨ r ∈ x ⊦ H[r].nxt = H[H[r].nxt].nxt, H[r].nxt = null, r = H[H[r].nxt].nxt, dups(x1), r ∈ x1, H[H[r].nxt].nxt ∈ x1, r ∈ x0 |
x0 ≠ [] ⊦ x1 + r ' = x0 ↔ x1 = x0.butlast ∧ r = x0.last
r = ((x0 + H[r].nxt ') + r1 ' + x).last, x1 = ((x0 + H[r].nxt ') + r1 ' + x).butlast, path(H[H[r].nxt].nxt ' + x1 + r ', H), path(H[H[r].nxt].nxt ' + x0 + H[r].nxt ', H), H[r].nxt ∈ H, r ∈ H, r = H[r].nxt ∨ r = r1 ∨ r ∈ x ⊦ (x0 + H[r].nxt ') + r1 ' + x = [], H[r].nxt = null, H[r].nxt = H[H[r].nxt].nxt, r = H[H[r].nxt].nxt, dups(x1), r ∈ x0, H[H[r].nxt].nxt ∈ x1, r ∈ x1
Used simplifier rules: ⊦ x0 + x1 = [] ↔ x0 = [] ∧ x1 = []; (as)% ⊦ r ' + x0 ≠ []; (s)%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist] Used terms: (x0 + H[r].nxt ') + r1 ' + x, r, x1