| x1 + r ' = (x0 + H[r].nxt ') + r1 ' + x, r ∈ H, H[r].nxt ∈ H, path(H[H[r].nxt].nxt ' + x0 + H[r].nxt ', H), path(H[H[r].nxt].nxt ' + x1 + r ', 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
(x0 + H[r].nxt ') + r1 ' + x ≠ [], x1 = ((x0 + H[r].nxt ') + r1 ' + x).butlast ∧ r = ((x0 + H[r].nxt ') + r1 ' + x).last, r ∈ H, H[r].nxt ∈ H, path(H[H[r].nxt].nxt ' + x0 + H[r].nxt ', H), path(H[H[r].nxt].nxt ' + x1 + r ', 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
Used simplifier rules: app-02-ant: ⊦ ¬ x0 + x1 ≠ [] ↔ x0 = [] ∧ x1 = []; from specification list[reflist]%e-01: ⊦ r ' + x0 ≠ []; from specification list[reflist]%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist] Used terms: (x0 + H[r].nxt ') + r1 ' + x, r, x1