| ce.nxt = H[x.last].nxt, x.last = H[r0].nxt, path(r ' + x, H[r0, ce]), reachable(r, r0, H), x.last ∈ H, x.last ∈ H[r0, ce], r0 ∈ H, ∀ r1. ¬ reachable(H[r1].nxt, r1, H) ⊦ x.last = null, x = [], r ∈ x, dups(x) |
x = x1 + r2 ', ce.nxt = H[r2].nxt, r2 = H[r0].nxt, path(r ' + x, H[r0, ce]), reachable(r, r0, H), r2 ∈ H, r2 ∈ H[r0, ce], r0 ∈ H, ∀ r1. ¬ reachable(H[r1].nxt, r1, H) ⊦ r2 = null, x = [], r ∈ x, dups(x)
Used simplifier rules: x0 ≠ [] ⊦ r = x0.last ∧ x1 = x0.butlast ↔ x0 = x1 + r '; (elim) Used terms: x, r2, x0