| ce.nxt = null, path(H[r2, ce][r].nxt ' + x0, H[r2, ce]), r ∈ H[r2, ce], (H[r2, ce][r].nxt ' + x0).last ∈ H, ∀ ce, r, H, r2. ce.nxt = null ∧ path(r ' + x0, H[r2, ce]) ∧ (r ' + x0).last ∈ H → path(r ' + x0, H) ∨ r2 ∈ H ⊦ r = null, r2 ∈ H, r ∈ H ∧ path(H[r].nxt ' + x0, H) |
⊦ r ≠ r0 → H[r0, ce][r] = H[r]
ce.nxt = null, path(H[r].nxt ' + x0, H[r2, ce]), (H[r].nxt ' + x0).last ∈ H, r ∈ H[r2, ce], ∀ ce, r, H, r2. ce.nxt = null ∧ path(r ' + x0, H[r2, ce]) ∧ (r ' + x0).last ∈ H → path(r ' + x0, H) ∨ r2 ∈ H ⊦ r = null, r = r2, r2 ∈ H, r ∈ H ∧ path(H[r].nxt ' + x0, H)
Used simplifier rules: null-not-start-of-path: ⊦ ¬ path(null ' + x, H);% ⊦ r ∈ H[r0, ce] ↔ r = r0 ∨ r ∈ H; (ws)% ⊦ H[r, ce][r] = ce; (s)%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist] Used terms: r, ce, r2, H