| (H[r].nxt ' + x0).last ∈ H, path(H[r].nxt ' + x0, H), r ∈ H, r ∈ H[r2, ce], ∀ r, H, r2, ce. path(r ' + x0, H) ∧ x0.last ∈ H → x0 = [] ∨ r2 ∈ H ∨ path(r ' + x0, H[r2, ce]) ⊦ r = null, r2 ∈ H, path(H[r].nxt ' + x0, H[r2, ce]) |
Used simplifier rules: path-one: ⊦ path(r ', H) ↔ ¬ ¬(r ∈ H ∧ r ≠ null);%app: ⊦ x0 + [] = x0; from specification list[reflist]%a: ⊦ (x0 + x1) + x2 = x0 + x1 + x2; from specification list[reflist]%l: ⊦ r '.last = r; from specification list-last[reflist]%In-insert: ⊦ r ∈ H[r0, ce] ↔ r = r0 ∨ r ∈ H; from specification store[linheap]%l-02: ⊦ x0 ≠ [] → (r ' + x0).last = x0.last; from specification list-last[reflist] Used terms: H[r].nxt, H, r2, ce