| path(r ' + x, H), (r ' + x).last ∈ H ⊦ r = (r ' + x).last, ∃ r1. reachable(r, r1, H) ∧ H[r1].nxt = (r ' + x).last ∧ H[r1].nxt ≠ null |
⊦ x0 ≠ [] → (x1 + x0).last = x0.last
x ≠ [], path(r ' + x, H), x.last ∈ H ⊦ r = x.last, ∃ r1. reachable(r, r1, H) ∧ H[r1].nxt = x.last ∧ H[r1].nxt ≠ null
Used simplifier rules: 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] Used terms: x, r '