| ⊦ reachable(r, r0, h) ∧ (h(r0)).nxt ≠ null ∧ (h(r0)).nxt ∈ h ∧ ce.nxt = (h((h(r0)).nxt)).nxt → ( reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), (h(r0)).nxt ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), (h(r0)).nxt ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
Used simplifier rules: reach-alloc: ⊦ reachable(r, r1, h) → r1 ∈ h;
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt, ce.nxt = (h((h(r0)).nxt)).nxt ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)), reachable(r, r0, h) ∧ (h(r0)).nxt ≠ null ∧ (h(r0)).nxt ∈ h ∧ (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt ∧ ce.nxt = (h((h(r0)).nxt)).nxt
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h ⊦ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
Used terms: ce, r0, h, r
| reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt, ce.nxt = (h((h(r0)).nxt)).nxt ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) |
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h ⊦ reachable(r, (h(r0)).nxt, h(r0 := ce)) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)), reachable(r, r0, h) ∧ (h(r0)).nxt ≠ null ∧ (h(r0)).nxt ∈ h ∧ (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt ∧ ce.nxt = (h((h(r0)).nxt)).nxt |
ce.nxt = (h(ce.nxt)).nxt, ce.nxt = (h(r0)).nxt, ce.nxt ≠ null, reachable(r, r0, h), r0 ∈ h, ce.nxt ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦
| ce.nxt = (h(ce.nxt)).nxt, ce.nxt = (h(r0)).nxt, ce.nxt ≠ null, reachable(r, r0, h), r0 ∈ h, ce.nxt ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦ |
ce.nxt = (h(r0)).nxt, ce.nxt = (h(ce.nxt)).nxt, ce.nxt ≠ null, reachable(r, r0, h), reachable(r, r0, h(r0 := ce)), ce.nxt ∈ h, r0 ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦
Used simplifier rules: changenonnxt-reachable: ⊦ reachable(r, r0, h) ∧ ce.nxt = (h(r1)).nxt → (reachable(r, r0, h(r1 := ce)) ↔ true); Used formulas: reachable(r, r0, h(r0 := ce))
| ce.nxt = (h(r0)).nxt, ce.nxt = (h(ce.nxt)).nxt, ce.nxt ≠ null, reachable(r, r0, h), reachable(r, r0, h(r0 := ce)), ce.nxt ∈ h, r0 ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦ |
ce.nxt = (h(r0)).nxt, ce.nxt = (h(ce.nxt)).nxt, ce.nxt ≠ null, reachable(r, r0, h), reachable(r, r0, h(r0 := ce)), ce.nxt ∈ h, r0 ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦
Used simplifier rules: reach-alloc: ⊦ reachable(r, r1, h) → r1 ∈ h; ⊦ a ∈ st(a := d); (s)
| ce.nxt = (h(r0)).nxt, ce.nxt = (h(ce.nxt)).nxt, ce.nxt ≠ null, reachable(r, r0, h), reachable(r, r0, h(r0 := ce)), ce.nxt ∈ h, r0 ∈ h, ¬ reachable(r, ce.nxt, h(r0 := ce)) ⊦ |
⊦ reachable(r, r1, h) → (reachable(r, (h(r1)).nxt, h) ↔ ¬((h(r1)).nxt = null ∨ ¬ (h(r1)).nxt ∈ h))
Used simplifier rules: changenonnxt-reachable: ⊦ reachable(r, r0, h) ∧ ce.nxt = (h(r1)).nxt → (reachable(r, r0, h(r1 := ce)) ↔ true); endnotinH-notreachable: ⊦ ¬ r0 ∈ h → (reachable(r, r0, h) ↔ false); ⊦ st(a := d)(a) = d; (s) ⊦ a ∈ st(b := d) ↔ a = b ∨ a ∈ st; (ws) Used terms: r, r0, h(r0 := ce)
| ⊦ reachable(r, r1, h) → (reachable(r, (h(r1)).nxt, h) ↔ ¬((h(r1)).nxt = null ∨ ¬ (h(r1)).nxt ∈ h)) |
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h ⊦ (h((h(r0)).nxt)).nxt = (h(r0)).nxt ∨ r ≠ r0 ∧ r = (h(r0)).nxt ∨ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ ce.nxt = (h(r0)).nxt ∨ (h(r0)).nxt ≠ r0 ∧ r = (h(r0)).nxt ∨ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
r0 ∈ h, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt ⊦ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
Used terms: r0, h
| r0 ∈ h, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, (h(r0)).nxt ≠ (h((h(r0)).nxt)).nxt ⊦ reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) |
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, reachable((h((h(r0)).nxt)).nxt, (h(r0)).nxt, h) ∧ ¬ reachable((h((h(r0)).nxt)).nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h))
Used terms: r, r0, h
| reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) |
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ↔ reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) ⊦ ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) ∨ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x) ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0 ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0 ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, r0 ≠ r, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, ¬ r0 ∈ x, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h), reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, r0 ≠ r, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, ¬ r0 ∈ x, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, r ≠ (h(r0)).nxt, r0 ≠ r, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, ¬ r0 ∈ x ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x0. path(r ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, r ≠ (h(r0)).nxt, r0 ≠ r, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, ¬ r0 ∈ x ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x0. path(r ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h), reachable(r, r0, h), (h(r0)).nxt ∈ h, r0 ∈ h, ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x0
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ∨ path((h(r0)).nxt ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0, (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
(h(r0)).nxt = (h(r1)).nxt, ce.nxt = (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ ce.nxt, r ≠ (h(r1)).nxt, r0 ≠ r, path(r ' + x1 + (h(r1)).nxt ', h), reachable(r, r1, h), reachable(r, r0, h), (h(r1)).nxt ∈ h, r0 ∈ h, r1 ∈ h, ¬ reachable(r0, r1, h), ¬ r0 ∈ x1, path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x ∨ path((h(r1)).nxt ' + x0 + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x0 ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r1)).nxt ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r1)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
Used simplifier rules: reach-alloc: ⊦ reachable(r, r1, h) → r1 ∈ h;
| (h(r0)).nxt = (h(r1)).nxt, ce.nxt = (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ ce.nxt, r ≠ (h(r1)).nxt, r0 ≠ r, path(r ' + x1 + (h(r1)).nxt ', h), reachable(r, r1, h), reachable(r, r0, h), (h(r1)).nxt ∈ h, r0 ∈ h, r1 ∈ h, ¬ reachable(r0, r1, h), ¬ r0 ∈ x1, path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x ∨ path((h(r1)).nxt ' + x0 + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x0 ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path((h(r1)).nxt ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r1)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
Used terms: r1
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), r0 ∈ h, (h(r0)).nxt ∈ h, (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x), reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ↔ (∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) ∨ (∃ r1. reachable(r, r1, h) ∧ (h(r1)).nxt = (h(r0)).nxt ∧ ¬ reachable(r0, r1, h)) ⊦ ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x, ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x |
ce.nxt = (h((h(r0)).nxt)).nxt, (h(r1)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), reachable(r, r1, h), (h(r0)).nxt ∈ h, r0 ∈ h, r1 ∈ h, ¬ reachable(r0, r1, h), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h)
Used simplifier rules: reach-alloc: ⊦ reachable(r, r1, h) → r1 ∈ h;
| ce.nxt = (h((h(r0)).nxt)).nxt, (h(r1)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ ce.nxt, reachable(r, r0, h), reachable(r, r1, h), (h(r0)).nxt ∈ h, r0 ∈ h, r1 ∈ h, ¬ reachable(r0, r1, h), (h(r0)).nxt = r0 ∨ r ≠ (h(r0)).nxt ⊦ ∃ x. path((h(r0)).nxt ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x, reachable(ce.nxt, (h(r0)).nxt, h) ∧ ¬ reachable(ce.nxt, r0, h) |
Used terms: r1
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.