| ⊦ reachable(r, r0, H(r1 := ce)) ∧ ce.nxt = (H((H(r1)).nxt)).nxt ∧ r0 ≠ (H(r1)).nxt ∧ (H(r1)).nxt ∈ H ∧ (H(r1)).nxt ≠ null ∧ r1 ≠ null ∧ r1 ∈ H → (reachable(r, r0, H) ↔ true) |
ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, ¬(reachable(r, r0, H) ↔ true), r0 ≠ (H(r1)).nxt, r1 ≠ null, reachable(r, r0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H ⊦
| ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, ¬(reachable(r, r0, H) ↔ true), r0 ≠ (H(r1)).nxt, r1 ≠ null, reachable(r, r0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, r0 ≠ (H(r1)).nxt, r1 ≠ null, reachable(r, r0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, r0, H) ⊦
| ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, r0 ≠ (H(r1)).nxt, r1 ≠ null, reachable(r, r0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, r0, H) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, r0 ≠ (H(r1)).nxt, r1 ≠ null, (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, r0, H), ∃ x. path(r ' + x, H(r1 := ce)) ∧ (r ' + x).last = r0 ⊦
Used terms: H(r1 := ce), r0, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| ce.nxt = (H((H(r1)).nxt)).nxt, (H(r1)).nxt ≠ null, r0 ≠ (H(r1)).nxt, r1 ≠ null, (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, r0, H), ∃ x. path(r ' + x, H(r1 := ce)) ∧ (r ' + x).last = r0 ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, (r ' + x).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(r ' + x, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, (r ' + x).last, H) ⊦
| ce.nxt = (H((H(r1)).nxt)).nxt, (r ' + x).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(r ' + x, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, (r ' + x).last, H) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, (r ' + (r0 + x0)).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(r ' + (r0 + x0), H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, (r ' + (r0 + x0)).last, H), ∀ ce, H, r1, r. ¬ ( ce.nxt = (H((H(r1)).nxt)).nxt ∧ (r ' + x0).last ≠ (H(r1)).nxt ∧ (H(r1)).nxt ≠ null ∧ r1 ≠ null ∧ path(r ' + x0, H(r1 := ce)) ∧ r1 ∈ H ∧ (H(r1)).nxt ∈ H ∧ ¬ reachable(r, (r ' + x0).last, H)) ⊦
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; self-reachable: ⊦ reachable(r, r, h) ↔ r ≠ null ∧ r ∈ h; Reflist freely generated by [], +; ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) ⊦ a ∈ st(b := d) ↔ a = b ∨ a ∈ st; (ws)
| ce.nxt = (H((H(r1)).nxt)).nxt, (r ' + (r0 + x0)).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(r ' + (r0 + x0), H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, (r ' + (r0 + x0)).last, H), ∀ ce, H, r1, r. ¬ ( ce.nxt = (H((H(r1)).nxt)).nxt ∧ (r ' + x0).last ≠ (H(r1)).nxt ∧ (H(r1)).nxt ≠ null ∧ r1 ≠ null ∧ path(r ' + x0, H(r1 := ce)) ∧ r1 ∈ H ∧ (H(r1)).nxt ∈ H ∧ ¬ reachable(r, (r ' + x0).last, H)) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), r ∈ H(r1 := ce), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H), ∀ ce0, H0, r2, r3. ce0.nxt ≠ (H0((H0(r2)).nxt)).nxt ∨ (r3 ' + x0).last = (H0(r2)).nxt ∨ (H0(r2)).nxt = null ∨ r2 = null ∨ ¬ path(r3 ' + x0, H0(r2 := ce0)) ∨ ¬ r2 ∈ H0 ∨ ¬ (H0(r2)).nxt ∈ H0 ∨ reachable(r3, (r3 ' + x0).last, H0) ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ (b ' + a ' + x).last = (a ' + x).last; (s) ⊦ a + x = a ' + x; (s)
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), r ∈ H(r1 := ce), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H), ∀ ce0, H0, r2, r3. ce0.nxt ≠ (H0((H0(r2)).nxt)).nxt ∨ (r3 ' + x0).last = (H0(r2)).nxt ∨ (H0(r2)).nxt = null ∨ r2 = null ∨ ¬ path(r3 ' + x0, H0(r2 := ce0)) ∨ ¬ r2 ∈ H0 ∨ ¬ (H0(r2)).nxt ∈ H0 ∨ reachable(r3, (r3 ' + x0).last, H0) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H), ce.nxt ≠ (H((H(r1)).nxt)).nxt ∨ ((H(r1 := ce)(r)).nxt ' + x0).last = (H(r1)).nxt ∨ (H(r1)).nxt = null ∨ r1 = null ∨ ¬ path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)) ∨ ¬ r1 ∈ H ∨ ¬ (H(r1)).nxt ∈ H ∨ reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦
Used terms: ce, H, r1, (H(r1 := ce)(r)).nxt
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H), ce.nxt ≠ (H((H(r1)).nxt)).nxt ∨ ((H(r1 := ce)(r)).nxt ' + x0).last = (H(r1)).nxt ∨ (H(r1)).nxt = null ∨ r1 = null ∨ ¬ path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)) ∨ ¬ r1 ∈ H ∨ ¬ (H(r1)).nxt ∈ H ∨ reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H), r ∈ H(r1 := ce), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H), r ∈ H(r1 := ce), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦ |
⊦ a ≠ b → st(b := d)(a) = st(a)
ce.nxt = (H((H(r1)).nxt)).nxt, r = r1, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r)).nxt, ((H(r)).nxt ' + x0).last, H), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦
Used terms: r, ce, r1, H
| ⊦ a ≠ b → st(b := d)(a) = st(a) |
| ce.nxt = (H((H(r1)).nxt)).nxt, r = r1, ((H(r1 := ce)(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ null, r1 ≠ null, path((H(r1 := ce)(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r1 := ce)(r)).nxt, ((H(r1 := ce)(r)).nxt ' + x0).last, H), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r1 := ce)(r)).nxt ' + x0).last, H) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), reachable(ce.nxt, (ce.nxt ' + x0).last, H), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H) ⊦
Used simplifier rules: ⊦ st(a := d)(a) = d; (s) ⊦ a ∈ st(a := d); (s)
| ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), reachable(ce.nxt, (ce.nxt ' + x0).last, H), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H), ∃ x. path(ce.nxt ' + x, H) ∧ (ce.nxt ' + x).last = (ce.nxt ' + x0).last ⊦
Used terms: H, (ce.nxt ' + x0).last, ce.nxt
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H), ∃ x. path(ce.nxt ' + x, H) ∧ (ce.nxt ' + x).last = (ce.nxt ' + x0).last ⊦ |
(ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x, H), path(ce.nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H) ⊦
| (ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x, H), path(ce.nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ¬ reachable(r1, (ce.nxt ' + x0).last, H) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
(ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), path(ce.nxt ' + x, H), r1 ∈ H, (H(r1)).nxt ∈ H, ∀ x. ¬(path(r1 ' + x, H) ∧ (r1 ' + x).last = (ce.nxt ' + x0).last) ⊦
Used terms: H, (ce.nxt ' + x0).last, r1
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| (ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x0, H(r1 := ce)), path(ce.nxt ' + x, H), r1 ∈ H, (H(r1)).nxt ∈ H, ∀ x. ¬(path(r1 ' + x, H) ∧ (r1 ' + x).last = (ce.nxt ' + x0).last) ⊦ |
(ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x, H), path(ce.nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ∀ x1. ¬ path(r1 ' + x1, H) ∨ (r1 ' + x1).last ≠ (ce.nxt ' + x0).last ⊦
| (ce.nxt ' + x).last = (ce.nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, (ce.nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r1 ≠ null, path(ce.nxt ' + x, H), path(ce.nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, ∀ x1. ¬ path(r1 ' + x1, H) ∨ (r1 ' + x1).last ≠ (ce.nxt ' + x0).last ⊦ |
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); ⊦ (a ' + x + b ' + y).last = (b ' + y).last; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: (H(r1)).nxt ' + (H((H(r1)).nxt)).nxt ' + x
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r)).nxt, ((H(r)).nxt ' + x0).last, H), r1 ∈ H, (H(r1)).nxt ∈ H, r ∈ H(r1 := ce), ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦ |
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r)).nxt, ((H(r)).nxt ' + x0).last, H), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦
Used simplifier rules: ⊦ a ∈ st(b := d) ↔ a = b ∨ a ∈ st; (ws)
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), reachable((H(r)).nxt, ((H(r)).nxt ' + x0).last, H), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), r ∈ H, r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H), ∃ x. path((H(r)).nxt ' + x, H) ∧ ((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last ⊦
Used terms: H, ((H(r)).nxt ' + x0).last, (H(r)).nxt
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), r ∈ H, r1 ∈ H, (H(r1)).nxt ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H), ∃ x. path((H(r)).nxt ' + x, H) ∧ ((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last ⊦ |
((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x, H), path((H(r)).nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦
| ((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x, H), path((H(r)).nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ¬ reachable(r, ((H(r)).nxt ' + x0).last, H) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), path((H(r)).nxt ' + x, H), r ∈ H, r1 ∈ H, (H(r1)).nxt ∈ H, ∀ x. ¬(path(r ' + x, H) ∧ (r ' + x).last = ((H(r)).nxt ' + x0).last) ⊦
Used terms: H, ((H(r)).nxt ' + x0).last, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| ((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x0, H(r1 := ce)), path((H(r)).nxt ' + x, H), r ∈ H, r1 ∈ H, (H(r1)).nxt ∈ H, ∀ x. ¬(path(r ' + x, H) ∧ (r ' + x).last = ((H(r)).nxt ' + x0).last) ⊦ |
((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x, H), path((H(r)).nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ∀ x1. ¬ path(r ' + x1, H) ∨ (r ' + x1).last ≠ ((H(r)).nxt ' + x0).last ⊦
| ((H(r)).nxt ' + x).last = ((H(r)).nxt ' + x0).last, ce.nxt = (H((H(r1)).nxt)).nxt, ((H(r)).nxt ' + x0).last ≠ (H(r1)).nxt, (H(r1)).nxt ≠ null, r ≠ r1, r ≠ null, r1 ≠ null, path((H(r)).nxt ' + x, H), path((H(r)).nxt ' + x0, H(r1 := ce)), (H(r1)).nxt ∈ H, r1 ∈ H, r ∈ H, ∀ x1. ¬ path(r ' + x1, H) ∨ (r ' + x1).last ≠ ((H(r)).nxt ' + x0).last ⊦ |
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); ⊦ (b ' + a ' + x).last = (a ' + x).last; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: (H(r)).nxt ' + x
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.